Skip to content

chore: create 8.x.x branch #245

chore: create 8.x.x branch

chore: create 8.x.x branch #245

Workflow file for this run

name: CI
on:
push:
branches:
- 8.x.x
pull_request:
env:
NX_CLOUD_DISTRIBUTED_EXECUTION: false
NX_TASKS_RUNNER: local
MATRIX_SIZE: 1
jobs:
install-deps:
name: Install and cache dependencies
runs-on: ubuntu-latest
outputs:
node-version: ${{ steps.setup-node.outputs.node-version }}
steps:
- uses: actions/checkout@v3
with:
# We need to fetch all branches and commits so that Nx affected has a base to compare against.
fetch-depth: 0
- uses: actions/setup-node@v3
id: setup-node
with:
node-version-file: '.nvmrc'
# Rebase must happen before installing dependencies.
- name: Rebase current branch
run: node ./scripts/rebase-pr.js
- name: Cache node modules
id: cache
uses: actions/cache@v3
with:
path: node_modules
key: ${{ runner.os }}-node-${{ steps.setup-node.outputs.node-version }}-modules-${{ hashFiles('package-lock.json') }}
- name: npm install
if: steps.cache.outputs.cache-hit != 'true'
run: npm ci
- name: Start Nx Cloud CI run
run: |
if [ $MATRIX_SIZE -gt 1 ]; then
npx nx-cloud start-ci-run
else
echo "Nx Cloud CI run not started because MATRIX_SIZE is $MATRIX_SIZE"
fi
- name: Agent list
run: |
echo 'matrix_size=${{ env.MATRIX_SIZE }}' >> $GITHUB_OUTPUT
node -e 'console.log("agents=" + JSON.stringify({ agent: Array.from(Array(${{ env.MATRIX_SIZE }}).keys()).map(i => i + 1) }))' >> $GITHUB_OUTPUT
agents:
name: Bootup Nx Cloud agent
if: needs.install-deps.outputs.matrix_size > 1
runs-on: ubuntu-latest
needs: install-deps
strategy:
matrix: ${{ fromJSON(needs.install-deps.outputs.agents) }}
steps:
- uses: actions/checkout@v3
- name: Retrieve node_modules cache
uses: actions/cache@v3
with:
path: node_modules
key: ${{ runner.os }}-node-${{ needs.install-deps.outputs.node-version }}-modules-${{ hashFiles('package-lock.json') }}
# Running ngcc after each agent is created to address the "ngcc is already running error".
# Since we're running multiple builds in parallel, we need to pre-process our node_modules before starting the builds.
- name: Run NGCC
run: npx ngcc
- name: Start Nx Agent ${{ matrix.agent }}
run: npx nx-cloud start-agent
lint:
name: Lint
needs: install-deps
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
# We need to fetch all branches and commits so that Nx affected has a base to compare against.
fetch-depth: 0
- uses: actions/setup-node@v3
with:
node-version-file: '.nvmrc'
# Rebase must happen before installing dependencies.
- name: Rebase current branch
run: node ./scripts/rebase-pr.js
- name: Derive appropriate SHAs for base and head for `nx affected` commands
uses: nrwl/nx-set-shas@v3
- name: Retrieve node_modules cache
uses: actions/cache@v3
with:
path: node_modules
key: ${{ runner.os }}-node-${{ needs.install-deps.outputs.node-version }}-modules-${{ hashFiles('package-lock.json') }}
- name: Check library dependencies
run: npx skyux-dev check-lib-dependencies
- name: Check library missing peers
run: npx skyux-dev check-lib-missing-peers
- name: Check library resources
run: npx skyux-dev check-lib-resources
- name: Check code formatting
run: npx prettier --check .
- name: Run lint
run: npx nx affected:lint --quiet --silent --parallel=${{ env.MATRIX_SIZE }}
build:
name: Build
needs: install-deps
runs-on: ubuntu-latest
if: ${{ github.event_name == 'pull_request' }}
steps:
- uses: actions/checkout@v3
with:
# We need to fetch all branches and commits so that Nx affected has a base to compare against.
fetch-depth: 0
- uses: actions/setup-node@v3
with:
node-version-file: '.nvmrc'
# Rebase must happen before installing dependencies.
- name: Rebase current branch
run: node ./scripts/rebase-pr.js
- name: Derive appropriate SHAs for base and head for `nx affected` commands
uses: nrwl/nx-set-shas@v3
- name: Retrieve node_modules cache
uses: actions/cache@v3
with:
path: node_modules
key: ${{ runner.os }}-node-${{ needs.install-deps.outputs.node-version }}-modules-${{ hashFiles('package-lock.json') }}
- name: Run NGCC
run: npx ngcc
- name: Build
run: npx nx affected --target=build --parallel=${{ env.MATRIX_SIZE }}
build-dist:
name: Build packages distribution
needs: install-deps
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
# We need to fetch all branches and commits so that Nx affected has a base to compare against.
fetch-depth: 0
- uses: actions/setup-node@v3
with:
node-version-file: '.nvmrc'
# Rebase must happen before installing dependencies.
- name: Rebase current branch
run: node ./scripts/rebase-pr.js
- name: Retrieve node_modules cache
uses: actions/cache@v3
with:
path: node_modules
key: ${{ runner.os }}-node-${{ needs.install-deps.outputs.node-version }}-modules-${{ hashFiles('package-lock.json') }}
- name: Build packages dist
run: npx skyux-dev create-packages-dist
coverage:
name: Code coverage
needs: install-deps
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
# We need to fetch all branches and commits so that Nx affected has a base to compare against.
fetch-depth: 0
- uses: actions/setup-node@v3
with:
node-version-file: '.nvmrc'
# Rebase must happen before installing dependencies.
- name: Rebase current branch
run: node ./scripts/rebase-pr.js
- name: Derive appropriate SHAs for base and head for `nx affected` commands
uses: nrwl/nx-set-shas@v3
- name: Retrieve node_modules cache
uses: actions/cache@v3
with:
path: node_modules
key: ${{ runner.os }}-node-${{ needs.install-deps.outputs.node-version }}-modules-${{ hashFiles('package-lock.json') }}
- name: Run NGCC
run: npx ngcc
- name: Code coverage
run: |
npx nx affected --target=test --browsers=ChromeHeadless --code-coverage --parallel=${{ env.MATRIX_SIZE }} --progress=false --source-map --watch=false
npx nx affected --target=posttest --browsers=ChromeHeadless --parallel=${{ env.MATRIX_SIZE }} --watch=false
stop-agents:
name: Stop Nx Cloud agents
runs-on: ubuntu-latest
if: needs.install-deps.outputs.matrix_size > 1
needs: [install-deps, lint, build, build-dist, coverage]
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version-file: '.nvmrc'
- name: Retrieve node_modules cache
uses: actions/cache@v3
with:
path: node_modules
key: ${{ runner.os }}-node-${{ needs.install-deps.outputs.node-version }}-modules-${{ hashFiles('package-lock.json') }}
- name: Stop Nx Cloud agents
run: npx nx-cloud stop-all-agents