|
12 | 12 | jobs: |
13 | 13 | build-packages: |
14 | 14 | if: ${{ github.event_name == 'workflow_dispatch' || github.event.workflow_run.conclusion == 'success' }} |
| 15 | + permissions: |
| 16 | + id-token: write |
| 17 | + contents: write |
15 | 18 | strategy: |
16 | 19 | matrix: |
17 | 20 | include: |
18 | 21 | - platform: linux |
19 | 22 | arch: x64 |
| 23 | + bazel_arch: amd64 |
20 | 24 | runs_on: ubuntu-22.04 |
21 | 25 | - platform: linux |
22 | 26 | arch: arm64 |
| 27 | + bazel_arch: arm64 |
23 | 28 | runs_on: ubuntu-22.04-arm |
24 | 29 | runs-on: ${{ matrix.runs_on }} |
25 | 30 |
|
|
75 | 80 | files: packages_${{matrix.arch}}.tar.gz |
76 | 81 | env: |
77 | 82 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
| 83 | + |
| 84 | + # S3 upload is restricted to the protected main branch only. The IAM role |
| 85 | + # (push_node_gyp_packages) trusts only refs/heads/main via OIDC. To upload |
| 86 | + # packages to S3 after a Node upgrade, trigger workflow_dispatch from main. |
| 87 | + - name: Configure AWS credentials |
| 88 | + if: github.ref == 'refs/heads/main' |
| 89 | + uses: aws-actions/configure-aws-credentials@v4 |
| 90 | + with: |
| 91 | + aws-region: us-east-1 |
| 92 | + role-to-assume: arn:aws:iam::403483446840:role/autogen_github_actions_beta_push_node_gyp_packages |
| 93 | + |
| 94 | + - name: Upload packages to S3 |
| 95 | + if: github.ref == 'refs/heads/main' |
| 96 | + run: | |
| 97 | + NODE_MAJOR=$(echo "${{ env.NODE_VERSION }}" | sed 's/^v//' | cut -d. -f1) |
| 98 | + SHA256=$(sha256sum "packages_${{ matrix.arch }}.tar.gz" | awk '{print $1}') |
| 99 | + SHORT_HASH=${SHA256:0:8} |
| 100 | + S3_KEY="node-gyp/packages_${{ matrix.bazel_arch }}_node${NODE_MAJOR}-${SHORT_HASH}.tar.gz" |
| 101 | + echo "Uploading packages_${{ matrix.arch }}.tar.gz to s3://asana-oss-cache/${S3_KEY}" |
| 102 | + aws s3 cp "packages_${{ matrix.arch }}.tar.gz" "s3://asana-oss-cache/${S3_KEY}" --acl public-read |
| 103 | + echo "" |
| 104 | + echo "=== Update tools_repositories.bzl in codez ===" |
| 105 | + echo " name = \"node_gyp_packages_${{ matrix.bazel_arch }}_node${NODE_MAJOR}\"," |
| 106 | + echo " urls = [\"https://asana-oss-cache.s3.us-east-1.amazonaws.com/${S3_KEY}\"]," |
| 107 | + echo " sha256 = \"${SHA256}\"," |
0 commit comments