Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
79 changes: 79 additions & 0 deletions .github/workflows/check.build.docs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
name: Check Build Documentation Site

on:
pull_request:

paths:
- "docs/website-src/**"
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could we just have docs/ be the root? there is almost nothing in there and the stuff in docs/assets/ will be useful for the site anyway

Suggested change
- "docs/website-src/**"
- "docs/**"

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We probably could - I was following the deployment system for the original docs page, and trying to fit the logic into our filesystem. But, I must admit, I have followed the workflow by rote, rather than considering if we need every step.

In the deployment workflow we have these steps:

      - name: Copy built files to docs
        run: |
          rm -rf docs/website/*
          cp -r docs/website-src/out docs/website

      - name: Upload artifact
        uses: actions/upload-pages-artifact@v3
        with:
          path: docs/website

If we move to using docs rather than docs/website as the root, then perhaps we could get rid of the copy step, and upload directly from the docs/website/out (or, as it would be, docs/out) path?

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yeah, that makes sense to me


workflow_dispatch:

concurrency:
group: "pages"
cancel-in-progress: false

jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4

- name: LikeC4 code generation
uses: likec4/actions@v1
with:
codegen: react
path: docs/website-src/likec4_src
output: docs/website-src/likec4_react/likec4.generated.js

- name: LikeC4 PNG export
uses: likec4/actions@v1
with:
export: png
path: docs/website-src/likec4_src
output: docs/website-src/public/images/likec4

- name: Detect package manager
id: detect-package-manager
run: |
if [ -f "docs/website-src/yarn.lock" ]; then
echo "manager=yarn" >> $GITHUB_OUTPUT
echo "command=install" >> $GITHUB_OUTPUT
echo "runner=yarn" >> $GITHUB_OUTPUT
exit 0
elif [ -f "docs/website-src/package.json" ]; then
echo "manager=npm" >> $GITHUB_OUTPUT
echo "command=ci" >> $GITHUB_OUTPUT
echo "runner=npx --no-install" >> $GITHUB_OUTPUT
exit 0
else
echo "Unable to determine package manager"
exit 1
fi

- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: "20"

- name: Restore cache
uses: actions/cache@v4
with:
path: |
docs/website-src/.next/cache
key: ${{ runner.os }}-nextjs-${{ hashFiles('**/package-lock.json', '**/yarn.lock') }}-${{ hashFiles('**.[jt]s', '**.[jt]sx') }}
restore-keys: |
${{ runner.os }}-nextjs-${{ hashFiles('**/package-lock.json', '**/yarn.lock') }}-

- name: Install dependencies
run: ${{ steps.detect-package-manager.outputs.manager }} ${{ steps.detect-package-manager.outputs.command }}
working-directory: docs/website-src

- name: Build with Next.js
run: ${{ steps.detect-package-manager.outputs.runner }} next build
working-directory: docs/website-src

- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: docs/website-src/out
104 changes: 104 additions & 0 deletions .github/workflows/deploy.docs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
name: Deploy Documentation Site to GitHub Pages

on:
push:
branches:
- documentation

paths:
- "docs/website-src/**"

workflow_dispatch:

permissions:
contents: read
pages: write
id-token: write

concurrency:
group: "pages"
cancel-in-progress: false

jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4

- name: LikeC4 code generation
uses: likec4/actions@v1
with:
codegen: react
path: docs/website-src/likec4_src
output: docs/website-src/likec4_react/likec4.generated.js

- name: LikeC4 PNG export
uses: likec4/actions@v1
with:
export: png
path: docs/website-src/likec4_src
output: docs/website-src/public/images/likec4

- name: Detect package manager
id: detect-package-manager
run: |
if [ -f "docs/website-src/yarn.lock" ]; then
echo "manager=yarn" >> $GITHUB_OUTPUT
echo "command=install" >> $GITHUB_OUTPUT
echo "runner=yarn" >> $GITHUB_OUTPUT
exit 0
elif [ -f "docs/website-src/package.json" ]; then
echo "manager=npm" >> $GITHUB_OUTPUT
echo "command=ci" >> $GITHUB_OUTPUT
echo "runner=npx --no-install" >> $GITHUB_OUTPUT
exit 0
else
echo "Unable to determine package manager"
exit 1
fi

- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: "20"

- name: Setup Pages
uses: actions/configure-pages@v5

- name: Restore cache
uses: actions/cache@v4
with:
path: |
.next/cache
key: ${{ runner.os }}-nextjs-${{ hashFiles('**/package-lock.json', '**/yarn.lock') }}-${{ hashFiles('**.[jt]s', '**.[jt]sx') }}
restore-keys: |
${{ runner.os }}-nextjs-${{ hashFiles('**/package-lock.json', '**/yarn.lock') }}-

- name: Install dependencies
run: ${{ steps.detect-package-manager.outputs.manager }} ${{ steps.detect-package-manager.outputs.command }}
working-directory: website

- name: Build with Next.js
run: ${{ steps.detect-package-manager.outputs.runner }} next build
working-directory: website

- name: Copy built files to docs
run: |
rm -rf docs/website/*
cp -r docs/website-src/out docs/website

- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: docs/website
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
needs: build
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
5 changes: 5 additions & 0 deletions .github/workflows/test_docker.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,11 @@ name: Integration Tests
on:
pull_request:
branches: [ develop ]
paths:
- "app/**"
- "tests/**"

workflow_dispatch:

jobs:
test:
Expand Down
5 changes: 5 additions & 0 deletions .github/workflows/unit_tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,11 @@ name: Unit Tests
on:
pull_request:
branches: [ develop ]
paths:
- "app/**"
- "tests/**"

workflow_dispatch:

jobs:
test:
Expand Down
18 changes: 18 additions & 0 deletions docs/website-src/likec4_src/README.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@

## Build commands

`npx likec4 codegen react --no-use-dot -o ../likec4_react/likec4.generated.js`

Note that `--no-use-dot` is needed for general containers which aren't the likec4 dedicated container.


## Index image generation

This uses a headless browser session, so the dependencies for playwright have to be installed first
`npx playwright install`
`npx playwright install-deps`

Then run the export command
`npx likec4 export png --no-use-dot`
Copy the index figure into the public images directory
`cp index.png ../public/images/likec4_index.png`
45 changes: 45 additions & 0 deletions docs/website-src/likec4_src/context.c4
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
model {
// ---------------------------------------------------------------------------
// Actors

researcher = external_actor {
title 'Researcher'
description 'Researcher who wishes to perform analyses on protected data'

-> ro-crate_service.ro-crate_service 'Submits tasks via'
-> tre.tre_app 'Submits tasks via'
}

// ----------------------------------------------------------------------------
// Systems

ro-crate_validator = system {
title 'RO-Crate Validator'
description 'System for validating RO-Crates'
technology '[Docker Compose stack]'
}

tre = system {
title 'TRE Stack'
description 'TRE stack'
}

// ----------------------------------------------------------------------------
// External Systems

ro-crate_service = system {
title 'RO-Crate Service'
description 'Service for submitting RO-Crate packaged work'
technology '[Python package]'
}

}

views {
view index {
title 'RO-Crate Validation Service - Context'
description 'Top level diagram'
include *
exclude ro-crate_service
}
}
17 changes: 17 additions & 0 deletions docs/website-src/likec4_src/ro-crate_service/ro-crate_service.c4
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
model {
extend ro-crate_service {
ro-crate_service = service {
title 'RO-Crate Service'
description 'Service for submitting work via RO-Crates'

-> tre.sub_ui 'Submits tasks via'
-> ro-crate_validator.validator_api 'Validates RO-Crates via'
}
}

views {
view ro-crate_service of ro-crate_service {
title 'RO-Crate Service'
include *
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
model {
extend ro-crate_validator {
validator_api = service {
title 'RO-Crate Validator API'
description 'API for validating RO-Crates'

-> redis 'Submits validation tasks to'
}

celery_worker = component {
title 'Celery Worker'
description 'Processes validation tasks'
icon https://github.com/celery/celery/blob/main/docs/images/celery_128.png?raw=true

-> redis 'Receives validation tasks from'
-> tre.minio 'Fetches RO-Crate data from'
-> tre.minio 'Stores validation results in'
-> validator_api 'Sends validation results to'
}

redis = component {
title 'Redis'
description 'In-memory data structure store'
icon tech:redis
}
}
}

views {
view ro-crate_validator of ro-crate_validator {
title 'RO-Crate Validator Service'
include *
}
}
50 changes: 50 additions & 0 deletions docs/website-src/likec4_src/specs.c4
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
specification {
element external_actor {
style {
shape person
color red
}
}
element internal_actor {
style {
shape person
color green
}
}

color orange rgba(255, 153, 0, 100%)
element database {
style {
shape storage
color orange
multiple true
}
}

color system-colour rgba(35, 67, 99, 100%)
element system {
style {
color system-colour
}
}

color service-colour rgba(0, 100, 150, 100%)
element service {
style {
color service-colour
}
}

color component-colour rgba(0, 0, 0, 100%)
element component {
style {
color component-colour
}
}

deploymentNode environment

deploymentNode vm {
notation 'Virtual Machine'
}
}
Loading
Loading