diff options
Diffstat (limited to '.github/workflows/ci-check-only.yml')
| -rw-r--r-- | .github/workflows/ci-check-only.yml | 79 |
1 files changed, 70 insertions, 9 deletions
diff --git a/.github/workflows/ci-check-only.yml b/.github/workflows/ci-check-only.yml index 0519310..548026d 100644 --- a/.github/workflows/ci-check-only.yml +++ b/.github/workflows/ci-check-only.yml @@ -16,7 +16,6 @@ jobs: build, clippy, test, - arg-picker, markdown-code, examples, docs-refresh, @@ -27,15 +26,77 @@ jobs: - uses: actions/checkout@v7 - uses: actions-rust-lang/setup-rust-toolchain@v1 - - run: cargo ci --check-${{ matrix.item }} + - name: Configure git identity + run: | + git config --global user.email "foo@bar.sqz" + git config --global user.name "foo" - - name: Check translated docs structure consistency - if: matrix.item == 'markdown-code' - run: cargo ci --check-docs-structure + # Every check runs inside a git-lock / git-unlock pair: the final unlock + # doubles as the idempotency check, failing the job when the check left + # the working tree dirty (e.g. generated docs are out of date). + - name: Lock workspace for CI + run: cargo ci git-lock - - name: Upload docs test result on failure - if: failure() && matrix.item == 'markdown-code' + - name: Run check + id: check + shell: bash + run: | + case "${{ matrix.item }}" in + build) cargo ci build-check ;; + clippy) cargo ci clippy-check ;; + # arg-picker tests are covered by test-all through its + # mingling-ci.toml override. + test) cargo ci test-all ;; + # markdown-code also verifies the translated docs structure. + markdown-code) cargo ci markdown-check-all && cargo ci markdown-compare-all ;; + examples) cargo ci example-check ;; + docs-refresh) + cargo ci example-refresh + cargo ci docsify-refresh + cargo ci features-refresh + ;; + api-docs) cargo ci docs-check ;; + esac + continue-on-error: true + + - name: Unlock workspace (idempotency check) + if: always() + run: cargo ci git-unlock --show-diff + + - name: Fail when the check failed + if: steps.check.outcome == 'failure' + run: exit 1 + + # Collected reports are uploaded even on failure, so the Report job can + # render the failures. + - name: Upload collect reports + if: always() uses: actions/upload-artifact@v4 with: - name: docs-test-result-${{ matrix.os }}.md - path: .temp/DOCS-TEST-RESULT.md + name: ci-collect-${{ matrix.os }}-${{ matrix.item }} + path: .temp/reports/collect/ + if-no-files-found: ignore + + # Collects every matrix run's reports and renders the consolidated result.md + # into the job summary. Runs even when some checks failed, so the failures + # are still reported. + Report: + needs: [Check] + if: always() + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v7 + - uses: actions-rust-lang/setup-rust-toolchain@v1 + + - name: Download collect reports + uses: actions/download-artifact@v4 + with: + path: .temp/reports/collect + pattern: ci-collect-* + merge-multiple: true + + - name: Generate report + run: cargo ci report-collect + + - name: Publish report to step summary + run: cat .temp/reports/result.md >> "$GITHUB_STEP_SUMMARY" |
