Repository navigation
CI timings #1
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI timings | |
| on: | |
| schedule: | |
| - cron: "17 * * * *" | |
| workflow_dispatch: | |
| concurrency: | |
| group: ci-timings-${{ github.repository }} | |
| cancel-in-progress: false | |
| permissions: | |
| contents: read | |
| actions: read | |
| pull-requests: read | |
| jobs: | |
| report: | |
| name: Collect recent completed workflow attempts | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 10 | |
| steps: | |
| # Consume only API data and execute batch code from the trusted default branch. | |
| - uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0 | |
| with: | |
| ref: ${{ github.event.repository.default_branch }} | |
| persist-credentials: false | |
| - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 | |
| with: | |
| node-version-file: .nvmrc | |
| - name: Cache npm package downloads | |
| id: npm-cache | |
| continue-on-error: true | |
| uses: ./.github/actions/npm-cache | |
| - name: Diagnose missing and startup-failed PR CI | |
| continue-on-error: true | |
| env: | |
| GH_TOKEN: ${{ github.token }} | |
| CI_REPOSITORY: ${{ github.repository }} | |
| CI_REPOSITORY_ID: ${{ github.repository_id }} | |
| CI_DEFAULT_BRANCH: ${{ github.event.repository.default_branch }} | |
| run: node scripts/ci/pr-ci-health.mjs | |
| - name: Record queue, execution, and matched step timing | |
| continue-on-error: true | |
| env: | |
| GH_TOKEN: ${{ github.token }} | |
| CI_REPOSITORY: ${{ github.repository }} | |
| run: node scripts/ci/job-timings-batch.mjs | |
| - name: Upload CI timing artifacts | |
| if: always() && hashFiles('.cache/ci-job-timings/*') != '' | |
| continue-on-error: true | |
| uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 | |
| with: | |
| name: ci-job-timings-batch | |
| path: .cache/ci-job-timings/ | |
| include-hidden-files: true | |
| if-no-files-found: error | |
| overwrite: true | |
| retention-days: 14 | |
| - name: Install dependencies for static failure attribution | |
| id: failure-deps | |
| if: ${{ !cancelled() && hashFiles('.cache/ci-job-timings/batch-manifest.json') != '' }} | |
| continue-on-error: true | |
| run: npm ci | |
| - name: Attribute supported static failures against main | |
| if: ${{ !cancelled() && steps.failure-deps.outcome == 'success' && hashFiles('.cache/ci-job-timings/batch-manifest.json') != '' }} | |
| continue-on-error: true | |
| env: | |
| GH_TOKEN: ${{ github.token }} | |
| CI_REPOSITORY: ${{ github.repository }} | |
| CI_DEFAULT_BRANCH: ${{ github.event.repository.default_branch }} | |
| run: node scripts/ci/failure-report.mjs | |
| - name: Upload CI health and failure diagnostics | |
| if: ${{ !cancelled() }} | |
| continue-on-error: true | |
| uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 | |
| with: | |
| name: ci-health-diagnostics | |
| path: | | |
| .cache/ci-pr-health/ | |
| .cache/ci-failures/ | |
| include-hidden-files: true | |
| if-no-files-found: warn | |
| retention-days: 14 |