From 84b3d0bca9833736003f4b5c183b2d54ba05a4b6 Mon Sep 17 00:00:00 2001 From: Claas Augner Date: Tue, 8 Sep 2026 10:36:14 +0200 Subject: [PATCH] ci(pr-review-companion): run independent steps in parallel Use the GitHub Actions `parallel` step group to overlap independent, network-bound steps instead of running them serially: - the artifact download and the `mdn/content` checkout, - the status update, GCP authentication, and Node setup. The checkout is no longer gated on `HAS_ARTIFACT`, as it now precedes the `Check for artifacts` step. --- .github/workflows/pr-review-companion.yml | 81 ++++++++++++----------- 1 file changed, 41 insertions(+), 40 deletions(-) diff --git a/.github/workflows/pr-review-companion.yml b/.github/workflows/pr-review-companion.yml index ba0659ed66fbee3..6c95e935a582f2e 100644 --- a/.github/workflows/pr-review-companion.yml +++ b/.github/workflows/pr-review-companion.yml @@ -59,38 +59,53 @@ jobs: STATUS_CONTEXT: pr-review-companion STATUS_TARGET: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} steps: - - name: Download artifact - uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 - with: - pattern: build - path: build - merge-multiple: true - github-token: ${{ secrets.GITHUB_TOKEN }} - run-id: ${{ github.event.workflow_run.id }} + - parallel: + - name: Download artifact + uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 + with: + pattern: build + path: build + merge-multiple: true + github-token: ${{ secrets.GITHUB_TOKEN }} + run-id: ${{ github.event.workflow_run.id }} + + - name: Checkout (mdn/content) + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + with: + path: content + persist-credentials: false - name: Check for artifacts id: check if: hashFiles('build/') != '' run: echo "HAS_ARTIFACT=true" >> "$GITHUB_OUTPUT" - - name: Mark status as pending - if: steps.check.outputs.HAS_ARTIFACT - env: - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: | - gh api "$STATUS_PATH" \ - -f state=pending \ - -f context="$STATUS_CONTEXT" \ - -f description='Review deployment pending' \ - -f target_url="$STATUS_TARGET" - - - name: Authenticate with GCP - if: steps.check.outputs.HAS_ARTIFACT - uses: google-github-actions/auth@7c6bc770dae815cd3e89ee6cdf493a5fab2cc093 # v3.0.0 - with: - token_format: access_token - service_account: deploy-mdn-review-content@${{ secrets.GCP_PROJECT_NAME }}.iam.gserviceaccount.com - workload_identity_provider: projects/${{ secrets.WIP_PROJECT_ID }}/locations/global/workloadIdentityPools/github-actions/providers/github-actions + - parallel: + - name: Mark status as pending + if: steps.check.outputs.HAS_ARTIFACT + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + gh api "$STATUS_PATH" \ + -f state=pending \ + -f context="$STATUS_CONTEXT" \ + -f description='Review deployment pending' \ + -f target_url="$STATUS_TARGET" + + - name: Authenticate with GCP + if: steps.check.outputs.HAS_ARTIFACT + uses: google-github-actions/auth@7c6bc770dae815cd3e89ee6cdf493a5fab2cc093 # v3.0.0 + with: + token_format: access_token + service_account: deploy-mdn-review-content@${{ secrets.GCP_PROJECT_NAME }}.iam.gserviceaccount.com + workload_identity_provider: projects/${{ secrets.WIP_PROJECT_ID }}/locations/global/workloadIdentityPools/github-actions/providers/github-actions + + - name: Setup (mdn/content) + uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 + if: steps.check.outputs.HAS_ARTIFACT + with: + node-version-file: "content/.nvmrc" + package-manager-cache: false - name: Setup gcloud if: steps.check.outputs.HAS_ARTIFACT @@ -109,20 +124,6 @@ jobs: concurrency: 500 process_gcloudignore: false - - name: Checkout (mdn/content) - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - if: steps.check.outputs.HAS_ARTIFACT - with: - path: content - persist-credentials: false - - - name: Setup (mdn/content) - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 - if: steps.check.outputs.HAS_ARTIFACT - with: - node-version-file: "content/.nvmrc" - package-manager-cache: false - - name: Install (mdn/content) if: steps.check.outputs.HAS_ARTIFACT env: