-
Notifications
You must be signed in to change notification settings - Fork 1.9k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
chore(ci): breakup GH test.yml (#8027)
turbopack and turborepo tests are often blocking each other and there is no good reason to keep them all in one workflow. This PR separates them. Since linting and JS packages are not cleanly separated between the projects, they get their own workflows as well.
- Loading branch information
Showing
4 changed files
with
639 additions
and
442 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,136 @@ | ||
name: Lint | ||
on: | ||
push: | ||
branches: [main] | ||
pull_request: | ||
|
||
concurrency: | ||
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} | ||
cancel-in-progress: ${{ github.event_name == 'pull_request' }} | ||
|
||
permissions: | ||
actions: write | ||
contents: read | ||
pull-requests: read | ||
|
||
jobs: | ||
determine_jobs: | ||
name: Determine jobs to run | ||
runs-on: ubuntu-latest | ||
permissions: | ||
contents: read | ||
pull-requests: write | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v3 | ||
|
||
- name: CI related changes | ||
id: ci | ||
uses: technote-space/get-diff-action@v6 | ||
with: | ||
PATTERNS: | | ||
.github/actions/** | ||
.github/workflows/lint.yml | ||
- name: Rust related changes | ||
id: rust | ||
uses: technote-space/get-diff-action@v6 | ||
with: | ||
PATTERNS: | | ||
pnpm-lock.yaml | ||
package.json | ||
Cargo.** | ||
crates/** | ||
shim/** | ||
xtask/** | ||
.cargo/** | ||
rust-toolchain | ||
!**.md | ||
!**.mdx | ||
- name: Formatting related changes | ||
id: format | ||
uses: technote-space/get-diff-action@v6 | ||
with: | ||
PATTERNS: | | ||
**/*.{yml,yaml,md,mdx,js,jsx,ts,tsx,json,toml,css} | ||
outputs: | ||
rust: ${{ steps.ci.outputs.diff != '' || steps.rust.outputs.diff != '' }} | ||
format: ${{ steps.ci.outputs.diff != '' || steps.format.outputs.diff != '' }} | ||
|
||
rust_lint: | ||
needs: [determine_jobs] | ||
if: needs.determine_jobs.outputs.rust == 'true' | ||
name: Rust lints | ||
runs-on: | ||
- "self-hosted" | ||
- "linux" | ||
- "x64" | ||
- "metal" | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v3 | ||
|
||
- name: Setup Rust | ||
uses: ./.github/actions/setup-rust | ||
with: | ||
github-token: "${{ secrets.GITHUB_TOKEN }}" | ||
|
||
- name: Run cargo fmt check | ||
run: | | ||
cargo fmt --check | ||
- name: Check Cargo.toml formatting (taplo) | ||
run: npx @taplo/[email protected] format --check | ||
|
||
- name: Check licenses | ||
uses: EmbarkStudios/cargo-deny-action@v1 | ||
with: | ||
command: check licenses | ||
|
||
format_lint: | ||
name: Formatting | ||
runs-on: | ||
- "self-hosted" | ||
- "linux" | ||
- "x64" | ||
- "metal" | ||
needs: determine_jobs | ||
if: needs.determine_jobs.outputs.format == 'true' | ||
env: | ||
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }} | ||
TURBO_TEAM: ${{ vars.TURBO_TEAM }} | ||
TURBO_REMOTE_ONLY: true | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v3 | ||
|
||
- name: "Setup Node" | ||
uses: ./.github/actions/setup-node | ||
with: | ||
extra-flags: --no-optional | ||
node-version: "20" | ||
|
||
- name: Install Global Turbo | ||
uses: ./.github/actions/install-global-turbo | ||
|
||
- name: Lint | ||
# Filters some packages out, but not sure why | ||
run: | | ||
turbo run lint \ | ||
--filter=!@vercel/devlow-bench \ | ||
--filter=!@vercel/experimental-nft-next-plugin \ | ||
--filter=!@vercel/experimental-nft-next-plugin \ | ||
--filter=!turbopack-bump-action \ | ||
--filter=!next-integration-stat \ | ||
--env-mode=strict | ||
cleanup: | ||
name: Cleanup | ||
needs: | ||
- rust_lint | ||
- format_lint | ||
if: always() | ||
uses: ./.github/workflows/pr-clean-caches.yml | ||
secrets: inherit |
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,103 @@ | ||
name: JS Package Tests | ||
on: | ||
push: | ||
branches: [main] | ||
pull_request: | ||
|
||
concurrency: | ||
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} | ||
cancel-in-progress: ${{ github.event_name == 'pull_request' }} | ||
|
||
permissions: | ||
actions: write | ||
contents: read | ||
pull-requests: read | ||
|
||
jobs: | ||
determine_jobs: | ||
name: Determine jobs to run | ||
runs-on: ubuntu-latest | ||
permissions: | ||
contents: read | ||
pull-requests: write | ||
steps: | ||
- name: CI related changes | ||
id: ci | ||
uses: technote-space/get-diff-action@v6 | ||
with: | ||
PATTERNS: | | ||
.github/actions/** | ||
.github/workflows/test-js-packages.yml | ||
- name: /packages related changes | ||
id: packages | ||
uses: technote-space/get-diff-action@v6 | ||
with: | ||
PATTERNS: | | ||
packages/** | ||
- name: Docs related changes | ||
id: docs | ||
uses: technote-space/get-diff-action@v6 | ||
with: | ||
PATTERNS: | | ||
docs/** | ||
outputs: | ||
ci: ${{ steps.ci.outputs.diff != ''}} | ||
packages: ${{ steps.packages.outputs.diff != '' }} | ||
docs: ${{ steps.docs.outputs.diff != '' }} | ||
|
||
js_packages: | ||
name: JS Package Tests | ||
timeout-minutes: 30 | ||
if: needs.determine_jobs.outputs.ci == 'true' || needs.determine_jobs.outputs.packages == 'true' || needs.determine_jobs.outputs.docs == 'true' | ||
needs: [determine_jobs] | ||
runs-on: ${{ matrix.os.runner }} | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
os: | ||
- name: ubuntu | ||
runner: | ||
- "self-hosted" | ||
- "linux" | ||
- "x64" | ||
- "metal" | ||
- name: macos | ||
runner: macos-12 | ||
env: | ||
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }} | ||
TURBO_TEAM: ${{ vars.TURBO_TEAM }} | ||
TURBO_REMOTE_ONLY: true | ||
|
||
steps: | ||
# on main -> current + prev commit | ||
# pr -> pr commits + base commit | ||
- name: Determine fetch depth | ||
id: fetch-depth | ||
run: | | ||
echo "depth=$(( ${{ github.event.pull_request.commits || 1 }} + 1 ))" >> $GITHUB_OUTPUT | ||
- name: Checkout | ||
uses: actions/checkout@v3 | ||
with: | ||
ref: ${{ github.ref }} | ||
fetch-depth: ${{ steps.fetch-depth.outputs.depth }} | ||
|
||
- name: Setup Turborepo Environment | ||
uses: ./.github/actions/setup-turborepo-environment | ||
with: | ||
github-token: "${{ secrets.GITHUB_TOKEN }}" | ||
node-version: "20" | ||
|
||
- name: Install Global Turbo | ||
uses: ./.github/actions/install-global-turbo | ||
|
||
- name: Run tests | ||
# We manually set TURBO_API to an empty string to override Hetzner env | ||
# We filter out turborepo-repository because it's a native package and needs | ||
# to run when turbo core changes. This job (`js_packages`) does not run on turborpeo core | ||
# changes, and we don't want to enable that beahvior for _all_ our JS packages. | ||
run: | | ||
TURBO_API= turbo run check-types test --filter=docs --filter="!turborepo-repository" --filter={./packages/*}...[${{ github.event.pull_request.base.sha || 'HEAD^1' }}] --color --env-mode=strict |
Oops, something went wrong.