chore(repo): migrate ci from circle to gha (#29801)
This commit is contained in:
parent
a92e8f2d45
commit
f50555b1fb
@ -1,13 +1,5 @@
|
||||
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
|
||||
# -------------------------
|
||||
@ -20,55 +12,8 @@ executors:
|
||||
<<: *defaults
|
||||
docker:
|
||||
- image: cimg/rust:1.84.0-browsers
|
||||
resource_class: medium+
|
||||
resource_class: small
|
||||
|
||||
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
|
||||
# -------------------------
|
||||
@ -78,101 +23,8 @@ jobs:
|
||||
# -------------------------
|
||||
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="./.nx/workflows/dynamic-changesets.yaml" --stop-agents-after="e2e"
|
||||
- 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-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
|
||||
# -------------------------
|
||||
# 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
|
||||
- run: echo "We are in the process of transitioning from Circle CI to GitHub Actions. For details about your build results, consult github actions build logs."
|
||||
|
||||
# -------------------------
|
||||
# WORKFLOWS(JOBS)
|
||||
@ -183,5 +35,3 @@ workflows:
|
||||
build:
|
||||
jobs:
|
||||
- main-linux
|
||||
- mainmacos:
|
||||
name: main-macos-e2e
|
||||
|
||||
157
.github/workflows/ci.yml
vendored
Normal file
157
.github/workflows/ci.yml
vendored
Normal file
@ -0,0 +1,157 @@
|
||||
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
|
||||
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
|
||||
timeout-minutes: 20
|
||||
|
||||
- name: Run Checks/Lint/Test/Build
|
||||
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 --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
|
||||
@ -186,7 +186,6 @@ rust-toolchain @nrwl/nx-native-reviewers
|
||||
/scripts/angular-support-upgrades @nrwl/nx-angular-reviewers
|
||||
|
||||
# CI
|
||||
/.circleci/** @nrwl/nx-pipelines-reviewers
|
||||
/.nx/workflows/** @nrwl/nx-pipelines-reviewers
|
||||
/.github/** @nrwl/nx-pipelines-reviewers
|
||||
/.husky/** @nrwl/nx-pipelines-reviewers
|
||||
|
||||
@ -100,16 +100,13 @@
|
||||
"deploy-build": {
|
||||
"executor": "nx:run-commands",
|
||||
"outputs": ["{projectRoot}/public/documentation"],
|
||||
"dependsOn": ["@nx/nx-source:documentation"],
|
||||
"options": {
|
||||
"commands": [
|
||||
{
|
||||
"command": "nx run nx-dev:generate-og-images",
|
||||
"description": "OG images generation"
|
||||
},
|
||||
{
|
||||
"command": "ts-node -P scripts/tsconfig.scripts.json ./scripts/documentation/generators/main.ts",
|
||||
"description": "Pre-generate official package metadata"
|
||||
},
|
||||
{
|
||||
"command": "nx copy-docs nx-dev",
|
||||
"description": "Copy generated docs to build output"
|
||||
|
||||
4
nx.json
4
nx.json
@ -16,7 +16,7 @@
|
||||
"sharedGlobals": [
|
||||
"{workspaceRoot}/babel.config.json",
|
||||
"{workspaceRoot}/.nx/workflows/agents.yaml",
|
||||
"{workspaceRoot}/.circleci/config.yml"
|
||||
"{workspaceRoot}/.github/workflows/ci.yml"
|
||||
],
|
||||
"native": [
|
||||
"{projectRoot}/**/*.rs",
|
||||
@ -245,7 +245,7 @@
|
||||
"nxCloudId": "62d013ea0852fe0a2df74438",
|
||||
"nxCloudUrl": "https://staging.nx.app",
|
||||
"parallel": 1,
|
||||
"bust": 2,
|
||||
"bust": 4,
|
||||
"defaultBase": "master",
|
||||
"conformance": {
|
||||
"rules": [
|
||||
|
||||
30
package.json
30
package.json
@ -15,7 +15,7 @@
|
||||
"nx-release": "nx nx-release @nx/nx-source --parallel 8",
|
||||
"prepublishOnly": "node ./scripts/update-package-group.js",
|
||||
"local-registry": "nx local-registry @nx/nx-source",
|
||||
"documentation": "ts-node -P scripts/tsconfig.scripts.json ./scripts/documentation/generators/main.ts && pnpm check-documentation-map",
|
||||
"documentation": "nx documentation",
|
||||
"submit-plugin": "node ./scripts/submit-plugin.js",
|
||||
"prepare": "is-ci || husky",
|
||||
"echo": "echo 123458",
|
||||
@ -384,32 +384,8 @@
|
||||
"check-format",
|
||||
"check-imports",
|
||||
"check-lock-files",
|
||||
"check-codeowners",
|
||||
"documentation"
|
||||
],
|
||||
"targets": {
|
||||
"documentation": {
|
||||
"cache": true,
|
||||
"inputs": [
|
||||
"{workspaceRoot}/packages/**",
|
||||
"{workspaceRoot}/docs/**",
|
||||
"{workspaceRoot}/scripts/documentation/**",
|
||||
"!{workspaceRoot}/docs/external-generated",
|
||||
"!{workspaceRoot}/docs/generated",
|
||||
"!{workspaceRoot}/packages/**/*.spec.ts",
|
||||
"!{workspaceRoot}/packages/**/project.json",
|
||||
"!{workspaceRoot}/packages/**/tsconfig.json",
|
||||
"!{workspaceRoot}/packages/**/tsconfig.lib.json",
|
||||
"!{workspaceRoot}/packages/**/tsconfig.spec.json",
|
||||
"!{workspaceRoot}/packages/**/jest.config.{ts,js}",
|
||||
"!{workspaceRoot}/packages/**/.eslintrc.json"
|
||||
]
|
||||
},
|
||||
"outputs": [
|
||||
"{workspaceRoot}/docs/external-generated",
|
||||
"{workspaceRoot}/docs/generated"
|
||||
]
|
||||
}
|
||||
"check-codeowners"
|
||||
]
|
||||
},
|
||||
"packageManager": "pnpm@9.8.0"
|
||||
}
|
||||
|
||||
35
project.json
35
project.json
@ -35,6 +35,41 @@
|
||||
}
|
||||
],
|
||||
"command": "ts-node -P ./scripts/tsconfig.release.json ./scripts/nx-release"
|
||||
},
|
||||
"documentation": {
|
||||
"executor": "nx:run-commands",
|
||||
"options": {
|
||||
"commands": [
|
||||
"ts-node -P scripts/tsconfig.scripts.json ./scripts/documentation/generators/main.ts",
|
||||
"pnpm check-documentation-map"
|
||||
],
|
||||
"parallel": false
|
||||
},
|
||||
"cache": true,
|
||||
"inputs": [
|
||||
"{workspaceRoot}/packages/**",
|
||||
"{workspaceRoot}/docs/**",
|
||||
"{workspaceRoot}/scripts/documentation/**",
|
||||
"!{workspaceRoot}/docs/external-generated",
|
||||
"!{workspaceRoot}/docs/generated",
|
||||
"!{workspaceRoot}/packages/**/*.spec.ts",
|
||||
"!{workspaceRoot}/packages/**/project.json",
|
||||
"!{workspaceRoot}/packages/**/tsconfig.json",
|
||||
"!{workspaceRoot}/packages/**/tsconfig.lib.json",
|
||||
"!{workspaceRoot}/packages/**/tsconfig.spec.json",
|
||||
"!{workspaceRoot}/packages/**/jest.config.{ts,js}",
|
||||
"!{workspaceRoot}/packages/**/.eslintrc.json"
|
||||
],
|
||||
"dependsOn": [
|
||||
{
|
||||
"target": "build",
|
||||
"projects": ["devkit", "typedoc-theme"]
|
||||
}
|
||||
],
|
||||
"outputs": [
|
||||
"{workspaceRoot}/docs/external-generated",
|
||||
"{workspaceRoot}/docs/generated"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
const nxBase = process.argv[2];
|
||||
const nxBase = process.argv[2] !== 'undefined' ? process.argv[2] : 'master';
|
||||
const nxHead = process.argv[3];
|
||||
const gitDiffCount = require('child_process').execSync(
|
||||
`git diff --name-only ${nxBase} ${nxHead} | (grep -E 'packages/detox|packages/react-native|packages/expo|e2e/detox|e2e/react-native|e2e/expo' || true) | wc -l`
|
||||
|
||||
@ -13,8 +13,6 @@ export async function generateDevkitDocumentation() {
|
||||
windowsHide: false,
|
||||
};
|
||||
|
||||
execSync('nx run-many -t build -p devkit,typedoc-theme', execSyncOptions);
|
||||
|
||||
rmSync('node_modules/@nx/typedoc-theme', { recursive: true, force: true });
|
||||
|
||||
cpSync('dist/typedoc-theme', 'node_modules/@nx/typedoc-theme', {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user