From b1e6efc6659c71f40d5a2ea2d80ff4b11bb0b717 Mon Sep 17 00:00:00 2001 From: Johannes Schindelin Date: Sat, 30 Aug 2025 13:24:20 +0200 Subject: [PATCH 1/6] sync-upstream-branches: configure the workflow via `vars.CONFIG` The grand idea to use GitGitGadget for projects other than Git is to allow configuring it via a custom JSON that is stored as a repository variable. Let's do this. Signed-off-by: Johannes Schindelin --- .github/workflows/sync-upstream-branches.yml | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/.github/workflows/sync-upstream-branches.yml b/.github/workflows/sync-upstream-branches.yml index f1c39de..68530bd 100644 --- a/.github/workflows/sync-upstream-branches.yml +++ b/.github/workflows/sync-upstream-branches.yml @@ -16,13 +16,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - spec: - - sourceRepo: j6t/git-gui - targetRepo: gitgitgadget/git - targetRefNamespace: git-gui/ - - sourceRepo: gitster/git - targetRepo: gitgitgadget/git - sourceRefRegex: "^refs/heads/(maint-\\d|[a-z][a-z]/)" + spec: ${{ fromJSON(vars.CONFIG).syncUpstreamBranches }} steps: - name: check which refs need to be synchronized From de82391752d1ed2efd12a32f2144dcfba16babc3 Mon Sep 17 00:00:00 2001 From: Johannes Schindelin Date: Sat, 30 Aug 2025 13:26:55 +0200 Subject: [PATCH 2/6] sync-mailing-list-mirror: configure the workflow via `vars.CONFIG` The grand idea to use GitGitGadget for projects other than Git is to allow configuring it via a custom JSON that is stored as a repository variable. Let's do this. Signed-off-by: Johannes Schindelin --- .github/workflows/sync-mailing-list-mirror.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/sync-mailing-list-mirror.yml b/.github/workflows/sync-mailing-list-mirror.yml index b08b856..81c1d90 100644 --- a/.github/workflows/sync-mailing-list-mirror.yml +++ b/.github/workflows/sync-mailing-list-mirror.yml @@ -6,9 +6,9 @@ on: - cron: "*/5 * * * *" env: - LORE_EPOCH: 1 # also adjust SOURCE_REPOSITORY - SOURCE_REPOSITORY: https://lore.kernel.org/git/1 # LORE_EPOCH - TARGET_GITHUB_REPOSITORY: gitgitgadget/git-mailing-list-mirror + MIRROR_REF: ${{ fromJSON(vars.CONFIG).mailrepo.mirrorRef }} + SOURCE_REPOSITORY: ${{ fromJSON(vars.CONFIG).mailrepo.url }}${{ fromJSON(vars.CONFIG).mailrepo.public_inbox_epoch }} + TARGET_GITHUB_REPOSITORY: ${{ fromJSON(vars.CONFIG).mailrepo.owner }}/${{ fromJSON(vars.CONFIG).mailrepo.name }} concurrency: group: sync-mailing-list-mirror @@ -27,16 +27,16 @@ jobs: echo "org=${TARGET_GITHUB_REPOSITORY%%/*}" >>$GITHUB_OUTPUT && echo "repo=${TARGET_GITHUB_REPOSITORY#*/}" >>$GITHUB_OUTPUT && source="$(git ls-remote "$SOURCE_REPOSITORY" master)" && - target="$(git ls-remote https://github.com/"$TARGET_GITHUB_REPOSITORY" lore-$LORE_EPOCH)" && + target="$(git ls-remote https://github.com/"$TARGET_GITHUB_REPOSITORY" "$MIRROR_REF")" && echo "result=$(test "${source%% *}" = "${target%% *}" && echo false || echo true)" >>$GITHUB_OUTPUT - name: Partial clone if: steps.needs-update.outputs.result == 'true' run: | - git clone --bare --depth=1 -b lore-$LORE_EPOCH --filter=blob:none https://github.com/$TARGET_GITHUB_REPOSITORY . + git clone --bare --depth=1 -b "${MIRROR_REF#refs/heads/}" --filter=blob:none https://github.com/$TARGET_GITHUB_REPOSITORY . - name: Update from lore.kernel.org if: steps.needs-update.outputs.result == 'true' run: | - git fetch "$SOURCE_REPOSITORY" refs/heads/master:refs/heads/lore-$LORE_EPOCH + git fetch "$SOURCE_REPOSITORY" refs/heads/master:"$MIRROR_REF" - name: obtain installation token if: steps.needs-update.outputs.result == 'true' uses: actions/create-github-app-token@v2 @@ -51,4 +51,4 @@ jobs: env: GITHUB_TOKEN: ${{ steps.token.outputs.token }} run: | - git push https://$GITHUB_ACTOR:$GITHUB_TOKEN@github.com/$TARGET_GITHUB_REPOSITORY lore-$LORE_EPOCH + git push https://$GITHUB_ACTOR:$GITHUB_TOKEN@github.com/$TARGET_GITHUB_REPOSITORY "$MIRROR_REF" From 542bda4fa172cf21c9b1fbfb7e2e0458ad7a1ca4 Mon Sep 17 00:00:00 2001 From: Johannes Schindelin Date: Mon, 1 Sep 2025 15:40:43 +0200 Subject: [PATCH 3/6] WIP (fill in TBD) Use `vars.CONFIG` with all of GitGitGadget's GitHub Actions The GitHub Actions of GitGitGadget just learned the trick to accept the project configuration as an input parameter. The idea is to store this configuration in the repository variable called `CONFIG`. Here is the code change to make use of this repository variable. Obviously, this means that the workflows should no longer run in forks without said configuration. For details about configuring GitGitGadget to support projects other than Git, see TBD. Signed-off-by: Johannes Schindelin --- .github/workflows/handle-new-mails.yml | 2 ++ .github/workflows/handle-pr-comment.yml | 2 ++ .github/workflows/handle-pr-push.yml | 2 ++ .github/workflows/update-mail-to-commit-notes.yml | 2 ++ .github/workflows/update-prs.yml | 2 ++ 5 files changed, 10 insertions(+) diff --git a/.github/workflows/handle-new-mails.yml b/.github/workflows/handle-new-mails.yml index 0332090..c3f9d40 100644 --- a/.github/workflows/handle-new-mails.yml +++ b/.github/workflows/handle-new-mails.yml @@ -10,6 +10,7 @@ concurrency: jobs: handle-new-mails: runs-on: ubuntu-latest + if: vars.CONFIG != '' steps: - uses: actions/create-github-app-token@v1 @@ -35,6 +36,7 @@ jobs: repositories: git - uses: gitgitgadget/gitgitgadget/handle-new-mails@v1 with: + config: ${{ vars.CONFIG }} pr-repo-token: ${{ steps.gitgitgadget-git-token.outputs.token }} upstream-repo-token: ${{ steps.git-git-token.outputs.token }} test-repo-token: ${{ steps.dscho-git-token.outputs.token }} diff --git a/.github/workflows/handle-pr-comment.yml b/.github/workflows/handle-pr-comment.yml index 31e3cec..59d8354 100644 --- a/.github/workflows/handle-pr-comment.yml +++ b/.github/workflows/handle-pr-comment.yml @@ -19,6 +19,7 @@ concurrency: jobs: handle-pr-comment: runs-on: ubuntu-latest + if: vars.CONFIG != '' steps: - uses: actions/create-github-app-token@v1 @@ -84,6 +85,7 @@ jobs: echo "check_run_id=$check_run_id" >> $GITHUB_OUTPUT - uses: gitgitgadget/gitgitgadget/handle-pr-comment@v1 with: + config: ${{ vars.CONFIG }} pr-repo-token: ${{ steps.gitgitgadget-git-token.outputs.token }} upstream-repo-token: ${{ steps.git-git-token.outputs.token }} test-repo-token: ${{ steps.dscho-git-token.outputs.token }} diff --git a/.github/workflows/handle-pr-push.yml b/.github/workflows/handle-pr-push.yml index 6ef1c96..0d7381a 100644 --- a/.github/workflows/handle-pr-push.yml +++ b/.github/workflows/handle-pr-push.yml @@ -19,6 +19,7 @@ concurrency: jobs: handle-pr-push: runs-on: ubuntu-latest + if: vars.CONFIG != '' steps: - uses: actions/create-github-app-token@v1 @@ -82,6 +83,7 @@ jobs: echo "check_run_id=$check_run_id" >> $GITHUB_OUTPUT - uses: gitgitgadget/gitgitgadget/handle-pr-push@v1 with: + config: ${{ vars.CONFIG }} pr-repo-token: ${{ steps.gitgitgadget-git-token.outputs.token }} upstream-repo-token: ${{ steps.git-git-token.outputs.token }} test-repo-token: ${{ steps.dscho-git-token.outputs.token }} diff --git a/.github/workflows/update-mail-to-commit-notes.yml b/.github/workflows/update-mail-to-commit-notes.yml index bedc4c8..b827d51 100644 --- a/.github/workflows/update-mail-to-commit-notes.yml +++ b/.github/workflows/update-mail-to-commit-notes.yml @@ -11,6 +11,7 @@ concurrency: jobs: update-mail-to-commit-notes: runs-on: ubuntu-latest + if: vars.CONFIG != '' steps: - uses: actions/create-github-app-token@v1 @@ -22,4 +23,5 @@ jobs: repositories: git - uses: gitgitgadget/gitgitgadget/update-mail-to-commit-notes@v1 with: + config: ${{ vars.CONFIG }} pr-repo-token: ${{ steps.gitgitgadget-git-token.outputs.token }} diff --git a/.github/workflows/update-prs.yml b/.github/workflows/update-prs.yml index 6de7cb1..35a3e8f 100644 --- a/.github/workflows/update-prs.yml +++ b/.github/workflows/update-prs.yml @@ -10,6 +10,7 @@ concurrency: jobs: update-prs: runs-on: ubuntu-latest + if: vars.CONFIG != '' steps: - uses: actions/create-github-app-token@v1 @@ -35,6 +36,7 @@ jobs: repositories: git - uses: gitgitgadget/gitgitgadget/update-prs@v1 with: + config: ${{ vars.CONFIG }} pr-repo-token: ${{ steps.gitgitgadget-git-token.outputs.token }} upstream-repo-token: ${{ steps.git-git-token.outputs.token }} test-repo-token: ${{ steps.dscho-git-token.outputs.token }} From 146bf8dbb1cf327a2d0530c90f5998f2c57aa0df Mon Sep 17 00:00:00 2001 From: Johannes Schindelin Date: Mon, 1 Sep 2025 15:58:04 +0200 Subject: [PATCH 4/6] Use more generic names for the `-token` steps With my current push to let GitGitGadget work for other projects than Git, it is no longer appropriate to refer to the `git` repository forks directly. Signed-off-by: Johannes Schindelin --- .github/workflows/handle-new-mails.yml | 12 +++++----- .github/workflows/handle-pr-comment.yml | 24 +++++++++---------- .github/workflows/handle-pr-push.yml | 24 +++++++++---------- .../workflows/update-mail-to-commit-notes.yml | 4 ++-- .github/workflows/update-prs.yml | 12 +++++----- 5 files changed, 38 insertions(+), 38 deletions(-) diff --git a/.github/workflows/handle-new-mails.yml b/.github/workflows/handle-new-mails.yml index c3f9d40..6e41c3f 100644 --- a/.github/workflows/handle-new-mails.yml +++ b/.github/workflows/handle-new-mails.yml @@ -14,21 +14,21 @@ jobs: steps: - uses: actions/create-github-app-token@v1 - id: gitgitgadget-git-token + id: pr-repo-token with: app-id: ${{ secrets.GITGITGADGET_GITHUB_APP_ID }} private-key: ${{ secrets.GITGITGADGET_GITHUB_APP_PRIVATE_KEY }} owner: gitgitgadget repositories: git - uses: actions/create-github-app-token@v1 - id: git-git-token + id: upstream-repo-token with: app-id: ${{ secrets.GITGITGADGET_GIT_GITHUB_APP_ID }} private-key: ${{ secrets.GITGITGADGET_GIT_GITHUB_APP_PRIVATE_KEY }} owner: git repositories: git - uses: actions/create-github-app-token@v1 - id: dscho-git-token + id: test-repo-token with: app-id: ${{ secrets.GITGITGADGET_GIT_GITHUB_APP_ID }} private-key: ${{ secrets.GITGITGADGET_GIT_GITHUB_APP_PRIVATE_KEY }} @@ -37,6 +37,6 @@ jobs: - uses: gitgitgadget/gitgitgadget/handle-new-mails@v1 with: config: ${{ vars.CONFIG }} - pr-repo-token: ${{ steps.gitgitgadget-git-token.outputs.token }} - upstream-repo-token: ${{ steps.git-git-token.outputs.token }} - test-repo-token: ${{ steps.dscho-git-token.outputs.token }} + pr-repo-token: ${{ steps.pr-repo-token.outputs.token }} + upstream-repo-token: ${{ steps.upstream-repo-token.outputs.token }} + test-repo-token: ${{ steps.test-repo-token.outputs.token }} diff --git a/.github/workflows/handle-pr-comment.yml b/.github/workflows/handle-pr-comment.yml index 59d8354..4104380 100644 --- a/.github/workflows/handle-pr-comment.yml +++ b/.github/workflows/handle-pr-comment.yml @@ -23,21 +23,21 @@ jobs: steps: - uses: actions/create-github-app-token@v1 - id: gitgitgadget-git-token + id: pr-repo-token with: app-id: ${{ secrets.GITGITGADGET_GITHUB_APP_ID }} private-key: ${{ secrets.GITGITGADGET_GITHUB_APP_PRIVATE_KEY }} owner: gitgitgadget repositories: git - uses: actions/create-github-app-token@v1 - id: git-git-token + id: upstream-repo-token with: app-id: ${{ secrets.GITGITGADGET_GIT_GITHUB_APP_ID }} private-key: ${{ secrets.GITGITGADGET_GIT_GITHUB_APP_PRIVATE_KEY }} owner: git repositories: git - uses: actions/create-github-app-token@v1 - id: dscho-git-token + id: test-repo-token with: app-id: ${{ secrets.GITGITGADGET_GIT_GITHUB_APP_ID }} private-key: ${{ secrets.GITGITGADGET_GIT_GITHUB_APP_PRIVATE_KEY }} @@ -67,9 +67,9 @@ jobs: echo "repo=$repo" >> $GITHUB_OUTPUT export GH_TOKEN="$(case "$repo" in - gitgitgadget/git) echo "${{ steps.gitgitgadget-git-token.outputs.token }}";; - git/git) echo "${{ steps.git-git-token.outputs.token }}";; - dscho/git) echo "${{ steps.dscho-git-token.outputs.token }}";; + gitgitgadget/git) echo "${{ steps.pr-repo-token.outputs.token }}";; + git/git) echo "${{ steps.upstream-repo-token.outputs.token }}";; + dscho/git) echo "${{ steps.test-repo-token.outputs.token }}";; *) echo "${{ secrets.GITHUB_TOKEN }}";; esac )" @@ -86,9 +86,9 @@ jobs: - uses: gitgitgadget/gitgitgadget/handle-pr-comment@v1 with: config: ${{ vars.CONFIG }} - pr-repo-token: ${{ steps.gitgitgadget-git-token.outputs.token }} - upstream-repo-token: ${{ steps.git-git-token.outputs.token }} - test-repo-token: ${{ steps.dscho-git-token.outputs.token }} + pr-repo-token: ${{ steps.pr-repo-token.outputs.token }} + upstream-repo-token: ${{ steps.upstream-repo-token.outputs.token }} + test-repo-token: ${{ steps.test-repo-token.outputs.token }} smtp-host: smtp.gmail.com smtp-user: gitgitgadget@gmail.com smtp-pass: "${{ secrets.GITGITGADGET_SMTP_PASS }}" @@ -97,9 +97,9 @@ jobs: if: always() && steps.create-check-run.outputs.check_run_id != '' run: | export GH_TOKEN="$(case "${{ steps.create-check-run.outputs.repo }}" in - gitgitgadget/git) echo "${{ steps.gitgitgadget-git-token.outputs.token }}";; - git/git) echo "${{ steps.git-git-token.outputs.token }}";; - dscho/git) echo "${{ steps.dscho-git-token.outputs.token }}";; + gitgitgadget/git) echo "${{ steps.pr-repo-token.outputs.token }}";; + git/git) echo "${{ steps.upstream-repo-token.outputs.token }}";; + dscho/git) echo "${{ steps.test-repo-token.outputs.token }}";; *) echo "${{ secrets.GITHUB_TOKEN }}";; esac )" diff --git a/.github/workflows/handle-pr-push.yml b/.github/workflows/handle-pr-push.yml index 0d7381a..4e05836 100644 --- a/.github/workflows/handle-pr-push.yml +++ b/.github/workflows/handle-pr-push.yml @@ -23,21 +23,21 @@ jobs: steps: - uses: actions/create-github-app-token@v1 - id: gitgitgadget-git-token + id: pr-repo-token with: app-id: ${{ secrets.GITGITGADGET_GITHUB_APP_ID }} private-key: ${{ secrets.GITGITGADGET_GITHUB_APP_PRIVATE_KEY }} owner: gitgitgadget repositories: git - uses: actions/create-github-app-token@v1 - id: git-git-token + id: upstream-repo-token with: app-id: ${{ secrets.GITGITGADGET_GIT_GITHUB_APP_ID }} private-key: ${{ secrets.GITGITGADGET_GIT_GITHUB_APP_PRIVATE_KEY }} owner: git repositories: git - uses: actions/create-github-app-token@v1 - id: dscho-git-token + id: test-repo-token with: app-id: ${{ secrets.GITGITGADGET_GIT_GITHUB_APP_ID }} private-key: ${{ secrets.GITGITGADGET_GIT_GITHUB_APP_PRIVATE_KEY }} @@ -65,9 +65,9 @@ jobs: echo "repo=$repo" >> $GITHUB_OUTPUT export GH_TOKEN="$(case "$repo" in - gitgitgadget/git) echo "${{ steps.gitgitgadget-git-token.outputs.token }}";; - git/git) echo "${{ steps.git-git-token.outputs.token }}";; - dscho/git) echo "${{ steps.dscho-git-token.outputs.token }}";; + gitgitgadget/git) echo "${{ steps.pr-repo-token.outputs.token }}";; + git/git) echo "${{ steps.upstream-repo-token.outputs.token }}";; + dscho/git) echo "${{ steps.test-repo-token.outputs.token }}";; *) echo "${{ secrets.GITHUB_TOKEN }}";; esac )" @@ -84,17 +84,17 @@ jobs: - uses: gitgitgadget/gitgitgadget/handle-pr-push@v1 with: config: ${{ vars.CONFIG }} - pr-repo-token: ${{ steps.gitgitgadget-git-token.outputs.token }} - upstream-repo-token: ${{ steps.git-git-token.outputs.token }} - test-repo-token: ${{ steps.dscho-git-token.outputs.token }} + pr-repo-token: ${{ steps.pr-repo-token.outputs.token }} + upstream-repo-token: ${{ steps.upstream-repo-token.outputs.token }} + test-repo-token: ${{ steps.test-repo-token.outputs.token }} pr-url: ${{ env.PR_URL }} - name: update the check run if: always() && steps.create-check-run.outputs.check_run_id != '' run: | export GH_TOKEN="$(case "${{ steps.create-check-run.outputs.repo }}" in - gitgitgadget/git) echo "${{ steps.gitgitgadget-git-token.outputs.token }}";; - git/git) echo "${{ steps.git-git-token.outputs.token }}";; - dscho/git) echo "${{ steps.dscho-git-token.outputs.token }}";; + gitgitgadget/git) echo "${{ steps.pr-repo-token.outputs.token }}";; + git/git) echo "${{ steps.upstream-repo-token.outputs.token }}";; + dscho/git) echo "${{ steps.test-repo-token.outputs.token }}";; *) echo "${{ secrets.GITHUB_TOKEN }}";; esac )" diff --git a/.github/workflows/update-mail-to-commit-notes.yml b/.github/workflows/update-mail-to-commit-notes.yml index b827d51..7491975 100644 --- a/.github/workflows/update-mail-to-commit-notes.yml +++ b/.github/workflows/update-mail-to-commit-notes.yml @@ -15,7 +15,7 @@ jobs: steps: - uses: actions/create-github-app-token@v1 - id: gitgitgadget-git-token + id: pr-repo-token with: app-id: ${{ secrets.GITGITGADGET_GITHUB_APP_ID }} private-key: ${{ secrets.GITGITGADGET_GITHUB_APP_PRIVATE_KEY }} @@ -24,4 +24,4 @@ jobs: - uses: gitgitgadget/gitgitgadget/update-mail-to-commit-notes@v1 with: config: ${{ vars.CONFIG }} - pr-repo-token: ${{ steps.gitgitgadget-git-token.outputs.token }} + pr-repo-token: ${{ steps.pr-repo-token.outputs.token }} diff --git a/.github/workflows/update-prs.yml b/.github/workflows/update-prs.yml index 35a3e8f..e37dce3 100644 --- a/.github/workflows/update-prs.yml +++ b/.github/workflows/update-prs.yml @@ -14,21 +14,21 @@ jobs: steps: - uses: actions/create-github-app-token@v1 - id: gitgitgadget-git-token + id: pr-repo-token with: app-id: ${{ secrets.GITGITGADGET_GITHUB_APP_ID }} private-key: ${{ secrets.GITGITGADGET_GITHUB_APP_PRIVATE_KEY }} owner: gitgitgadget repositories: git - uses: actions/create-github-app-token@v1 - id: git-git-token + id: upstream-repo-token with: app-id: ${{ secrets.GITGITGADGET_GIT_GITHUB_APP_ID }} private-key: ${{ secrets.GITGITGADGET_GIT_GITHUB_APP_PRIVATE_KEY }} owner: git repositories: git - uses: actions/create-github-app-token@v1 - id: dscho-git-token + id: test-repo-token with: app-id: ${{ secrets.GITGITGADGET_GIT_GITHUB_APP_ID }} private-key: ${{ secrets.GITGITGADGET_GIT_GITHUB_APP_PRIVATE_KEY }} @@ -37,6 +37,6 @@ jobs: - uses: gitgitgadget/gitgitgadget/update-prs@v1 with: config: ${{ vars.CONFIG }} - pr-repo-token: ${{ steps.gitgitgadget-git-token.outputs.token }} - upstream-repo-token: ${{ steps.git-git-token.outputs.token }} - test-repo-token: ${{ steps.dscho-git-token.outputs.token }} + pr-repo-token: ${{ steps.pr-repo-token.outputs.token }} + upstream-repo-token: ${{ steps.upstream-repo-token.outputs.token }} + test-repo-token: ${{ steps.test-repo-token.outputs.token }} From 1d8eaa41ebb7df76f7e50d2f36b0a8bc271ae29e Mon Sep 17 00:00:00 2001 From: Johannes Schindelin Date: Mon, 1 Sep 2025 16:19:38 +0200 Subject: [PATCH 5/6] Use the `{upstream,pr,test}-repo` information from the repository config We just started to pass the project-specific configuration stored in the `CONFIG` repository variable to the GitHub Actions of GitGitGadget. That configuration contains information about the correct repositories to target (which might not be `gitgitgadget/git` and friends). Let's use this information when obtaining (and using) the installation access tokens. This is especially necessary when creating and updating that Check Run in `handle-pr-push` and in `handle-pr-comment`. Signed-off-by: Johannes Schindelin --- .github/workflows/handle-new-mails.yml | 14 +++++----- .github/workflows/handle-pr-comment.yml | 26 ++++++++++--------- .github/workflows/handle-pr-push.yml | 26 ++++++++++--------- .../workflows/update-mail-to-commit-notes.yml | 4 +-- .github/workflows/update-prs.yml | 14 +++++----- 5 files changed, 46 insertions(+), 38 deletions(-) diff --git a/.github/workflows/handle-new-mails.yml b/.github/workflows/handle-new-mails.yml index 6e41c3f..c37f2d9 100644 --- a/.github/workflows/handle-new-mails.yml +++ b/.github/workflows/handle-new-mails.yml @@ -18,22 +18,24 @@ jobs: with: app-id: ${{ secrets.GITGITGADGET_GITHUB_APP_ID }} private-key: ${{ secrets.GITGITGADGET_GITHUB_APP_PRIVATE_KEY }} - owner: gitgitgadget - repositories: git + owner: ${{ fromJSON(vars.CONFIG).repo.owner }} + repositories: ${{ fromJSON(vars.CONFIG).repo.name }} - uses: actions/create-github-app-token@v1 + if: ${{ contains(fromJSON(vars.CONFIG).repo.owners, fromJSON(vars.CONFIG).repo.baseOwner) }} id: upstream-repo-token with: app-id: ${{ secrets.GITGITGADGET_GIT_GITHUB_APP_ID }} private-key: ${{ secrets.GITGITGADGET_GIT_GITHUB_APP_PRIVATE_KEY }} - owner: git - repositories: git + owner: ${{ fromJSON(vars.CONFIG).repo.baseOwner }} + repositories: ${{ fromJSON(vars.CONFIG).repo.name }} - uses: actions/create-github-app-token@v1 + if: ${{ contains(fromJSON(vars.CONFIG).repo.owners, fromJSON(vars.CONFIG).repo.testOwner) }} id: test-repo-token with: app-id: ${{ secrets.GITGITGADGET_GIT_GITHUB_APP_ID }} private-key: ${{ secrets.GITGITGADGET_GIT_GITHUB_APP_PRIVATE_KEY }} - owner: dscho - repositories: git + owner: ${{ fromJSON(vars.CONFIG).repo.testOwner }} + repositories: ${{ fromJSON(vars.CONFIG).repo.name }} - uses: gitgitgadget/gitgitgadget/handle-new-mails@v1 with: config: ${{ vars.CONFIG }} diff --git a/.github/workflows/handle-pr-comment.yml b/.github/workflows/handle-pr-comment.yml index 4104380..340f321 100644 --- a/.github/workflows/handle-pr-comment.yml +++ b/.github/workflows/handle-pr-comment.yml @@ -27,22 +27,24 @@ jobs: with: app-id: ${{ secrets.GITGITGADGET_GITHUB_APP_ID }} private-key: ${{ secrets.GITGITGADGET_GITHUB_APP_PRIVATE_KEY }} - owner: gitgitgadget - repositories: git + owner: ${{ fromJSON(vars.CONFIG).repo.owner }} + repositories: ${{ fromJSON(vars.CONFIG).repo.name }} - uses: actions/create-github-app-token@v1 + if: ${{ contains(fromJSON(vars.CONFIG).repo.owners, fromJSON(vars.CONFIG).repo.baseOwner) }} id: upstream-repo-token with: app-id: ${{ secrets.GITGITGADGET_GIT_GITHUB_APP_ID }} private-key: ${{ secrets.GITGITGADGET_GIT_GITHUB_APP_PRIVATE_KEY }} - owner: git - repositories: git + owner: ${{ fromJSON(vars.CONFIG).repo.baseOwner }} + repositories: ${{ fromJSON(vars.CONFIG).repo.name }} - uses: actions/create-github-app-token@v1 + if: ${{ contains(fromJSON(vars.CONFIG).repo.owners, fromJSON(vars.CONFIG).repo.testOwner) }} id: test-repo-token with: app-id: ${{ secrets.GITGITGADGET_GIT_GITHUB_APP_ID }} private-key: ${{ secrets.GITGITGADGET_GIT_GITHUB_APP_PRIVATE_KEY }} - owner: dscho - repositories: git + owner: ${{ fromJSON(vars.CONFIG).repo.testOwner }} + repositories: ${{ fromJSON(vars.CONFIG).repo.name }} - name: create a check run id: create-check-run run: | @@ -67,9 +69,9 @@ jobs: echo "repo=$repo" >> $GITHUB_OUTPUT export GH_TOKEN="$(case "$repo" in - gitgitgadget/git) echo "${{ steps.pr-repo-token.outputs.token }}";; - git/git) echo "${{ steps.upstream-repo-token.outputs.token }}";; - dscho/git) echo "${{ steps.test-repo-token.outputs.token }}";; + '${{ fromJSON(vars.CONFIG).repo.owner }}/${{ fromJSON(vars.CONFIG).repo.name }}') echo "${{ steps.pr-repo-token.outputs.token }}";; + '${{ fromJSON(vars.CONFIG).repo.baseOwner }}/${{ fromJSON(vars.CONFIG).repo.name }}') echo "${{ steps.upstream-repo-token.outputs.token }}";; + '${{ fromJSON(vars.CONFIG).repo.testOwner }}/${{ fromJSON(vars.CONFIG).repo.name }}') echo "${{ steps.test-repo-token.outputs.token }}";; *) echo "${{ secrets.GITHUB_TOKEN }}";; esac )" @@ -97,9 +99,9 @@ jobs: if: always() && steps.create-check-run.outputs.check_run_id != '' run: | export GH_TOKEN="$(case "${{ steps.create-check-run.outputs.repo }}" in - gitgitgadget/git) echo "${{ steps.pr-repo-token.outputs.token }}";; - git/git) echo "${{ steps.upstream-repo-token.outputs.token }}";; - dscho/git) echo "${{ steps.test-repo-token.outputs.token }}";; + '${{ fromJSON(vars.CONFIG).repo.owner }}/${{ fromJSON(vars.CONFIG).repo.name }}') echo "${{ steps.pr-repo-token.outputs.token }}";; + '${{ fromJSON(vars.CONFIG).repo.baseOwner }}/${{ fromJSON(vars.CONFIG).repo.name }}') echo "${{ steps.upstream-repo-token.outputs.token }}";; + '${{ fromJSON(vars.CONFIG).repo.testOwner }}/${{ fromJSON(vars.CONFIG).repo.name }}') echo "${{ steps.test-repo-token.outputs.token }}";; *) echo "${{ secrets.GITHUB_TOKEN }}";; esac )" diff --git a/.github/workflows/handle-pr-push.yml b/.github/workflows/handle-pr-push.yml index 4e05836..4e78716 100644 --- a/.github/workflows/handle-pr-push.yml +++ b/.github/workflows/handle-pr-push.yml @@ -27,22 +27,24 @@ jobs: with: app-id: ${{ secrets.GITGITGADGET_GITHUB_APP_ID }} private-key: ${{ secrets.GITGITGADGET_GITHUB_APP_PRIVATE_KEY }} - owner: gitgitgadget - repositories: git + owner: ${{ fromJSON(vars.CONFIG).repo.owner }} + repositories: ${{ fromJSON(vars.CONFIG).repo.name }} - uses: actions/create-github-app-token@v1 + if: ${{ contains(fromJSON(vars.CONFIG).repo.owners, fromJSON(vars.CONFIG).repo.baseOwner) }} id: upstream-repo-token with: app-id: ${{ secrets.GITGITGADGET_GIT_GITHUB_APP_ID }} private-key: ${{ secrets.GITGITGADGET_GIT_GITHUB_APP_PRIVATE_KEY }} - owner: git - repositories: git + owner: ${{ fromJSON(vars.CONFIG).repo.baseOwner }} + repositories: ${{ fromJSON(vars.CONFIG).repo.name }} - uses: actions/create-github-app-token@v1 + if: ${{ contains(fromJSON(vars.CONFIG).repo.owners, fromJSON(vars.CONFIG).repo.testOwner) }} id: test-repo-token with: app-id: ${{ secrets.GITGITGADGET_GIT_GITHUB_APP_ID }} private-key: ${{ secrets.GITGITGADGET_GIT_GITHUB_APP_PRIVATE_KEY }} - owner: dscho - repositories: git + owner: ${{ fromJSON(vars.CONFIG).repo.testOwner }} + repositories: ${{ fromJSON(vars.CONFIG).repo.name }} - name: create a check run id: create-check-run run: | @@ -65,9 +67,9 @@ jobs: echo "repo=$repo" >> $GITHUB_OUTPUT export GH_TOKEN="$(case "$repo" in - gitgitgadget/git) echo "${{ steps.pr-repo-token.outputs.token }}";; - git/git) echo "${{ steps.upstream-repo-token.outputs.token }}";; - dscho/git) echo "${{ steps.test-repo-token.outputs.token }}";; + '${{ fromJSON(vars.CONFIG).repo.owner }}/${{ fromJSON(vars.CONFIG).repo.name }}') echo "${{ steps.pr-repo-token.outputs.token }}";; + '${{ fromJSON(vars.CONFIG).repo.baseOwner }}/${{ fromJSON(vars.CONFIG).repo.name }}') echo "${{ steps.upstream-repo-token.outputs.token }}";; + '${{ fromJSON(vars.CONFIG).repo.testOwner }}/${{ fromJSON(vars.CONFIG).repo.name }}') echo "${{ steps.test-repo-token.outputs.token }}";; *) echo "${{ secrets.GITHUB_TOKEN }}";; esac )" @@ -92,9 +94,9 @@ jobs: if: always() && steps.create-check-run.outputs.check_run_id != '' run: | export GH_TOKEN="$(case "${{ steps.create-check-run.outputs.repo }}" in - gitgitgadget/git) echo "${{ steps.pr-repo-token.outputs.token }}";; - git/git) echo "${{ steps.upstream-repo-token.outputs.token }}";; - dscho/git) echo "${{ steps.test-repo-token.outputs.token }}";; + '${{ fromJSON(vars.CONFIG).repo.owner }}/${{ fromJSON(vars.CONFIG).repo.name }}') echo "${{ steps.pr-repo-token.outputs.token }}";; + '${{ fromJSON(vars.CONFIG).repo.baseOwner }}/${{ fromJSON(vars.CONFIG).repo.name }}') echo "${{ steps.upstream-repo-token.outputs.token }}";; + '${{ fromJSON(vars.CONFIG).repo.testOwner }}/${{ fromJSON(vars.CONFIG).repo.name }}') echo "${{ steps.test-repo-token.outputs.token }}";; *) echo "${{ secrets.GITHUB_TOKEN }}";; esac )" diff --git a/.github/workflows/update-mail-to-commit-notes.yml b/.github/workflows/update-mail-to-commit-notes.yml index 7491975..5937e64 100644 --- a/.github/workflows/update-mail-to-commit-notes.yml +++ b/.github/workflows/update-mail-to-commit-notes.yml @@ -19,8 +19,8 @@ jobs: with: app-id: ${{ secrets.GITGITGADGET_GITHUB_APP_ID }} private-key: ${{ secrets.GITGITGADGET_GITHUB_APP_PRIVATE_KEY }} - owner: gitgitgadget - repositories: git + owner: ${{ fromJSON(vars.CONFIG).repo.owner }} + repositories: ${{ fromJSON(vars.CONFIG).repo.name }} - uses: gitgitgadget/gitgitgadget/update-mail-to-commit-notes@v1 with: config: ${{ vars.CONFIG }} diff --git a/.github/workflows/update-prs.yml b/.github/workflows/update-prs.yml index e37dce3..1637aa3 100644 --- a/.github/workflows/update-prs.yml +++ b/.github/workflows/update-prs.yml @@ -18,22 +18,24 @@ jobs: with: app-id: ${{ secrets.GITGITGADGET_GITHUB_APP_ID }} private-key: ${{ secrets.GITGITGADGET_GITHUB_APP_PRIVATE_KEY }} - owner: gitgitgadget - repositories: git + owner: ${{ fromJSON(vars.CONFIG).repo.owner }} + repositories: ${{ fromJSON(vars.CONFIG).repo.name }} - uses: actions/create-github-app-token@v1 + if: ${{ contains(fromJSON(vars.CONFIG).repo.owners, fromJSON(vars.CONFIG).repo.baseOwner) }} id: upstream-repo-token with: app-id: ${{ secrets.GITGITGADGET_GIT_GITHUB_APP_ID }} private-key: ${{ secrets.GITGITGADGET_GIT_GITHUB_APP_PRIVATE_KEY }} - owner: git - repositories: git + owner: ${{ fromJSON(vars.CONFIG).repo.baseOwner }} + repositories: ${{ fromJSON(vars.CONFIG).repo.name }} - uses: actions/create-github-app-token@v1 + if: ${{ contains(fromJSON(vars.CONFIG).repo.owners, fromJSON(vars.CONFIG).repo.testOwner) }} id: test-repo-token with: app-id: ${{ secrets.GITGITGADGET_GIT_GITHUB_APP_ID }} private-key: ${{ secrets.GITGITGADGET_GIT_GITHUB_APP_PRIVATE_KEY }} - owner: dscho - repositories: git + owner: ${{ fromJSON(vars.CONFIG).repo.testOwner }} + repositories: ${{ fromJSON(vars.CONFIG).repo.name }} - uses: gitgitgadget/gitgitgadget/update-prs@v1 with: config: ${{ vars.CONFIG }} From de0ba986f270af2739dde33043f29907708a15a5 Mon Sep 17 00:00:00 2001 From: Johannes Schindelin Date: Mon, 1 Sep 2025 15:45:45 +0200 Subject: [PATCH 6/6] handle-pr-comment: stop hard-coding the SMTP user and host These should be taken from the project config which is now expected to be present as the `CONFIG` repository variable. Signed-off-by: Johannes Schindelin --- .github/workflows/handle-pr-comment.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/handle-pr-comment.yml b/.github/workflows/handle-pr-comment.yml index 340f321..9d4fe6a 100644 --- a/.github/workflows/handle-pr-comment.yml +++ b/.github/workflows/handle-pr-comment.yml @@ -91,8 +91,8 @@ jobs: pr-repo-token: ${{ steps.pr-repo-token.outputs.token }} upstream-repo-token: ${{ steps.upstream-repo-token.outputs.token }} test-repo-token: ${{ steps.test-repo-token.outputs.token }} - smtp-host: smtp.gmail.com - smtp-user: gitgitgadget@gmail.com + smtp-host: '${{ fromJSON(vars.CONFIG).mail.smtpHost }}' + smtp-user: '${{ fromJSON(vars.CONFIG).mail.smtpUser }}' smtp-pass: "${{ secrets.GITGITGADGET_SMTP_PASS }}" pr-comment-url: ${{ env.PR_COMMENT_URL }} - name: update the check run