/
githubmirror
/
lerna
Обзор
Документация
Войти
/
githubmirror
/
lerna
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
.github/workflows/other-node-versions.yml
226 строк
9 KB
AI-JamesHenry
chore: adopt node 26 and npm 12 (#4393)
14 июл 2026, 16:57
Не верифицирован
14 июл 2026, 16:57
69fd0fa
Код
Авторство
О чём код?
name: Other Node Versions on: workflow_dispatch: schedule: # Every day at 7:30am UTC - cron: "30 7 * * *" concurrency: group: ${{ github.workflow }}-${{ github.event.number || github.ref }} cancel-in-progress: true env: NX_CLOUD_ACCESS_TOKEN: ${{ secrets.NX_CLOUD_ACCESS_TOKEN }} NX_VERBOSE_LOGGING: false COREPACK_ENABLE_AUTO_PIN: "0" COREPACK_ENABLE_STRICT: "0" # Minimal permissions by default permissions: contents: read jobs: set-node-versions: name: Set Node Versions runs-on: ubuntu-latest outputs: node-versions: ${{ steps.node-matrix.outputs.node-versions }} steps: - name: Set node matrix id: node-matrix # These versions intentionally do not contain our primary major version because that has already been tested by ci.yml run: | NODE_VERSIONS_JSON_ARRAY=$(node -e "console.log(JSON.stringify(['22.13.0', '24']));") echo $NODE_VERSIONS_JSON_ARRAY echo "node-versions=$NODE_VERSIONS_JSON_ARRAY" >> $GITHUB_OUTPUT main: name: Nx Cloud - Main Job - node-${{ matrix.node }} needs: set-node-versions runs-on: ubuntu-latest env: NX_CI_EXECUTION_ENV: linux-node-${{ matrix.node }} strategy: # Do not kill all versions of node just because one version failed fail-fast: false matrix: node: ${{ fromJson(needs.set-node-versions.outputs.node-versions) }} steps: - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5 with: fetch-depth: 0 - name: Install node v${{ matrix.node }} and dependencies uses: ./.github/actions/install-node-and-dependencies with: node-version: ${{ matrix.node }} - name: Remove the volta key from package.json to ensure the explicitly installed version is respected run: | jq 'del(.volta)' package.json > package.json.tmp mv package.json.tmp package.json - name: Enable corepack run: corepack enable shell: bash - name: Install pnpm v8 run: corepack install -g pnpm@8 shell: bash - name: Print installed node, npm, yarn, pnpm and bun versions run: | node --version npm --version yarn --version pnpm --version bun --version shell: bash - name: Configure git metadata run: | git config --global user.email test@example.com git config --global user.name "Tester McPerson" # - name: Generate and configure GPG for signing commits and tags in E2E tests # run: | # # Generate a GPG key for test@example.com and store the output from stderr # GPG_OUTPUT=$(echo "Key-Type: default # Key-Length: 2048 # Subkey-Type: default # Subkey-Length: 2048 # Name-Real: Tester McPerson # Name-Email: test@example.com # Expire-Date: 0 # %no-protection" | gpg --pinentry-mode loopback --batch --generate-key 2>&1) # # Find and extract the revocation file path from sdterr # REVOCATION_FILE=$(echo "$GPG_OUTPUT" | grep '.rev' | tr '\n' ' ' | awk -F "'" '{print $4}') # # Get the GPG key ID and the full fingerprint # export GPG_KEY_ID=$(gpg --list-secret-keys --keyid-format LONG | grep sec | awk '{print $2}' | cut -d'/' -f2) # export GPG_FULL_KEY_ID=$(gpg --list-secret-keys --keyid-format LONG | grep "$GPG_KEY_ID" | grep -v "sec" | awk '{print $1}' | cut -d'/' -f2) # # Export fingerprint and the path to the revocation file to GITHUB_ENV # # This allows the last step in this job to revoke and delete the key # echo "GPG_FULL_KEY_ID=$GPG_FULL_KEY_ID" >> $GITHUB_ENV # echo "REVOCATION_FILE=$REVOCATION_FILE" >> $GITHUB_ENV # # Setup git signing for commits and tags # git config commit.gpgsign true # git config tag.gpgsign true # git config --global user.signingkey $GPG_KEY_ID - name: Run parallel distributed builds and tests on each node version uses: jameshenry/parallel-bash-commands@943dfd1eebfab8bbf19782c47a85c9ca7e8d245c # v1 with: cmd1: npx nx run-many -t build --parallel=3 cmd2: npx nx run-many -t test --parallel=3 --maxWorkers=2 cmd3: npx nx run integration:integration --maxWorkers=2 # e2e tests for everything except the primary task runner - run: PUBLISHED_VERSION=999.9.9-e2e.0 npx nx run-many --t e2e --parallel=1 - name: Run e2e tests for task-runner run: | # We do not want the automatic Github Actions grouping to be applied to the e2e tests, or the snapshots won't match local unset GITHUB_ACTIONS npx nx prepare-for-e2e e2e-run-task-runner && e2e/run/task-runner/src/run-tests.sh shell: bash env: # Silently disable nx cloud for task runner e2e (using NX_NO_CLOUD produces a warning log) NX_CLOUD_ACCESS_TOKEN: "" NX_CLOUD_DISTRIBUTED_EXECUTION: false - name: Stop all running agents # It's important that we always run this step, otherwise in the case of any failures in preceding non-Nx steps, the agents will keep running and waste billable minutes if: ${{ always() }} run: npx nx-cloud stop-all-agents # - name: Revoke and delete GPG key # # It's important that we always run this step, otherwise the key will remain active if any of the steps above fail # if: ${{ always() }} # run: | # # As instructed in the text of revocation file, there is a colon that needs to be removed manually # sed -i "s/:-----BEGIN PGP PUBLIC KEY BLOCK-----/-----BEGIN PGP PUBLIC KEY BLOCK-----/" $REVOCATION_FILE # # Revoke the key and delete it # gpg --yes --import $REVOCATION_FILE # gpg --batch --yes --delete-secret-and-public-key $GPG_FULL_KEY_ID agents: name: Nx Cloud - Agent - node-${{ matrix.node }}-agent-${{ matrix.agent }} needs: set-node-versions runs-on: ubuntu-latest env: NX_CI_EXECUTION_ENV: linux-node-${{ matrix.node }} strategy: # Do not kill all versions of node just because one version failed fail-fast: false matrix: node: ${{ fromJson(needs.set-node-versions.outputs.node-versions) }} # Create 4 agents per node version agent: [1, 2, 3, 4] steps: - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5 - name: Configure git metadata run: | git config --global user.email test@example.com git config --global user.name "Tester McPerson" # - name: Generate and configure GPG for signing commits and tags in E2E tests # run: | # # Generate a GPG key for test@example.com and store the output from stderr # GPG_OUTPUT=$(echo "Key-Type: default # Key-Length: 2048 # Subkey-Type: default # Subkey-Length: 2048 # Name-Real: Tester McPerson # Name-Email: test@example.com # Expire-Date: 0 # %no-protection" | gpg --pinentry-mode loopback --batch --generate-key 2>&1) # # Find and extract the revocation file path from sdterr # REVOCATION_FILE=$(echo "$GPG_OUTPUT" | grep '.rev' | tr '\n' ' ' | awk -F "'" '{print $4}') # # Get the GPG key ID and the full fingerprint # export GPG_KEY_ID=$(gpg --list-secret-keys --keyid-format LONG | grep sec | awk '{print $2}' | cut -d'/' -f2) # export GPG_FULL_KEY_ID=$(gpg --list-secret-keys --keyid-format LONG | grep "$GPG_KEY_ID" | grep -v "sec" | awk '{print $1}' | cut -d'/' -f2) # # Export fingerprint and the path to the revocation file to GITHUB_ENV # # This allows the last step in this job to revoke and delete the key # echo "GPG_FULL_KEY_ID=$GPG_FULL_KEY_ID" >> $GITHUB_ENV # echo "REVOCATION_FILE=$REVOCATION_FILE" >> $GITHUB_ENV # # Setup git signing for commits and tags # git config commit.gpgsign true # git config tag.gpgsign true # git config --global user.signingkey $GPG_KEY_ID - name: Install node v${{ matrix.node }} and dependencies uses: ./.github/actions/install-node-and-dependencies with: node-version: ${{ matrix.node }} - name: Remove the volta key from package.json to ensure the explicitly installed version is respected run: | jq 'del(.volta)' package.json > package.json.tmp mv package.json.tmp package.json - name: Start Nx Agent node-${{ matrix.node }}-agent-${{ matrix.agent }} run: npx nx-cloud start-agent env: NX_AGENT_NAME: node-${{ matrix.node }}-agent-${{ matrix.agent }} # - name: Revoke and delete GPG key # # It's important that we always run this step, otherwise the key will remain active if any of the steps above fail # if: ${{ always() }} # run: | # # As instructed in the text of revocation file, there is a colon that needs to be removed manually # sed -i "s/:-----BEGIN PGP PUBLIC KEY BLOCK-----/-----BEGIN PGP PUBLIC KEY BLOCK-----/" $REVOCATION_FILE # # Revoke the key and delete it # gpg --yes --import $REVOCATION_FILE # gpg --batch --yes --delete-secret-and-public-key $GPG_FULL_KEY_ID