<!-- Please make sure you have read the submission guidelines before posting an PR --> <!-- https://github.com/nrwl/nx/blob/master/CONTRIBUTING.md#-submitting-a-pr --> <!-- Please make sure that your commit message follows our format --> <!-- Example: `fix(nx): must begin with lowercase` --> <!-- If this is a particularly complex change or feature addition, you can request a dedicated Nx release for this pull request branch. Mention someone from the Nx team or the `@nrwl/nx-pipelines-reviewers` and they will confirm if the PR warrants its own release for testing purposes, and generate it for you if appropriate. --> ## Current Behavior <!-- This is the behavior we have today --> ## Expected Behavior <!-- This is the behavior we should expect with the changes in this PR --> ## Related Issue(s) <!-- Please link the issue being fixed so it gets closed when this is merged. --> Fixes #
186 lines
5.3 KiB
YAML
186 lines
5.3 KiB
YAML
version: 2.1
|
|
|
|
# -------------------------
|
|
# ORBS
|
|
# -------------------------
|
|
orbs:
|
|
nx: nrwl/nx@1.6.2
|
|
rust: circleci/rust@1.6.0
|
|
browser-tools: circleci/browser-tools@1.4.8
|
|
|
|
# -------------------------
|
|
# EXECUTORS
|
|
# -------------------------
|
|
|
|
defaults: &defaults
|
|
working_directory: ~/repo
|
|
|
|
executors:
|
|
linux:
|
|
<<: *defaults
|
|
docker:
|
|
- image: cimg/rust:1.73.0-browsers
|
|
resource_class: medium+
|
|
|
|
macos:
|
|
<<: *defaults
|
|
resource_class: macos.m1.medium.gen1
|
|
macos:
|
|
xcode: '14.2.0'
|
|
|
|
# -------------------------
|
|
# COMMANDS
|
|
# -------------------------
|
|
commands:
|
|
run-pnpm-install:
|
|
parameters:
|
|
os:
|
|
type: string
|
|
steps:
|
|
- restore_cache:
|
|
name: Restore pnpm Package Cache
|
|
keys:
|
|
- node-deps-{{ arch }}-v3-{{ checksum "pnpm-lock.yaml" }}
|
|
- when:
|
|
condition:
|
|
equal: [<< parameters.os >>, linux]
|
|
steps:
|
|
- run:
|
|
name: Install pnpm package manager (linux)
|
|
command: |
|
|
npm install --prefix=$HOME/.local -g @pnpm/exe@9.8.0
|
|
- when:
|
|
condition:
|
|
equal: [<< parameters.os >>, macos]
|
|
steps:
|
|
- run:
|
|
name: Install pnpm package manager (macos)
|
|
command: |
|
|
npm install -g @pnpm/exe@9.8.0
|
|
- run:
|
|
name: Install Dependencies
|
|
command: |
|
|
pnpm install --frozen-lockfile
|
|
pnpm playwright install --with-deps
|
|
- save_cache:
|
|
name: Save pnpm Package Cache
|
|
key: node-deps-{{ arch }}-v3-{{ checksum "pnpm-lock.yaml" }}
|
|
paths:
|
|
- ~/.pnpm-store
|
|
- ~/.cache/Cypress
|
|
- node_modules
|
|
# -------------------------
|
|
# JOBS
|
|
# -------------------------
|
|
jobs:
|
|
# -------------------------
|
|
# JOBS: Main Linux
|
|
# -------------------------
|
|
main-linux:
|
|
executor: linux
|
|
environment:
|
|
NX_E2E_CI_CACHE_KEY: e2e-circleci-linux
|
|
NX_DAEMON: 'true'
|
|
NX_PERF_LOGGING: 'false'
|
|
NX_VERBOSE_LOGGING: 'false'
|
|
NX_NATIVE_LOGGING: 'false'
|
|
NX_E2E_RUN_E2E: 'true'
|
|
NX_CI_EXECUTION_ENV: 'linux'
|
|
NX_CLOUD_DTE_V2: 'true'
|
|
NX_CLOUD_DTE_SUMMARY: 'true'
|
|
NX_CLOUD_NO_TIMEOUTS: 'true'
|
|
steps:
|
|
- checkout
|
|
- nx/set-shas:
|
|
main-branch-name: 'master'
|
|
- run: npx nx-cloud@next start-ci-run --distribute-on="auto linux-medium" --stop-agents-after="e2e" --require-explicit-completion
|
|
- run:
|
|
command: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y ca-certificates lsof libvips-dev libglib2.0-dev libgirepository1.0-dev
|
|
- browser-tools/install-chrome
|
|
- run-pnpm-install:
|
|
os: linux
|
|
- run:
|
|
name: Check Documentation
|
|
command: pnpm nx documentation --no-dte
|
|
no_output_timeout: 20m
|
|
- run:
|
|
name: Run Checks/Lint/Test/Build
|
|
no_output_timeout: 60m
|
|
command: |
|
|
pids=()
|
|
|
|
pnpm nx-cloud record -- nx format:check --base=$NX_BASE --head=$NX_HEAD &
|
|
pids+=($!)
|
|
|
|
pnpm nx run-many -t check-imports check-commit check-lock-files check-codeowners documentation --parallel=1 --no-dte &
|
|
pids+=($!)
|
|
|
|
pnpm nx affected --targets=lint,test,build,e2e,e2e-ci --base=$NX_BASE --head=$NX_HEAD --parallel=3 &
|
|
pids+=($!)
|
|
|
|
for pid in "${pids[@]}"; do
|
|
wait "$pid"
|
|
done
|
|
- run:
|
|
name: End CI Run
|
|
command: npx nx-cloud@next complete-ci-run
|
|
no_output_timeout: 20m
|
|
# -------------------------
|
|
# JOBS: Main-MacOS
|
|
# -------------------------
|
|
mainmacos:
|
|
executor: macos
|
|
environment:
|
|
NX_E2E_CI_CACHE_KEY: e2e-circleci-macos
|
|
NX_PERF_LOGGING: 'false'
|
|
NX_CI_EXECUTION_ENV: 'macos'
|
|
SELECTED_PM: 'npm' # explicitly define npm for macOS tests
|
|
steps:
|
|
- checkout
|
|
- restore_cache:
|
|
name: Restore Homebrew packages
|
|
keys:
|
|
- nrwl-nx-homebrew-packages
|
|
- run:
|
|
name: Configure Detox Environment, Install applesimutils
|
|
command: |
|
|
HOMEBREW_NO_AUTO_UPDATE=1 brew tap wix/brew >/dev/null
|
|
HOMEBREW_NO_AUTO_UPDATE=1 brew install applesimutils >/dev/null
|
|
xcrun simctl shutdown all && xcrun simctl erase all
|
|
no_output_timeout: 20m
|
|
- save_cache:
|
|
name: Save Homebrew Cache
|
|
key: nrwl-nx-homebrew-packages
|
|
paths:
|
|
- /usr/local/Homebrew
|
|
- ~/Library/Caches/Homebrew
|
|
- run-pnpm-install:
|
|
os: macos
|
|
- rust/install
|
|
- nx/set-shas:
|
|
main-branch-name: 'master'
|
|
- run:
|
|
name: Run E2E Tests for macOS
|
|
command: |
|
|
HAS_CHANGED=$(node ./scripts/check-react-native-changes.js $NX_BASE $NX_HEAD);
|
|
if $HAS_CHANGED; then
|
|
pnpm nx affected -t e2e-macos-local --parallel=1 --base=$NX_BASE --head=$NX_HEAD
|
|
else
|
|
echo "Skip E2E tests for macOS as there are no changes in React Native projects."
|
|
fi
|
|
no_output_timeout: 45m
|
|
|
|
# -------------------------
|
|
# WORKFLOWS(JOBS)
|
|
# -------------------------
|
|
workflows:
|
|
version: 2
|
|
|
|
build:
|
|
jobs:
|
|
- main-linux
|
|
- mainmacos:
|
|
name: main-macos-e2e
|