diff --git a/.github/workflows/_check.yml b/.github/workflows/_check.yml deleted file mode 100644 index a6139c19..00000000 --- a/.github/workflows/_check.yml +++ /dev/null @@ -1,27 +0,0 @@ -on: - workflow_call: - outputs: - branch-pr: - description: The PR number if the branch is in one - value: ${{ jobs.pr.outputs.branch-pr }} - -jobs: - pr: - runs-on: "ubuntu-latest" - outputs: - branch-pr: ${{ steps.script.outputs.result }} - steps: - - uses: actions/github-script@v7 - id: script - if: github.event_name == 'push' - with: - script: | - const prs = await github.rest.pulls.list({ - owner: context.repo.owner, - repo: context.repo.repo, - head: context.repo.owner + ':${{ github.ref_name }}' - }) - if (prs.data.length) { - console.log(`::notice ::Skipping CI on branch push as it is already run in PR #${prs.data[0]["number"]}`) - return prs.data[0]["number"] - } diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f198a244..223b73ec 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -2,22 +2,19 @@ name: CI on: push: + branches: + - main + tags: + - '*' pull_request: jobs: - check: - uses: ./.github/workflows/_check.yml - lint: - needs: check - if: needs.check.outputs.branch-pr == '' uses: ./.github/workflows/_tox.yml with: tox: pre-commit test: - needs: check - if: needs.check.outputs.branch-pr == '' uses: ./.github/workflows/_test.yml with: python-version: dev @@ -26,8 +23,6 @@ jobs: CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} docs: - needs: check - if: needs.check.outputs.branch-pr == '' uses: ./.github/workflows/_docs.yml permissions: contents: write diff --git a/docs/explanations/decisions/0021-ci-only-pr.md b/docs/explanations/decisions/0021-ci-only-pr.md new file mode 100644 index 00000000..f5d555be --- /dev/null +++ b/docs/explanations/decisions/0021-ci-only-pr.md @@ -0,0 +1,24 @@ +# 21. Run CI on pull requests and main branch only + +Date: 2025-05-06 + +## Status + +Accepted + +## Context + +CI has been being run on branches that do not have open pull requests, which has: added spurious jobs to the organisation's compute limit; made workflow definitions more complex; made the results page harder to parse; and allowed known working development branches to become stale or forgotten. + +Running CI only on branches that have open pull requests will: reduce compute jobs created for code that is known to not be working; simplify workflow definitions; simplify the CI results page; encourage early creation of pull requests, adding visibility to development. + +Draft pull requests will still have CI jobs run, ensuring that code quality is maintained while allowing reviewers to ignore changes that are not ready for human review. + +## Decision + +CI will only be run on all PRs when changes are made, and on the main branch when PRs are merged into it: not on branches that do not have open PRs. +Opening a draft PR will allow CI to be run, with the understanding that the PR may not be ready for review. + +## Consequences + +The `check` job will be removed and CI will run on all PRs and on the `main` branch. diff --git "a/template/{% if git_platform==\"github.com\" %}.github{% endif %}/workflows/_check.yml" "b/template/{% if git_platform==\"github.com\" %}.github{% endif %}/workflows/_check.yml" deleted file mode 120000 index 9c0f79a5..00000000 --- "a/template/{% if git_platform==\"github.com\" %}.github{% endif %}/workflows/_check.yml" +++ /dev/null @@ -1 +0,0 @@ -../../../.github/workflows/_check.yml \ No newline at end of file diff --git "a/template/{% if git_platform==\"github.com\" %}.github{% endif %}/workflows/ci.yml.jinja" "b/template/{% if git_platform==\"github.com\" %}.github{% endif %}/workflows/ci.yml.jinja" index c00d4217..cf2f0799 100644 --- "a/template/{% if git_platform==\"github.com\" %}.github{% endif %}/workflows/ci.yml.jinja" +++ "b/template/{% if git_platform==\"github.com\" %}.github{% endif %}/workflows/ci.yml.jinja" @@ -5,19 +5,13 @@ on: pull_request: jobs: - check: - uses: ./.github/workflows/_check.yml lint: - needs: check - if: needs.check.outputs.branch-pr == '' uses: ./.github/workflows/_tox.yml with: tox: pre-commit,type-checking {% raw %} test: - needs: check - if: needs.check.outputs.branch-pr == '' strategy: matrix: runs-on: ["ubuntu-latest"] # can add windows-latest, macos-latest @@ -35,21 +29,15 @@ jobs: CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} {% endraw %}{% if docker %} container: - needs: check - if: needs.check.outputs.branch-pr == '' uses: ./.github/workflows/_container.yml permissions: contents: read packages: write {% endif %}{% if sphinx %} docs: - needs: check - if: needs.check.outputs.branch-pr == '' uses: ./.github/workflows/_docs.yml {% endif %} dist: - needs: check - if: needs.check.outputs.branch-pr == '' uses: ./.github/workflows/_dist.yml {% if pypi %} pypi: