testing Nx distributed builds #4
Workflow file for this run
This file contains 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 | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
env: | |
NX_CLOUD_DISTRIBUTED_EXECUTION: true | |
NX_CLOUD_DISTRIBUTED_EXECUTION_AGENT_COUNT: 3 | |
NX_BRANCH: ${{ github.event.number || github.ref_name }} | |
NX_CLOUD_ACCESS_TOKEN: ${{ secrets.NX_CLOUD_ACCESS_TOKEN }} | |
# NX_CLOUD_AUTH_TOKEN: ${{ secrets.NX_CLOUD_AUTH_TOKEN }} | |
NPM_TOKEN: ${{ secrets.NPM_TOKEN }} | |
jobs: | |
main: | |
name: Nx Cloud - Main Job | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
name: Checkout [Pull Request] | |
if: ${{ github.event_name == 'pull_request' }} | |
with: | |
# By default, PRs will be checked-out based on the Merge Commit, but we want the actual branch HEAD. | |
ref: ${{ github.event.pull_request.head.sha }} | |
# We need to fetch all branches and commits so that Nx affected has a base to compare against. | |
fetch-depth: 0 | |
- uses: actions/checkout@v3 | |
name: Checkout [Default Branch] | |
if: ${{ github.event_name != 'pull_request' }} | |
with: | |
# We need to fetch all branches and commits so that Nx affected has a base to compare against. | |
fetch-depth: 0 | |
- name: Derive appropriate SHAs for base and head for `nx affected` commands | |
uses: nrwl/nx-set-shas@v3 | |
- uses: pnpm/action-setup@v2.2.4 | |
- uses: actions/setup-node@v3 | |
with: | |
node-version-file: '.nvmrc' | |
cache: 'pnpm' | |
- name: Install dependencies | |
run: pnpm install --frozen-lockfile | |
- name: Initialize the Nx Cloud distributed CI run | |
run: pnpm nx-cloud start-ci-run | |
- name: Run commands in parallel | |
run: pnpm nx affected -t build --parallel=3 | |
- name: Stop all running agents for this CI run | |
# 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: pnpm nx-cloud stop-all-agents | |
agents: | |
name: Agent ${{ matrix.agent }} | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
agent: | |
- [1, 2, 3] | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- uses: pnpm/action-setup@v2.2.4 | |
- uses: actions/setup-node@v3 | |
with: | |
node-version-file: '.nvmrc' | |
cache: 'pnpm' | |
- run: pnpm install --frozen-lockfile | |
- name: Start Nx Agent ${{ matrix.agent }} | |
run: pnpm nx-cloud start-agent | |
env: | |
NX_AGENT_NAME: ${{matrix.agent}} |