From 7985368974ae2deed41b476551b0f818a0a2a70c Mon Sep 17 00:00:00 2001 From: Philipp Oppermann Date: Wed, 23 Jul 2025 13:34:59 +0200 Subject: [PATCH 1/7] Automate schema regeneration through CI --- .github/workflows/regenerate-schemas.yml | 29 ++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 .github/workflows/regenerate-schemas.yml diff --git a/.github/workflows/regenerate-schemas.yml b/.github/workflows/regenerate-schemas.yml new file mode 100644 index 00000000..1e08d8e6 --- /dev/null +++ b/.github/workflows/regenerate-schemas.yml @@ -0,0 +1,29 @@ +name: Regenerate JSON schemas + +on: + push: + branches: ["main"] + +jobs: + regenerate_schemas: + runs-on: ubuntu-latest + permissions: + pull-requests: write + steps: + - uses: actions/checkout@v4 + + - name: Update Schema + run: cargo run -p dora-core --bin generate_schema + - name: Create if changed + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + if git diff --exit-code -- libraries/core/dora-schema.json; then + echo "Schema file was not changed" + else + git switch -c schema-update-for-${{ github.sha }} + git add libraries/core/dora-schema.json + git commit -m "Update JSON schema for `dora-core`" + gh pr create --fill + fi + From d209df51412f3ddc6d7629dd32a44dcf9df2966b Mon Sep 17 00:00:00 2001 From: Philipp Oppermann Date: Wed, 23 Jul 2025 13:38:17 +0200 Subject: [PATCH 2/7] Set git user/email --- .github/workflows/regenerate-schemas.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/regenerate-schemas.yml b/.github/workflows/regenerate-schemas.yml index 1e08d8e6..03642481 100644 --- a/.github/workflows/regenerate-schemas.yml +++ b/.github/workflows/regenerate-schemas.yml @@ -23,6 +23,8 @@ jobs: else git switch -c schema-update-for-${{ github.sha }} git add libraries/core/dora-schema.json + git config user.email "dora-bot@phil-opp.com" + git config user.name "Dora Bot" git commit -m "Update JSON schema for `dora-core`" gh pr create --fill fi From 20477db6c5366045b346c1c5530010ca9834256c Mon Sep 17 00:00:00 2001 From: Philipp Oppermann Date: Wed, 23 Jul 2025 13:47:09 +0200 Subject: [PATCH 3/7] Escape + push --- .github/workflows/regenerate-schemas.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/regenerate-schemas.yml b/.github/workflows/regenerate-schemas.yml index 03642481..145ada28 100644 --- a/.github/workflows/regenerate-schemas.yml +++ b/.github/workflows/regenerate-schemas.yml @@ -25,7 +25,8 @@ jobs: git add libraries/core/dora-schema.json git config user.email "dora-bot@phil-opp.com" git config user.name "Dora Bot" - git commit -m "Update JSON schema for `dora-core`" + git commit -m "Update JSON schema for \`dora-core\`" + git push -u origin HEAD gh pr create --fill fi From 7059e9fe425cf8835ff5b32a73486ee1156cba55 Mon Sep 17 00:00:00 2001 From: Philipp Oppermann Date: Wed, 23 Jul 2025 13:49:56 +0200 Subject: [PATCH 4/7] Problem matchers + caching --- .github/workflows/regenerate-schemas.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/regenerate-schemas.yml b/.github/workflows/regenerate-schemas.yml index 145ada28..a03c89c1 100644 --- a/.github/workflows/regenerate-schemas.yml +++ b/.github/workflows/regenerate-schemas.yml @@ -11,6 +11,10 @@ jobs: pull-requests: write steps: - uses: actions/checkout@v4 + - uses: r7kamura/rust-problem-matchers@v1.1.0 + - run: cargo --version --verbose + + - uses: Swatinem/rust-cache@v2 - name: Update Schema run: cargo run -p dora-core --bin generate_schema From c5ee8bebadd0724c63cead693dcf75033988d2bc Mon Sep 17 00:00:00 2001 From: Philipp Oppermann Date: Wed, 23 Jul 2025 13:53:37 +0200 Subject: [PATCH 5/7] Allow contents write access --- .github/workflows/regenerate-schemas.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/regenerate-schemas.yml b/.github/workflows/regenerate-schemas.yml index a03c89c1..23db664d 100644 --- a/.github/workflows/regenerate-schemas.yml +++ b/.github/workflows/regenerate-schemas.yml @@ -9,6 +9,7 @@ jobs: runs-on: ubuntu-latest permissions: pull-requests: write + contents: write steps: - uses: actions/checkout@v4 - uses: r7kamura/rust-problem-matchers@v1.1.0 From f79def37aca5e0b47c2d841295241cd18836b46c Mon Sep 17 00:00:00 2001 From: Philipp Oppermann Date: Wed, 23 Jul 2025 14:13:12 +0200 Subject: [PATCH 6/7] Fetch main --- .github/workflows/regenerate-schemas.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/regenerate-schemas.yml b/.github/workflows/regenerate-schemas.yml index 23db664d..caf1fd15 100644 --- a/.github/workflows/regenerate-schemas.yml +++ b/.github/workflows/regenerate-schemas.yml @@ -32,6 +32,7 @@ jobs: git config user.name "Dora Bot" git commit -m "Update JSON schema for \`dora-core\`" git push -u origin HEAD + git fetch origin main gh pr create --fill fi From 0751e2dec8989d1bcff3eb3d5964d9918e90fee0 Mon Sep 17 00:00:00 2001 From: Philipp Oppermann Date: Wed, 23 Jul 2025 14:13:56 +0200 Subject: [PATCH 7/7] Cache on failure --- .github/workflows/regenerate-schemas.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/regenerate-schemas.yml b/.github/workflows/regenerate-schemas.yml index caf1fd15..9326a2b9 100644 --- a/.github/workflows/regenerate-schemas.yml +++ b/.github/workflows/regenerate-schemas.yml @@ -16,6 +16,8 @@ jobs: - run: cargo --version --verbose - uses: Swatinem/rust-cache@v2 + with: + cache-on-failure: true - name: Update Schema run: cargo run -p dora-core --bin generate_schema