From 419f6f4c4eca8cb0287f769985db665a533f1ca9 Mon Sep 17 00:00:00 2001 From: Matthias Schaefer Date: Mon, 29 Jun 2026 12:43:36 +0200 Subject: [PATCH 1/2] initialize CI --- .github/workflows/external_triggered_CI.yml | 116 ++++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 .github/workflows/external_triggered_CI.yml diff --git a/.github/workflows/external_triggered_CI.yml b/.github/workflows/external_triggered_CI.yml new file mode 100644 index 0000000000..4c5a174e1d --- /dev/null +++ b/.github/workflows/external_triggered_CI.yml @@ -0,0 +1,116 @@ +on: + repository_dispatch: + types: [CI_trigger_type] + +env: + EVENT_NUMBER: ${{ github.event.client_payload.number }} + BASE_SHA: ${{ github.event.client_payload.base_sha }} + PR_SHA: ${{ github.event.client_payload.head_sha }} + REPO_NAME: ${{ github.event.client_payload.github_repo }} + #WORKSPACE: ${{ github.workspace }} + PR_SERVER: ${{ vars.LTX_PR_SERVER }} + # WORKSPACE: $GITHUB_WORKSPACE + + +jobs: + run_dymola: + runs-on: ubuntu-latest + + container: + image: ghcr.io/matthiasbschaefer/dymola_image:latest + options: --user=resimuser --rm + credentials: + username: ${{ secrets.GHCR_USER }} + password: ${{ secrets.GHCR_TOKEN }} + + steps: + - uses: actions/checkout@v6 + with: + persist-credentials: false + fetch-depth: 0 + repository: ${{ env.REPO_NAME }} + + - name: prepare + run: /work/run_scripts/prepare_tool.sh $GITHUB_WORKSPACE ${{ env.EVENT_NUMBER }} ${{ env.BASE_SHA }} ${{ env.PR_SHA }} dymola + + - name: run + run: /work/run_scripts/run_tool.sh $GITHUB_WORKSPACE ${{ env.EVENT_NUMBER }} ${{ env.BASE_SHA }} dymola + + + + run_openmodelica: + runs-on: ubuntu-latest + + container: + image: ghcr.io/matthiasbschaefer/om_image:latest + options: --user=resimuser --rm + credentials: + username: ${{ secrets.GHCR_USER }} + password: ${{ secrets.GHCR_TOKEN }} + + steps: + - uses: actions/checkout@v6 + with: + persist-credentials: false + fetch-depth: 0 + repository: ${{ env.REPO_NAME }} + + - name: prepare + run: /work/run_scripts/prepare_tool.sh $GITHUB_WORKSPACE ${{ env.EVENT_NUMBER }} ${{ env.BASE_SHA }} ${{ env.PR_SHA }} om + + - name: run + run: /work/run_scripts/run_tool.sh $GITHUB_WORKSPACE ${{ env.EVENT_NUMBER }} ${{ env.BASE_SHA }} om + + + + overview: + runs-on: ubuntu-latest + needs: [run_openmodelica, run_dymola] + if: always() + container: + image: ghcr.io/matthiasbschaefer/om_image:latest + options: --user=resimuser --rm + credentials: + username: ${{ secrets.GHCR_USER }} + password: ${{ secrets.GHCR_TOKEN }} + + + steps: + - name: create_overview + run: /work/run_scripts/create_overview.sh ${{ env.EVENT_NUMBER }} + - name: publish + run: /work/run_scripts/publish_reports.sh ${{ env.EVENT_NUMBER }} + + + + review: + runs-on: ubuntu-latest + needs: [run_openmodelica, run_dymola, overview] + if: always() + permissions: + pull-requests: write + steps: + - name: Decide review event + id: decide + run: | + if [ "${{ needs.run_openmodelica.result }}" = "success" ] && [ "${{ needs.run_dymola.result }}" = "success" ]; then + echo "event=APPROVE" >> "$GITHUB_OUTPUT" + else + echo "event=REQUEST_CHANGES" >> "$GITHUB_OUTPUT" + fi + - name: Create review in other repo + env: + GH_TOKEN: ${{ secrets.MODELICA_TOKEN }} + TARGET_REPO: "matthiasbschaefer/ModelicaStandardLibrary" + TARGET_PR: ${{ github.event.client_payload.number }} + EVENT: ${{ steps.decide.outputs.event }} + BODY: "Please look here for details:${{ env.PR_SERVER }}/${{ env.EVENT_NUMBER }}/Modelica/PR_comparison_report.html and ${{ env.PR_SERVER }}/${{ env.EVENT_NUMBER }}/ModelicaTest/PR_comparison_report.html" + + run: | + API="https://api.github.com/repos/${TARGET_REPO}/pulls/${TARGET_PR}/reviews" + curl -sS -X POST "$API" \ + -H "Authorization: Bearer $GH_TOKEN" \ + -H "Accept: application/vnd.github+json" \ + -H "X-GitHub-Api-Version: 2022-11-28" \ + -d "{\"event\":\"${EVENT}\",\"body\":$(jq -Rs . <<< "$BODY")}" + From 3e48417bdc39422aa36b3c7aec200f7f7289af93 Mon Sep 17 00:00:00 2001 From: Matthias Schaefer Date: Mon, 29 Jun 2026 13:51:34 +0200 Subject: [PATCH 2/2] adapt workflow yml according to coderabbit --- .github/workflows/external_triggered_CI.yml | 43 ++++++++++++--------- 1 file changed, 24 insertions(+), 19 deletions(-) diff --git a/.github/workflows/external_triggered_CI.yml b/.github/workflows/external_triggered_CI.yml index 4c5a174e1d..1e46de4f3d 100644 --- a/.github/workflows/external_triggered_CI.yml +++ b/.github/workflows/external_triggered_CI.yml @@ -11,11 +11,13 @@ env: PR_SERVER: ${{ vars.LTX_PR_SERVER }} # WORKSPACE: $GITHUB_WORKSPACE +permissions: + contents: read jobs: run_dymola: runs-on: ubuntu-latest - + permissions: {} container: image: ghcr.io/matthiasbschaefer/dymola_image:latest options: --user=resimuser --rm @@ -31,16 +33,16 @@ jobs: repository: ${{ env.REPO_NAME }} - name: prepare - run: /work/run_scripts/prepare_tool.sh $GITHUB_WORKSPACE ${{ env.EVENT_NUMBER }} ${{ env.BASE_SHA }} ${{ env.PR_SHA }} dymola + run: /work/run_scripts/prepare_tool.sh $GITHUB_WORKSPACE $EVENT_NUMBER $BASE_SHA $PR_SHA dymola - name: run - run: /work/run_scripts/run_tool.sh $GITHUB_WORKSPACE ${{ env.EVENT_NUMBER }} ${{ env.BASE_SHA }} dymola + run: /work/run_scripts/run_tool.sh $GITHUB_WORKSPACE $EVENT_NUMBER $BASE_SHA dymola run_openmodelica: runs-on: ubuntu-latest - + permissions: {} container: image: ghcr.io/matthiasbschaefer/om_image:latest options: --user=resimuser --rm @@ -56,15 +58,16 @@ jobs: repository: ${{ env.REPO_NAME }} - name: prepare - run: /work/run_scripts/prepare_tool.sh $GITHUB_WORKSPACE ${{ env.EVENT_NUMBER }} ${{ env.BASE_SHA }} ${{ env.PR_SHA }} om + run: /work/run_scripts/prepare_tool.sh $GITHUB_WORKSPACE $EVENT_NUMBER $BASE_SHA $PR_SHA om - name: run - run: /work/run_scripts/run_tool.sh $GITHUB_WORKSPACE ${{ env.EVENT_NUMBER }} ${{ env.BASE_SHA }} om + run: /work/run_scripts/run_tool.sh $GITHUB_WORKSPACE $EVENT_NUMBER $BASE_SHA om overview: runs-on: ubuntu-latest + permissions: {} needs: [run_openmodelica, run_dymola] if: always() container: @@ -77,9 +80,9 @@ jobs: steps: - name: create_overview - run: /work/run_scripts/create_overview.sh ${{ env.EVENT_NUMBER }} + run: /work/run_scripts/create_overview.sh $EVENT_NUMBER - name: publish - run: /work/run_scripts/publish_reports.sh ${{ env.EVENT_NUMBER }} + run: /work/run_scripts/publish_reports.sh $EVENT_NUMBER @@ -87,8 +90,8 @@ jobs: runs-on: ubuntu-latest needs: [run_openmodelica, run_dymola, overview] if: always() - permissions: - pull-requests: write + permissions: {} + # pull-requests: write steps: - name: Decide review event id: decide @@ -101,16 +104,18 @@ jobs: - name: Create review in other repo env: GH_TOKEN: ${{ secrets.MODELICA_TOKEN }} - TARGET_REPO: "matthiasbschaefer/ModelicaStandardLibrary" - TARGET_PR: ${{ github.event.client_payload.number }} + TARGET_REPO: ${{ env.REPO_NAME }} + TARGET_PR: ${{ env.EVENT_NUMBER }} EVENT: ${{ steps.decide.outputs.event }} BODY: "Please look here for details:${{ env.PR_SERVER }}/${{ env.EVENT_NUMBER }}/Modelica/PR_comparison_report.html and ${{ env.PR_SERVER }}/${{ env.EVENT_NUMBER }}/ModelicaTest/PR_comparison_report.html" run: | - API="https://api.github.com/repos/${TARGET_REPO}/pulls/${TARGET_PR}/reviews" - curl -sS -X POST "$API" \ - -H "Authorization: Bearer $GH_TOKEN" \ - -H "Accept: application/vnd.github+json" \ - -H "X-GitHub-Api-Version: 2022-11-28" \ - -d "{\"event\":\"${EVENT}\",\"body\":$(jq -Rs . <<< "$BODY")}" - + set -euo pipefail + API="https://api.github.com/repos/${TARGET_REPO}/pulls/${TARGET_PR}/reviews" + payload="$(jq -n --arg event "$EVENT" --arg body "$BODY" '{event: $event, body: $body}')" + curl --fail-with-body -sS -X POST "$API" \ + -H "Authorization: Bearer $GH_TOKEN" \ + -H "Accept: application/vnd.github+json" \ + -H "Content-Type: application/json" \ + -H "X-GitHub-Api-Version: 2022-11-28" \ + --data "$payload" \ No newline at end of file