From bedd1f49d66a800aee938b88bd7b69ae8b01f48d Mon Sep 17 00:00:00 2001 From: Max Theilig Date: Fri, 12 Jan 2024 17:07:07 +0100 Subject: [PATCH] initial commit with workflow file --- .devcontainer/Dockerfile | 59 ++++++++++++++ .devcontainer/codfsh-config.yaml | 9 +++ .devcontainer/devcontainer.json | 34 ++++++++ .github/workflows/RenderAllDiagrams.yml | 102 ++++++++++++++++++++++++ Material/images/Gematik_Logo_Flag.svg | 40 ++++++++++ 5 files changed, 244 insertions(+) create mode 100644 .devcontainer/Dockerfile create mode 100644 .devcontainer/codfsh-config.yaml create mode 100644 .devcontainer/devcontainer.json create mode 100644 .github/workflows/RenderAllDiagrams.yml create mode 100644 Material/images/Gematik_Logo_Flag.svg diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile new file mode 100644 index 00000000..987fa188 --- /dev/null +++ b/.devcontainer/Dockerfile @@ -0,0 +1,59 @@ +FROM mcr.microsoft.com/devcontainers/base:alpine-3.18 + +# Setzen der Umgebungsvariablen +ENV FIRELY_TERMINAL_VERSION=3.1.0 +ENV JAVA_VALIDATOR_VERSION=6.0.11 +ENV SUSHI_VERSION=3.5.0 + +# Installieren der notwendige Tools +# Add Microsoft's .NET SDK repository and install .NET SDK +RUN wget https://dot.net/v1/dotnet-install.sh \ + && chmod +x dotnet-install.sh \ + && ./dotnet-install.sh --channel 6.0 --install-dir /usr/share/dotnet \ + && ln -s /usr/share/dotnet/dotnet /usr/local/bin \ + && rm dotnet-install.sh + +# Install ICU libraries +RUN apk add --no-cache icu-libs + +# Install Node.js and npm +RUN apk add --no-cache nodejs npm + +# Install Java (OpenJDK) +RUN apk add --no-cache openjdk11 + +# Install Firely Terminal as vscode user +# Switch to the vscode user +USER vscode + +# Install Firely Terminal +RUN dotnet tool install --global Firely.Terminal --version $FIRELY_TERMINAL_VERSION + +# Add .NET tools to PATH for vscode user +ENV PATH="/home/vscode/.dotnet/tools:${PATH}" + +# Switch back to root user to perform remaining installations +USER root + +RUN npm install -g fsh-sushi@$SUSHI_VERSION + +# Installieren der zusätzliche Abhängigkeiten +RUN apk update && apk add --no-cache jq findutils curl ca-certificates + +# Setup for FHIR Validator +RUN mkdir -p /home/vscode/.fhir/validators/ +RUN wget -q https://github.com/hapifhir/org.hl7.fhir.core/releases/download/$JAVA_VALIDATOR_VERSION/validator_cli.jar -O /home/vscode/.fhir/validators/validator_cli.jar + +# Set ownership +RUN mkdir -p /home/vscode/.fhir/packages && \ + chown -R vscode:vscode /home/vscode/.fhir/packages + +RUN mkdir -p /home/vscode/.fhir/settings/ +COPY codfsh-config.yaml /home/vscode/.fhir/settings/codfsh-config.yaml + +# Setzen des Arbeitsverzeichnis +WORKDIR /workspace + +COPY . /workspace + +CMD [ "/bin/bash" ] diff --git a/.devcontainer/codfsh-config.yaml b/.devcontainer/codfsh-config.yaml new file mode 100644 index 00000000..7b151129 --- /dev/null +++ b/.devcontainer/codfsh-config.yaml @@ -0,0 +1,9 @@ +sushi: + min_version: "3.5.0" +hapi: + min_version: "3.0.0" + parameters: + jurisdiction: DE + locale: de-DE + tx: "n/a" + debug: true diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 00000000..8072f952 --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,34 @@ +// For format details, see https://aka.ms/devcontainer.json. For config options, see the +// README at: https://github.com/devcontainers/templates/tree/main/src/alpine +{ + "name": "FHIR Development Container", + // Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile + "build": { + "dockerfile": "Dockerfile" + }, + "customizations": { + "vscode": { + "extensions": [ + "gematikde.codfsh", + "MITRE-Health.vscode-language-fsh", + "ms-azuretools.vscode-docker" + ], + "settings": { + "codfsh.HapiValidator.Executable": "/home/vscode/.fhir/validators/validator_cli.jar", + "codfsh.HapiValidator.Settings.SettingsFile": "/home/vscode/.fhir/settings/codfsh-config.yaml" + } + } + } + + // Features to add to the dev container. More info: https://containers.dev/features. + // "features": {}, + + // Use 'forwardPorts' to make a list of ports inside the container available locally. + // "forwardPorts": [], + + // Use 'postCreateCommand' to run commands after the container is created. + // "postCreateCommand": "uname -a", + + // Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root. + // "remoteUser": "root" +} diff --git a/.github/workflows/RenderAllDiagrams.yml b/.github/workflows/RenderAllDiagrams.yml new file mode 100644 index 00000000..ee949a78 --- /dev/null +++ b/.github/workflows/RenderAllDiagrams.yml @@ -0,0 +1,102 @@ +name: Render All Diagrams + +on: + push: + paths: + - '**/Material/images/src/**/*.puml' + - '**/Material/images/src/**/*.drawio' + branches-ignore: + - 'main**' + + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +jobs: + build: + runs-on: ubuntu-latest + + steps: + + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it + - name: Checkout repository + uses: actions/checkout@v4 + + # Installs Java distribution for running the plantUML jar + - name: Install Java + uses: actions/setup-java@v3 + with: + distribution: 'temurin' + java-version: '17' + check-latest: true + + # Install graphviz for plantuml + - name: Setup Graphviz + uses: ts-graphviz/setup-graphviz@v1 + + # Download plantUML jar + - name: Download plantuml file + run: | + wget -O plantuml.jar "https://github.com/plantuml/plantuml/releases/latest/download/plantuml.jar" + + # Clean Folder + - name: Ensure and clean folder + run: | + img_dir=Material/images/diagrams + mkdir -p $img_dir + rm -rf Material/images/diagrams/*.svg + + # Generate the SVGs from PUML + - name: Render PUML to SVG and Move files + run: | + FileNamePaths=$(find . -path "*/images/src/*/*.puml" -exec dirname {} \; | sort -u) + for dir in $FileNamePaths + do + # Render SVGs from PUMLs + find $dir -name "*.puml" -exec java -jar plantuml.jar -tsvg {} \; + done + + # Remove plantUML jar + - name: remove plantuml file + run: | + rm -f plantuml.jar + + # Generate the SVGs from DrawIO + - name: Render DrawIO to SVG with predefined action + uses: rlespinasse/drawio-export-action@v2 + with: + path: ./Material/images/src/drawio/ + remove-page-suffix: true + output: . + format: svg + action-mode: all + + # copies the created SVG files to the images/diagrams folder and deletes the drawio files + - name: Move SVGs to target image folder + run: | + img_dir=Material/images/diagrams + # Find all unique directories containing *.SVGs files under any /imgsrc/ folder + FileNamePaths=$(find . -path "*/images/src/*/*.svg" -exec dirname {} \; | sort -u) + for dir in $FileNamePaths + do + # Move SVGs to out directory + find $dir -name "*.svg" -exec mv {} $img_dir \; + done + + ## add and commit the new generated files + #- name: Create Pull Request + # uses: peter-evans/create-pull-request@v5 + # with: + # branch: auto/images-generation + # commit-message: Generated Images from source Code by GitHub Action + # title: Generated Images from GitHub Action + # assignees: ${{ github.actor }} + # reviewers: ${{ github.actor }} + # delete-branch: true + # labels: automated pr + + - name: Commit rendered files + uses: stefanzweifel/git-auto-commit-action@v5 + with: + commit_user_name: GitHub Actions Bot + commit_user_email: ActionBot@github.com + commit_message: auto-generated diagrams by GitHub Action after source code change \ No newline at end of file diff --git a/Material/images/Gematik_Logo_Flag.svg b/Material/images/Gematik_Logo_Flag.svg new file mode 100644 index 00000000..20976701 --- /dev/null +++ b/Material/images/Gematik_Logo_Flag.svg @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + +