Skip to content

chore(docs): remove mention of useWorkspaces (#3986) #462

chore(docs): remove mention of useWorkspaces (#3986)

chore(docs): remove mention of useWorkspaces (#3986) #462

Workflow file for this run

name: CI
on:
push:
branches:
- main
- next
pull_request:
types: [assigned, opened, synchronize, reopened, labeled]
concurrency:
group: ${{ github.workflow }}-${{ github.event.number || github.ref }}
cancel-in-progress: true
env:
NX_CLOUD_ACCESS_TOKEN: ${{ secrets.NX_CLOUD_ACCESS_TOKEN }}
NX_CLOUD_DISTRIBUTED_EXECUTION: true
NX_VERBOSE_LOGGING: false
jobs:
main:
name: Nx Cloud - Main Job
runs-on: ubuntu-latest
env:
NX_CI_EXECUTION_ENV: "linux"
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: nrwl/nx-set-shas@v4
- name: Start Nx Cloud CI Run - Linux
run: npx nx-cloud start-ci-run --stop-agents-after="e2e"
- name: Install primary node version (see volta config in package.json) and dependencies
uses: ./.github/actions/install-node-and-dependencies
- name: Run parallel distributed tasks
uses: jameshenry/parallel-bash-commands@v1
with:
cmd1: npx nx-cloud record -- npx nx format:check
cmd2: npx nx run-many -t build --parallel=3
cmd3: npx nx run-many -t lint --parallel=3
cmd4: npx nx run-many -t test --parallel=3 --ci --maxWorkers=2
cmd5: npx nx run integration:integration --ci --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: 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
agents:
name: Nx Cloud - Agent ${{ matrix.agent }}
runs-on: ubuntu-latest
env:
NX_CI_EXECUTION_ENV: "linux"
strategy:
matrix:
agent: [1, 2, 3, 4]
steps:
- uses: actions/checkout@v4
- 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 primary node version (see volta config in package.json) and dependencies
uses: ./.github/actions/install-node-and-dependencies
- name: Start Nx Agent ${{ matrix.agent }}
run: npx nx-cloud start-agent
env:
NX_AGENT_NAME: ${{ 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
windows-main:
name: Nx Cloud - Windows Main Job
runs-on: windows-latest
env:
NX_CI_EXECUTION_ENV: "windows"
LERNA_OS_TYPE: windows
# Set the temp directory to a short dir without username in it otherwise import command specs have a problem because of different paths on windows agents
TEMP: C:\temp
TMP: C:\temp
steps:
- uses: actions/checkout@v4
- name: Start Nx Cloud CI Run - Windows
run: npx nx-cloud start-ci-run --stop-agents-after="test"
- name: Install primary node version (see volta config in package.json) and dependencies
uses: ./.github/actions/install-node-and-dependencies
- name: Run parallel distributed unit and integration tests on windows
shell: bash
# From old maintainer regarding integration tests: "import is NOT TESTED in windows because pain and suffering"
run: |
pids=()
npx nx run integration:integration --ci --maxWorkers=2 &
pids+=($!)
# Ignored specs currently failing on windows
# TODO: investigate why
npx nx run-many -t test --parallel=3 --ci --maxWorkers=2 --testTimeout=60000 --testPathIgnorePatterns=save.spec.ts --testPathIgnorePatterns=find-file.spec.ts --testPathIgnorePatterns=chain-class.spec.ts &
pids+=($!)
for pid in "${pids[@]}"; do
wait "$pid"
done
- name: Stop all running agents for Nx Run Group
# 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
windows-agents:
name: Nx Cloud - Windows Agent ${{ matrix.agent }}
runs-on: windows-latest
strategy:
matrix:
agent: [1, 2, 3, 4]
env:
NX_CI_EXECUTION_ENV: "windows"
LERNA_OS_TYPE: windows
# Set the temp directory to a short dir without containing username, otherwise import command specs have a problem because of different paths on windows agents
TEMP: C:\temp
TMP: C:\temp
steps:
- uses: actions/checkout@v4
- name: Configure git metadata
run: |
git config --global user.email test@example.com
git config --global user.name "Tester McPerson"
- name: Install primary node version (see volta config in package.json) and dependencies
uses: ./.github/actions/install-node-and-dependencies
- name: Start Nx Agent ${{ matrix.agent }}
run: npx nx-cloud start-agent
env:
NX_AGENT_NAME: ${{ matrix.agent }}
# Isolated e2e tests for the task runner which become too flaky if nested through further node child processes
task-runner-e2e:
name: Task Runner E2E
runs-on: ubuntu-latest
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
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Derive appropriate SHAs for base and head for `nx affected` commands
uses: nrwl/nx-set-shas@v4
- name: Configure git metadata
run: |
git config --global user.email test@example.com
git config --global user.name "Tester McPerson"
- name: Enable corepack
run: corepack enable
shell: bash
- name: Install dependencies
run: npm ci
shell: bash
- name: Check if e2e-run-task-runner is affected
id: check_affected
run: |
IS_AFFECTED_STR=$(npx nx print-affected | jq '.projects | contains(["e2e-run-task-runner"])')
IS_AFFECTED=$([[ $IS_AFFECTED_STR == 'true' ]] && echo 'true' || echo '')
echo "is_affected=$IS_AFFECTED" >> $GITHUB_OUTPUT
shell: bash
- name: Prepare e2e tests for task-runner
if: ${{ steps.check_affected.outputs.is_affected }}
run: npx nx prepare-for-e2e e2e-run-task-runner
shell: bash
- name: Run e2e tests for task-runner
if: ${{ steps.check_affected.outputs.is_affected }}
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
e2e/run/task-runner/src/run-tests.sh
shell: bash