diff --git a/.copier-answers.yml b/.copier-answers.yml index 0374019c..cc008633 100644 --- a/.copier-answers.yml +++ b/.copier-answers.yml @@ -1,5 +1,5 @@ # Changes here will be overwritten by Copier -_commit: v0.0.39 +_commit: v0.0.40 _src_path: gh:LabAutomationAndScreening/copier-base-template.git description: Copier template for creating Python libraries and executables python_ci_versions: diff --git a/.github/workflows/dependabot-post-update.yaml b/.github/workflows/dependabot-post-update.yaml index 68da3da2..4a6e7f3f 100644 --- a/.github/workflows/dependabot-post-update.yaml +++ b/.github/workflows/dependabot-post-update.yaml @@ -1,6 +1,7 @@ name: Dependabot Post-Update permissions: - contents: write # grant write access so we can push commits + contents: write # so the commit can be pushed + actions: write # so createWorkflowDispatch can be invoked on: pull_request: types: [opened, synchronize] @@ -33,8 +34,25 @@ jobs: # only commit if there are changes if ! git diff --quiet; then git add . - git commit -m "chore: apply post-Dependabot script changes" + git commit -m "chore: apply post-Dependabot script changes [dependabot skip]" git push origin HEAD:${{ github.event.pull_request.head.ref }} else echo "No changes to commit" fi + + - name: Dispatch CI on PR branch # pushes done by GITHUB_TOKEN don't trigger workflows, so we have to restart the CI job manually, see https://docs.github.com/en/actions/using-workflows/triggering-a-workflow#triggering-a-workflow-from-a-workflow + uses: actions/github-script@v7.0.1 + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + script: | + const run = context.payload.workflow_run; + const pr = run.pull_requests[0]; + if (!pr) { + throw new Error("No pull request linked to this workflow_run event; aborting dispatch."); + } + await github.actions.createWorkflowDispatch({ + owner: context.repo.owner, + repo: context.repo.repo, + workflow_id: "ci.yaml", + ref: run.head_branch, + }); diff --git a/extensions/context.py b/extensions/context.py index 7623a061..f0186b7c 100644 --- a/extensions/context.py +++ b/extensions/context.py @@ -49,6 +49,7 @@ def hook(self, context: dict[Any, Any]) -> dict[Any, Any]: context["gha_cache"] = "v4.2.2" context["gha_upload_artifact"] = "v4.6.2" context["gha_download_artifact"] = "v4.2.1" + context["gha_github_script"] = "v7.0.1" context["gha_setup_buildx"] = "v3.10.0" context["buildx_version"] = "v0.22.0" context["gha_docker_build_push"] = "v6.15.0" diff --git a/template/.github/workflows/dependabot-post-update.yaml b/template/.github/workflows/dependabot-post-update.yaml index 68da3da2..4a6e7f3f 100644 --- a/template/.github/workflows/dependabot-post-update.yaml +++ b/template/.github/workflows/dependabot-post-update.yaml @@ -1,6 +1,7 @@ name: Dependabot Post-Update permissions: - contents: write # grant write access so we can push commits + contents: write # so the commit can be pushed + actions: write # so createWorkflowDispatch can be invoked on: pull_request: types: [opened, synchronize] @@ -33,8 +34,25 @@ jobs: # only commit if there are changes if ! git diff --quiet; then git add . - git commit -m "chore: apply post-Dependabot script changes" + git commit -m "chore: apply post-Dependabot script changes [dependabot skip]" git push origin HEAD:${{ github.event.pull_request.head.ref }} else echo "No changes to commit" fi + + - name: Dispatch CI on PR branch # pushes done by GITHUB_TOKEN don't trigger workflows, so we have to restart the CI job manually, see https://docs.github.com/en/actions/using-workflows/triggering-a-workflow#triggering-a-workflow-from-a-workflow + uses: actions/github-script@v7.0.1 + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + script: | + const run = context.payload.workflow_run; + const pr = run.pull_requests[0]; + if (!pr) { + throw new Error("No pull request linked to this workflow_run event; aborting dispatch."); + } + await github.actions.createWorkflowDispatch({ + owner: context.repo.owner, + repo: context.repo.repo, + workflow_id: "ci.yaml", + ref: run.head_branch, + });