diff --git a/.github/workflows/check.yaml b/.github/workflows/check.yaml index 730013b..e94a683 100644 --- a/.github/workflows/check.yaml +++ b/.github/workflows/check.yaml @@ -16,57 +16,31 @@ permissions: jobs: test: name: ๐Ÿงช Test - runs-on: ubuntu-26.04 - strategy: - fail-fast: false - matrix: - env: - - "3.15" - - "3.15t" - - "3.14" - - "3.13" - - "3.12" - - "3.11" - - type - - dev - - pkg_meta - steps: - - name: ๐Ÿ“ฅ Check out code - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: - fetch-depth: 0 - persist-credentials: false - - name: ๐Ÿ Install uv - uses: astral-sh/setup-uv@07a047e608db84b3d8c06cd9a7c7dcc9c355c18e # v10.3.2 - with: - version: latest-known - python-version: "3.15" - enable-cache: false - cache-dependency-glob: "pyproject.toml" - github-token: ${{ secrets.GITHUB_TOKEN }} - - name: ๐Ÿ“ฆ Install tox - run: uv tool install --python-preference only-managed --python 3.15 tox --with tox-uv - - name: ๐Ÿ Install Python - if: startsWith(matrix.env, '3.') && matrix.env != '3.15' - env: - MATRIX_ENV: ${{ matrix.env }} - run: uv python install --python-preference only-managed "$MATRIX_ENV" - - name: ๐Ÿ“ฆ Set up test suite - env: - MATRIX_ENV: ${{ matrix.env }} - run: tox run -vv --notest --skip-missing-interpreters false -e "$MATRIX_ENV" - - name: ๐Ÿงช Run test suite - run: tox run --skip-pkg-install -e "$MATRIX_ENV" - env: - MATRIX_ENV: ${{ matrix.env }} - PYTEST_ADDOPTS: "-vv --durations=5" + uses: tox-dev/github-workflows/.github/workflows/check.yaml@bceb5c005e19823dc8835f536f53f172ae223927 # 6.5.0 + permissions: + contents: read + with: + pytest-addopts: "-vv --durations=5" + include: | + [ + {"env": "3.15"}, + {"env": "3.15t", "python": "3.15t"}, + {"env": "3.14", "python": "3.14"}, + {"env": "3.13", "python": "3.13"}, + {"env": "3.12", "python": "3.12"}, + {"env": "3.11", "python": "3.11"}, + {"env": "type"}, + {"env": "dev"}, + {"env": "pkg_meta"} + ] gate: name: ๐Ÿšฆ Required checks pass if: ${{ !cancelled() }} # codespell:ignore cancelled needs: [test] runs-on: ubuntu-26.04 + permissions: {} steps: - name: ๐Ÿšฆ Require all needed jobs to pass - env: - NEEDS_JSON: ${{ toJSON(needs) }} - run: jq -e 'all(to_entries[]; .value.result == "success")' <<<"$NEEDS_JSON" + uses: tox-dev/github-workflows/required-checks@bceb5c005e19823dc8835f536f53f172ae223927 # 6.5.0 + with: + needs: ${{ toJSON(needs) }} diff --git a/.github/workflows/codeql.yaml b/.github/workflows/codeql.yaml index 710a8e8..3cb4dc3 100644 --- a/.github/workflows/codeql.yaml +++ b/.github/workflows/codeql.yaml @@ -7,35 +7,16 @@ on: schedule: - cron: "0 9 * * 2" concurrency: - group: codeql-${{ github.ref }} + group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true permissions: {} jobs: analyze: - name: ๐Ÿ›ก๏ธ Analyze ${{ matrix.language }} - runs-on: ubuntu-26.04 + name: ๐Ÿ›ก๏ธ Analyze + uses: tox-dev/github-workflows/.github/workflows/codeql.yaml@bceb5c005e19823dc8835f536f53f172ae223927 # 6.5.0 permissions: contents: read security-events: write - strategy: - fail-fast: false - matrix: - language: [actions, python] - steps: - - name: ๐Ÿ“ฅ Check out code - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: - persist-credentials: false - - name: ๐Ÿ›ก๏ธ Initialize CodeQL - uses: github/codeql-action/init@9b3254085494b55a0f7c4c2b3d2d52cc712ce370 # v4.39.1 - with: - languages: ${{ matrix.language }} - build-mode: none - queries: security-extended - config: | - paths-ignore: - - tests - - name: ๐Ÿ›ก๏ธ Analyze - uses: github/codeql-action/analyze@9b3254085494b55a0f7c4c2b3d2d52cc712ce370 # v4.39.1 - with: - category: "/language:${{ matrix.language }}" + with: + languages: '["actions","python"]' + paths-ignore: '["tests"]' diff --git a/.github/workflows/news.yaml b/.github/workflows/news.yaml index 1a71c84..88f1eb4 100644 --- a/.github/workflows/news.yaml +++ b/.github/workflows/news.yaml @@ -16,15 +16,15 @@ jobs: fetch-depth: 0 persist-credentials: false - name: ๐Ÿ Install uv - uses: astral-sh/setup-uv@07a047e608db84b3d8c06cd9a7c7dcc9c355c18e # v10.3.2 + uses: astral-sh/setup-uv@68559e99cc807c1eb7e9238fd43a15bba460eec2 # v10.3.3 with: version: latest-known python-version: "3.15" enable-cache: false - name: ๐Ÿ“ฆ Install locked release tools - uses: tox-dev/github-workflows/install-locked-tools@99024bcb5749b178c5514f86acfcf1e80c865e75 # 6.3.0 + uses: tox-dev/github-workflows/install-locked-tools@bceb5c005e19823dc8835f536f53f172ae223927 # 6.5.0 with: groups: release-news venv: ${{ runner.temp }}/release-tools - name: ๐Ÿ” Validate news fragments - uses: tox-dev/github-workflows/validate-news@99024bcb5749b178c5514f86acfcf1e80c865e75 # 6.3.0 + uses: tox-dev/github-workflows/validate-news@bceb5c005e19823dc8835f536f53f172ae223927 # 6.5.0 diff --git a/.github/workflows/prepare-release.yaml b/.github/workflows/prepare-release.yaml index 2478ce6..49410a3 100644 --- a/.github/workflows/prepare-release.yaml +++ b/.github/workflows/prepare-release.yaml @@ -18,7 +18,7 @@ permissions: jobs: prepare: name: ๐Ÿท๏ธ Prepare Towncrier release - uses: tox-dev/github-workflows/.github/workflows/prepare-towncrier-release.yaml@57a765127aae73adf7d0e24a7fe0f067f2d3ea3e # 6.2.1 + uses: tox-dev/github-workflows/.github/workflows/prepare-towncrier-release.yaml@bceb5c005e19823dc8835f536f53f172ae223927 # 6.5.0 with: bump: ${{ inputs.bump }} secrets: diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 40fd037..d8dab4e 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -10,82 +10,23 @@ concurrency: jobs: build: name: ๐Ÿ—๏ธ Build - uses: tox-dev/github-workflows/.github/workflows/validate-python-release.yaml@57a765127aae73adf7d0e24a7fe0f067f2d3ea3e # 6.2.1 + uses: tox-dev/github-workflows/.github/workflows/validate-python-release.yaml@bceb5c005e19823dc8835f536f53f172ae223927 # 6.5.0 permissions: contents: read - previous-tag: - name: ๐Ÿท๏ธ Select previous tag - runs-on: ubuntu-26.04 - permissions: - contents: read - outputs: - previous: ${{ steps.select.outputs.previous }} - steps: - - name: ๐Ÿ“ฅ Check out code - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: - fetch-depth: 0 - persist-credentials: false - - name: ๐Ÿ Install uv - uses: astral-sh/setup-uv@07a047e608db84b3d8c06cd9a7c7dcc9c355c18e # v10.3.2 - with: - version: latest-known - python-version: "3.15" - enable-cache: false - - name: ๐Ÿ“ฆ Install locked release tools - uses: tox-dev/github-workflows/install-locked-tools@57a765127aae73adf7d0e24a7fe0f067f2d3ea3e # 6.2.1 - with: - groups: release-notes - venv: ${{ runner.temp }}/release-tools - - name: ๐Ÿท๏ธ Select previous tag - id: select - uses: tox-dev/github-workflows/select-previous-tag@57a765127aae73adf7d0e24a7fe0f067f2d3ea3e # 6.2.1 - with: - tag: ${{ github.ref_name }} - github-notes: + notes: name: ๐Ÿ“ Render GitHub Release notes - needs: previous-tag - runs-on: ubuntu-26.04 + uses: tox-dev/github-workflows/.github/workflows/release-notes.yaml@bceb5c005e19823dc8835f536f53f172ae223927 # 6.5.0 permissions: contents: read - outputs: - artifact-id: ${{ steps.upload.outputs.artifact-id }} - steps: - - name: ๐Ÿ“ฅ Check out code - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: - fetch-depth: 0 - persist-credentials: false - - name: ๐Ÿ Install uv - uses: astral-sh/setup-uv@07a047e608db84b3d8c06cd9a7c7dcc9c355c18e # v10.3.2 - with: - version: latest-known - python-version: "3.15" - enable-cache: false - - name: ๐Ÿ“ฆ Install locked release tools - uses: tox-dev/github-workflows/install-locked-tools@57a765127aae73adf7d0e24a7fe0f067f2d3ea3e # 6.2.1 - with: - groups: release-notes - venv: ${{ runner.temp }}/release-tools - - name: ๐Ÿ“ Render release notes - uses: tox-dev/github-workflows/render-release-notes@57a765127aae73adf7d0e24a7fe0f067f2d3ea3e # 6.2.1 - with: - tag: ${{ github.ref_name }} - previous: ${{ needs.previous-tag.outputs.previous }} - changelog: CHANGELOG.md - artifact-url: https://pypi.org/project/devpi-process/${{ github.ref_name }}/ - - name: ๐Ÿ“ค Upload release notes - id: upload - uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2 - with: - name: github-release-notes - path: ${{ runner.temp }}/release-notes.md - if-no-files-found: error + with: + tag: ${{ github.ref_name }} + changelog: CHANGELOG.md + artifact-url: https://pypi.org/project/devpi-process/${{ github.ref_name }}/ release: name: ๐Ÿš€ Publish to PyPI needs: - build - - github-notes + - notes runs-on: ubuntu-26.04 environment: name: release @@ -102,56 +43,15 @@ jobs: uses: pypa/gh-action-pypi-publish@7245906fb61fa33a13554f9d5fb856fe61758086 # v1.14.3 with: packages-dir: dist - verify-pypi: - name: ๐Ÿ” Verify PyPI distributions - needs: - - build - - github-notes - - release - runs-on: ubuntu-26.04 - permissions: - contents: read - steps: - - name: ๐Ÿ“ฅ Check out code - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: - persist-credentials: false - - name: ๐Ÿ“ฉ Download distributions - uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2 - with: - artifact-ids: ${{ needs.build.outputs.distributions-artifact-id }} - path: dist/ - - name: ๐Ÿ Install uv - uses: astral-sh/setup-uv@07a047e608db84b3d8c06cd9a7c7dcc9c355c18e # v10.3.2 - with: - version: latest-known - python-version: "3.15" - enable-cache: false - - name: ๐Ÿ” Verify PyPI artifacts - uses: tox-dev/github-workflows/reconcile-pypi-artifacts@57a765127aae73adf7d0e24a7fe0f067f2d3ea3e # 6.2.1 - with: - project: devpi-process - version: ${{ github.ref_name }} - dist: dist github-release: name: ๐Ÿš€ Publish GitHub Release - needs: [verify-pypi, github-notes] - runs-on: ubuntu-26.04 - environment: release + needs: [build, release, notes] + uses: tox-dev/github-workflows/.github/workflows/github-release.yaml@bceb5c005e19823dc8835f536f53f172ae223927 # 6.5.0 permissions: contents: write # GitHub Release creation and edits require this permission. - steps: - - name: ๐Ÿ“ฉ Download release notes - uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2 - with: - artifact-ids: ${{ needs.github-notes.outputs.artifact-id }} - path: ${{ runner.temp }} - - name: ๐Ÿš€ Publish GitHub release - uses: tox-dev/github-workflows/publish-github-release@57a765127aae73adf7d0e24a7fe0f067f2d3ea3e # 6.2.1 - env: - GH_TOKEN: ${{ github.token }} - with: - tag: ${{ github.ref_name }} - commit: ${{ github.sha }} - title: ${{ github.ref_name }} - notes-file: ${{ runner.temp }}/release-notes.md + with: + project: devpi-process + version: ${{ github.ref_name }} + tag: ${{ github.ref_name }} + artifact-pattern: python-package-distributions + notes-artifact-id: ${{ needs.notes.outputs.artifact-id }} diff --git a/.github/workflows/scorecard.yaml b/.github/workflows/scorecard.yaml index e4e9cc4..d5d6f65 100644 --- a/.github/workflows/scorecard.yaml +++ b/.github/workflows/scorecard.yaml @@ -23,4 +23,4 @@ jobs: pull-requests: read # read reviews for the Code-Review check security-events: write # upload the SARIF results to code scanning statuses: read # read commit statuses for the CI-Tests check - uses: tox-dev/github-workflows/.github/workflows/scorecard.yaml@cfb6d637a10b70da576575790eb3c806f57cd0b5 + uses: tox-dev/github-workflows/.github/workflows/scorecard.yaml@bceb5c005e19823dc8835f536f53f172ae223927 # 6.5.0 diff --git a/.github/workflows/upgrade-release-tools.yaml b/.github/workflows/upgrade-release-tools.yaml index 24fa948..82deeff 100644 --- a/.github/workflows/upgrade-release-tools.yaml +++ b/.github/workflows/upgrade-release-tools.yaml @@ -10,7 +10,7 @@ concurrency: jobs: upgrade: name: ๐Ÿ”€ Upgrade release tools - uses: tox-dev/github-workflows/.github/workflows/upgrade-release-tools.yaml@57a765127aae73adf7d0e24a7fe0f067f2d3ea3e # 6.2.1 + uses: tox-dev/github-workflows/.github/workflows/upgrade-release-tools.yaml@bceb5c005e19823dc8835f536f53f172ae223927 # 6.5.0 permissions: contents: read secrets: