Fixes #325 #493
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--- | |
name: Update Documentation | |
# Triggers the workflow on push or pull request events | |
on: | |
workflow_dispatch: | |
push: | |
branches: [main] | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
cancel-in-progress: true | |
jobs: | |
documentation: | |
runs-on: ubuntu-latest | |
name: Test documentation and generate openapi html documentation | |
permissions: | |
contents: write | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
ref: ${{ github.head_ref }} | |
- name: lint markdown files | |
uses: nosborn/[email protected] | |
with: | |
files: . | |
- name: lint yaml files | |
uses: ibiqlik/action-yamllint@v2 | |
# Check for changes in the server component of the Archimate model | |
- uses: dorny/paths-filter@v2 | |
id: changes | |
with: | |
filters: | | |
archi: | |
- 'docs/invite.archimate' | |
server: | |
- 'server/src/**' | |
# Generate the OpenApi spec json, only if the server component has changes | |
- name: Set up JDK 21 | |
uses: actions/setup-java@v2 | |
with: | |
java-version: '21' | |
distribution: 'adopt' | |
cache: 'maven' | |
if: ${{ steps.changes.outputs.server == 'true' || github.event_name == 'workflow_dispatch' }} | |
- name: Set up MySQL | |
uses: shogo82148/actions-setup-mysql@v1 | |
with: | |
mysql-version: '8.0' | |
if: ${{ steps.changes.outputs.server == 'true' || github.event_name == 'workflow_dispatch' }} | |
- name: Prepare database | |
run: | | |
mysql -uroot -h127.0.0.1 -e \ | |
"CREATE DATABASE invite CHARACTER SET utf8mb4 \ | |
COLLATE utf8mb4_0900_ai_ci;" | |
mysql -uroot -h127.0.0.1 -e \ | |
"CREATE USER 'invite'@'localhost' IDENTIFIED BY 'secret';"; | |
mysql -uroot -h127.0.0.1 -e \ | |
"GRANT ALL privileges ON invite.* TO 'invite'@'localhost';" | |
if: ${{ steps.changes.outputs.server == 'true' || github.event_name == 'workflow_dispatch' }} | |
- name: Generate openapi.json | |
run: | | |
cd server | |
mvn spring-boot:run & | |
sleep 120 && curl -q http://localhost:8888/ui/api-docs -o ./target/openapi.json | |
pkill -f java | |
if: ${{ steps.changes.outputs.server == 'true' || github.event_name == 'workflow_dispatch' }} | |
- name: Test api-specs with redoc-cli | |
uses: seeebiii/redoc-cli-github-action@v10 | |
with: | |
args: 'bundle server/target/openapi.json -t template.hbs -o docs/api/index.html' | |
if: ${{ steps.changes.outputs.server == 'true' || github.event_name == 'workflow_dispatch' }} | |
- name: check result | |
run: | | |
ls -al docs/api/ | |
test -f docs/api/index.html || (echo "Missing docs/api/index.html from previous step." && exit 1) | |
if: ${{ steps.changes.outputs.server == 'true' || github.event_name == 'workflow_dispatch' }} | |
- name: Commit files if the OpenAPI html has changed | |
run: | | |
git config user.name github-actions | |
git config user.email [email protected] | |
git add docs/api/index.html | |
git diff-index --quiet HEAD || git commit -m "Update github page" | |
if: ${{ steps.changes.outputs.server == 'true' || github.event_name == 'workflow_dispatch' }} | |
continue-on-error: true | |
# Generate a HTML page for the archmate model, only if the model has changed | |
- name: Download Archi | |
run: | | |
curl "https://www.archimatetool.com/downloads/archi/5.3.0/Archi-Linux64-5.3.0.tgz" \ | |
-q -o /tmp/archi.tgz | |
tar -zxvf /tmp/archi.tgz -C /tmp/ | |
if: ${{ steps.changes.outputs.archi == 'true' || github.event_name == 'workflow_dispatch' }} | |
- name: Generate HTML report from Archimate model | |
run: | | |
xvfb-run /tmp/Archi/Archi -application com.archimatetool.commandline.app \ | |
-nosplash --consoleLog --loadModel ./docs/invite.archimate \ | |
--html.createReport "./docs/Archi/" | |
if: ${{ steps.changes.outputs.archi == 'true' || github.event_name == 'workflow_dispatch' }} | |
- name: Commit files if the Archimate html has changed | |
run: | | |
git config user.name github-actions | |
git config user.email [email protected] | |
git pull | |
git add docs/Archi/* | |
git diff-index --quiet HEAD || git commit -m "Update HTML export of Archimate file" | |
if: ${{ steps.changes.outputs.archi == 'true' || github.event_name == 'workflow_dispatch' }} | |
continue-on-error: true | |
- name: Push changes | |
uses: ad-m/github-push-action@master | |
with: | |
github_token: ${{ secrets.GITHUB_TOKEN }} | |
branch: ${{ github.ref }} |