-
-
Notifications
You must be signed in to change notification settings - Fork 36
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
chore(ci): setup nx agents and improve other CI workflows
- Loading branch information
Showing
16 changed files
with
276 additions
and
150 deletions.
There are no files selected for viewing
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
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
name: 'Setup Build Tools and Dependencies' | ||
description: Setup node, pnpm, java, flutter, cache, and install dependencies | ||
|
||
inputs: | ||
node-version: # id of input | ||
description: 'Node version' | ||
required: false | ||
default: 20 | ||
|
||
runs: | ||
using: 'composite' | ||
steps: | ||
- name: Derive appropriate SHAs for base and head for `nx affected` commands | ||
uses: nrwl/nx-set-shas@v4 | ||
|
||
- name: Setup PNPM | ||
uses: pnpm/action-setup@v3 | ||
with: | ||
version: 8.2 | ||
|
||
- name: Setup Node.js ${{ inputs.node-version }} | ||
uses: actions/setup-node@v4 | ||
with: | ||
node-version: ${{ inputs.node-version }} | ||
cache: 'pnpm' | ||
|
||
- name: Setup Java | ||
uses: actions/setup-java@v4 | ||
with: | ||
distribution: 'temurin' | ||
java-version: 17 | ||
- run: java -version | ||
shell: bash | ||
|
||
- name: Setup Flutter | ||
uses: subosito/flutter-action@v2 | ||
with: | ||
channel: 'stable' | ||
cache: true | ||
cache-key: 'flutter-:os:-:channel:-:version:-:arch:-:hash:' # optional, change this to force refresh cache | ||
cache-path: '${{ runner.tool_cache }}/flutter/:channel:-:version:-:arch:' # optional, change this to specify the cache path | ||
architecture: x64 # optional, x64 or arm64 | ||
- run: flutter --version | ||
shell: bash | ||
|
||
- name: Cache node_modules | ||
id: cache-modules | ||
uses: actions/cache@v4 | ||
with: | ||
lookup-only: true | ||
path: '**/node_modules' | ||
key: pnpm-${{ hashFiles('pnpm-lock.yaml') }} | ||
|
||
- name: Install packages | ||
run: pnpm install --frozen-lockfile | ||
shell: bash |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
name: CI | ||
|
||
on: | ||
push: | ||
branches: | ||
- develop | ||
pull_request: | ||
|
||
# Needed for nx-set-shas when run on the main branch | ||
permissions: | ||
actions: read | ||
contents: read | ||
|
||
jobs: | ||
develop: | ||
runs-on: ubuntu-latest | ||
env: | ||
NX_CLOUD_ACCESS_TOKEN: ${{ secrets.NX_CLOUD_ACCESS_TOKEN }} | ||
timeout-minutes: 60 | ||
steps: | ||
- name: Checkout Repo | ||
uses: actions/checkout@v4 | ||
with: | ||
fetch-depth: 0 | ||
|
||
- name: Install node, pnpm, and dependencies | ||
uses: ./.github/actions/install-dependencies | ||
|
||
# Connect your workspace on nx.app and uncomment this to enable task distribution. | ||
# The "--stop-agents-after" is optional, but allows idle agents to shut down once the "e2e" targets have been requested | ||
- run: pnpm exec nx-cloud start-ci-run --distribute-on="5 linux-small-js-java-flutter" --stop-agents-after="e2e" | ||
|
||
# This line is needed for nx affected to work when CI is running on a PR | ||
- run: git branch --track develop origin/develop | ||
|
||
- run: pnpm exec nx-cloud record -- nx format:check | ||
- run: pnpm exec nx affected -t lint test build e2e --exclude=smoke --codeCoverage |
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
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
name: Nightly Smoke Tests | ||
|
||
on: | ||
# Trigger manually or on schedule | ||
workflow_dispatch: | ||
schedule: | ||
- cron: '0 0 * * *' | ||
|
||
jobs: | ||
run_smoke_tests: | ||
name: Smoke Tests | ||
runs-on: ${{ matrix.os }} | ||
env: | ||
NX_CLOUD_ACCESS_TOKEN: ${{ secrets.NX_CLOUD_ACCESS_TOKEN }} | ||
timeout-minutes: 60 | ||
strategy: | ||
matrix: | ||
os: [ubuntu-latest, macos-latest] | ||
node-version: [20] | ||
steps: | ||
- name: Checkout Repo | ||
uses: actions/checkout@v4 | ||
with: | ||
fetch-depth: 0 | ||
|
||
- name: Setup node, pnpm, java, flutter, and dependencies | ||
uses: ./.github/actions/setup | ||
with: | ||
node-version: ${{ matrix.node-version }} | ||
|
||
- name: Run smoke tests | ||
env: | ||
NX_E2E_CI_CACHE_KEY: smoke-gha-${{ matrix.os }}-${{ matrix.node-version }} | ||
NX_RUN_GROUP: ${{ github.run_id }}-${{ matrix.os }}-${{ matrix.node-version }} | ||
run: pnpm nx test smoke --verbose |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,6 +1,7 @@ | ||
#!/bin/sh | ||
. "$(dirname "$0")/_/husky.sh" | ||
|
||
pnpm affected:format | ||
pnpm affected:lint | ||
pnpm affected:test | ||
pnpm sync-preset-schemas |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
const { execSync } = require('child_process'); | ||
|
||
const flutterVersion = process.env.FLUTTER_VERSION || '3.19.3'; | ||
const flutterChannel = process.env.FLUTTER_CHANNEL || 'stable'; | ||
|
||
const flutterPkgName = `flutter_linux_${flutterVersion}-${flutterChannel}.tar.xz`; | ||
const flutterPkgUrl = `https://storage.googleapis.com/flutter_infra_release/releases/${flutterChannel}/linux/${flutterPkgName}`; | ||
|
||
runInBash('ls -l /usr/local', { stdio: 'inherit' }); | ||
|
||
console.log(`Installing Flutter v${flutterVersion}-${flutterChannel} manually`); | ||
execSync(`curl -L ${flutterPkgUrl} | tar -xJf - -C /usr/local`, { | ||
stdio: 'inherit', | ||
}); | ||
|
||
console.log('Adding Flutter bin to PATH...'); | ||
runInBash( | ||
`echo 'export PATH="$PATH:/usr/local/flutter/bin"' >> $HOME/.bashrc`, | ||
{ | ||
stdio: 'inherit', | ||
} | ||
); | ||
runInBash('source $HOME/.bashrc', { stdio: 'inherit' }); | ||
runInBash('cat $HOME/.bashrc', { stdio: 'inherit' }); | ||
|
||
execSync('flutter version', { stdio: 'inherit' }); | ||
|
||
function runInBash(cmd, opts = { stdio: 'inherit' }) { | ||
execSync(`echo "#!/usr/bin/env bash\n\n${cmd}" | bash`, opts); | ||
} |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
name: Install Flutter | ||
description: Installs Flutter using snap | ||
|
||
definition: | ||
using: 'node' | ||
main: 'nx-cloud/.nx/workflow-steps/install-flutter/main.js' |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
const { execSync } = require('child_process'); | ||
|
||
const javaVersion = process.env.JAVA_VERSION || '17'; | ||
const javaDistro = process.env.JAVA_DISTRO || 'ms'; | ||
|
||
const javaVersionFull = `${javaVersion}-${javaDistro}`; | ||
|
||
console.log('Installing Utils(zip, unzip, etc)!'); | ||
execSync('sudo apt update', { stdio: 'inherit' }); | ||
execSync('sudo apt install zip unzip', { stdio: 'inherit' }); | ||
|
||
console.log('Installing SDKMan! first'); | ||
execSync('curl -s "https://get.sdkman.io" | bash', { stdio: 'inherit' }); | ||
runInBash('echo "Current terminal is: $0"', { stdio: 'inherit' }); | ||
runInBash('source $HOME/.sdkman/bin/sdkman-init.sh', { stdio: 'inherit' }); | ||
runInBash('sdk version', { stdio: 'inherit' }); | ||
|
||
console.log('Installing Java using SDKMan!'); | ||
runInBash(`sdk install java ${javaVersionFull}`, { stdio: 'inherit' }); | ||
runInBash(`sdk use java ${javaVersionFull}`, { stdio: 'inherit' }); | ||
runInBash('java -version', { stdio: 'inherit' }); | ||
|
||
function runInBash(cmd, opts = { stdio: 'inherit' }) { | ||
execSync(`echo "#!/usr/bin/env bash\n\n${cmd}" | bash`, opts); | ||
} |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
name: Install Java | ||
description: Installs Java using SDKMan! | ||
|
||
definition: | ||
using: 'node' | ||
main: 'nx-cloud/.nx/workflow-steps/install-java/main.js' |
Oops, something went wrong.