chore(repo): migrate ci from circle to gha #21
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: | |
- master | |
pull_request: | |
branches: | |
- "**" | |
env: | |
NX_CLOUD_ACCESS_TOKEN: ${{ secrets.NX_CLOUD_ACCESS_TOKEN }} | |
jobs: | |
main-linux: | |
runs-on: ubuntu-latest | |
container: cimg/rust:1.84.0-browsers | |
env: | |
NX_E2E_CI_CACHE_KEY: e2e-github-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: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Fetch Master | |
run: git fetch origin master:master | |
- name: Set SHAs | |
uses: nrwl/nx-set-shas@v4 | |
- name: Start CI Run | |
run: npx nx-cloud@next start-ci-run --distribute-on="./.nx/workflows/dynamic-changesets.yaml" --stop-agents-after="e2e" | |
- name: Install dependencies | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y ca-certificates lsof libvips-dev libglib2.0-dev libgirepository1.0-dev | |
- name: Install Chrome | |
uses: browser-actions/setup-chrome@v1 | |
- uses: pnpm/action-setup@v4 | |
name: Install pnpm | |
with: | |
version: 9.8.0 | |
run_install: false | |
- name: Install project dependencies | |
run: | | |
pnpm install --frozen-lockfile | |
pnpm playwright install --with-deps | |
- name: Install Rust | |
uses: dtolnay/rust-toolchain@stable | |
- name: Check Documentation | |
run: pnpm nx documentation --no-dte | |
timeout-minutes: 20 | |
- name: Run Checks/Lint/Test/Build | |
shell: bash | |
run: | | |
pids=() | |
pnpm nx-cloud record -- nx format:check --base=$NX_BASE --head=$NX_HEAD & | |
pids+=($!) | |
pnpm nx-cloud record -- nx sync:check | |
pids+=($!) | |
pnpm nx-cloud record -- nx-cloud conformance:check | |
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 | |
timeout-minutes: 100 | |
main-macos: | |
runs-on: macos-latest | |
env: | |
NX_E2E_CI_CACHE_KEY: e2e-github-macos | |
NX_PERF_LOGGING: 'false' | |
NX_CI_EXECUTION_ENV: 'macos' | |
SELECTED_PM: 'npm' | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Fetch Master | |
run: git fetch origin master:master | |
- name: Restore Homebrew packages | |
uses: actions/cache@v3 | |
with: | |
path: | | |
/usr/local/Homebrew | |
~/Library/Caches/Homebrew | |
key: nrwl-nx-homebrew-packages | |
- name: Configure Detox Environment, Install applesimutils | |
run: | | |
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 | |
timeout-minutes: 20 | |
- name: Save Homebrew Cache | |
uses: actions/cache@v3 | |
with: | |
path: | | |
/usr/local/Homebrew | |
~/Library/Caches/Homebrew | |
key: nrwl-nx-homebrew-packages | |
- uses: pnpm/action-setup@v4 | |
name: Install pnpm | |
with: | |
version: 9.8.0 | |
run_install: false | |
- name: Install project dependencies | |
run: | | |
pnpm install --frozen-lockfile | |
pnpm playwright install --with-deps | |
- name: Install Rust | |
uses: dtolnay/rust-toolchain@stable | |
- name: Set SHAs | |
uses: nrwl/nx-set-shas@v4 | |
- name: Run E2E Tests for macOS | |
run: | | |
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 |