--- name: Test & release 'on': - pull_request - push concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: ${{ github.ref != format('refs/heads/{0}', github.event.repository.default_branch) }} jobs: should-run: name: Prep / Should run runs-on: ubuntu-latest timeout-minutes: 5 outputs: should-run: ${{ steps.action.outputs.should-run }} steps: - id: action # yamllint disable-line rule:line-length uses: techneg-it/should-workflow-run@eff19348eb884f57e05bc6f05ae48ece3af14714 # v1.0.1 pre-commit: name: Lint / `pre-commit` needs: should-run if: fromJSON(needs.should-run.outputs.should-run) container: techneg/ci-pre-commit:v2.5.19@sha256:64cb1f774a3d6abdd498f6be4b3dbe261f821e1dd088c00c23504f39d0c1cf03 runs-on: ubuntu-latest timeout-minutes: 10 steps: - run: | # Needed because of bug #2031 in `actions/checkout` git config --global --add safe.directory "$GITHUB_WORKSPACE" - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 with: fetch-depth: 0 fetch-tags: true filter: tree:0 - name: Export `CI_CACHE_ID` from container run: echo "CI_CACHE_ID=$(cat /.ci_cache_id)" >> $GITHUB_ENV - uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: path: ~/.cache/pre-commit key: "${{ env.CI_CACHE_ID }}|\ ${{ hashFiles('.pre-commit-config.yaml') }}" restore-keys: | ${{ env.CI_CACHE_ID }}| - name: Build cache run: | pre-commit gc echo "Installing hook environments..." time -f "Hook installation took %E" pre-commit install-hooks - name: Run `pre-commit` run: | pre-commit run --all-files --color always --verbose pre-commit run --color always --hook-stage manual --verbose commitlint-ci results: name: Release / Collect results permissions: contents: write issues: write pull-requests: write checks: read container: techneg/ci-semantic-release:v1.2.17@sha256:4db8d4b3b1451131ce77bd857254de2f3c5579172955b2a6a2d4ec4326789196 runs-on: ubuntu-latest timeout-minutes: 15 steps: - run: | # Needed due to bug actions/checkout#2031 git config --global --add safe.directory "$GITHUB_WORKSPACE" - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 # yamllint disable-line rule:line-length - uses: poseidon/wait-for-status-checks@899c768d191b56eef585c18f8558da19e1f3e707 # v0.6.0 with: ignore: > Release / Collect results ignore_pattern: ^GitLab CI token: ${{ secrets.GITHUB_TOKEN }} - name: Run `semantic-release` env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} MAINTAINER_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | semantic-release --dry-run - run: echo "::notice ::Workflow success!"