- [x] change init to create `createNodes` instead - [x] unit tests - [x] test-ci - [x] test on windows - [x] help metadata - [x] external nodes TODO: - add publish executor? - publish to maven central? <!-- 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 --> currently, it uses [project report plugin](https://docs.gradle.org/current/userguide/project_report_plugin.html). - pro: no need to maintain this plugin - con: this plugin gives limited information ## Expected Behavior <!-- This is the behavior we should expect with the changes in this PR --> change the project report plugin to @nxn/gradle/plugin-v1 now the @nx/gradle plugin will use project graph plugin (dev.nx.gradle.project-graph) created in this pr. this plugin will create json file that is exactly what nx project grpah expected. ## Related Issue(s) <!-- Please link the issue being fixed so it gets closed when this is merged. --> Fixes #
170 lines
4.4 KiB
YAML
170 lines
4.4 KiB
YAML
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_NO_TIMEOUTS: 'true'
|
|
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0
|
|
filter: tree:0
|
|
|
|
- name: Fetch Master
|
|
run: git fetch origin master:master
|
|
if: ${{ github.event_name == 'pull_request' }}
|
|
|
|
- name: Set SHAs
|
|
uses: nrwl/nx-set-shas@v4
|
|
with:
|
|
main-branch-name: 'master'
|
|
|
|
- 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: Setup Java
|
|
uses: actions/setup-java@v4
|
|
with:
|
|
distribution: temurin
|
|
java-version: 21
|
|
|
|
- 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 &
|
|
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 &
|
|
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@v4
|
|
with:
|
|
fetch-depth: 0
|
|
filter: tree:0
|
|
|
|
- name: Fetch Master
|
|
run: git fetch origin master:master
|
|
if: ${{ github.event_name == 'pull_request' }}
|
|
|
|
- name: Restore Homebrew packages
|
|
uses: actions/cache@v4
|
|
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@v4
|
|
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
|
|
with:
|
|
main-branch-name: 'master'
|
|
|
|
- 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
|