2020-01-27 21:07:31 +01:00
|
|
|
on:
|
|
|
|
push:
|
|
|
|
branches: [canary]
|
|
|
|
pull_request:
|
|
|
|
types: [opened, synchronize]
|
|
|
|
|
|
|
|
name: Build, test, and deploy
|
|
|
|
|
2022-05-04 20:51:25 +02:00
|
|
|
env:
|
2023-02-10 20:58:55 +01:00
|
|
|
NAPI_CLI_VERSION: 2.14.7
|
2022-11-14 20:52:12 +01:00
|
|
|
TURBO_VERSION: 1.6.3
|
2023-03-09 22:24:24 +01:00
|
|
|
RUST_TOOLCHAIN: nightly-2023-03-09
|
2023-01-12 02:36:52 +01:00
|
|
|
PNPM_VERSION: 7.24.3
|
2023-02-21 01:33:36 +01:00
|
|
|
NODE_MAINTENANCE_VERSION: 16
|
|
|
|
NODE_LTS_VERSION: 18
|
2022-05-04 20:51:25 +02:00
|
|
|
|
2020-01-27 21:07:31 +01:00
|
|
|
jobs:
|
2021-08-14 20:34:40 +02:00
|
|
|
check-examples:
|
|
|
|
name: Check examples
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
2022-05-04 20:51:25 +02:00
|
|
|
- uses: actions/checkout@v3
|
2021-08-14 20:34:40 +02:00
|
|
|
- name: Install moreutils
|
|
|
|
run: sudo apt install moreutils
|
|
|
|
- name: Check examples
|
|
|
|
run: ./scripts/check-examples.sh
|
|
|
|
|
2020-01-27 21:07:31 +01:00
|
|
|
build:
|
|
|
|
runs-on: ubuntu-latest
|
2020-01-28 05:48:52 +01:00
|
|
|
env:
|
|
|
|
NEXT_TELEMETRY_DISABLED: 1
|
2021-11-03 22:43:31 +01:00
|
|
|
# we build a dev binary for use in CI so skip downloading
|
|
|
|
# canary next-swc binaries in the monorepo
|
|
|
|
NEXT_SKIP_NATIVE_POSTINSTALL: 1
|
2022-11-20 03:09:47 +01:00
|
|
|
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
|
2021-01-11 20:24:17 +01:00
|
|
|
outputs:
|
|
|
|
docsChange: ${{ steps.docs-change.outputs.DOCS_CHANGE }}
|
2023-03-31 06:27:16 +02:00
|
|
|
codemodChange: ${{ steps.codemod-change.outputs.CODEMOD_CHANGE }}
|
2021-10-27 02:44:15 +02:00
|
|
|
isRelease: ${{ steps.check-release.outputs.IS_RELEASE }}
|
2022-11-20 03:09:47 +01:00
|
|
|
swcChange: ${{ steps.swc-change.outputs.SWC_CHANGE }}
|
|
|
|
turboToken: ${{ steps.turbo-token.outputs.TURBO_TOKEN }}
|
2021-12-16 21:10:45 +01:00
|
|
|
weekNum: ${{ steps.get-week.outputs.WEEK }}
|
2020-01-27 21:07:31 +01:00
|
|
|
steps:
|
2021-12-02 19:10:05 +01:00
|
|
|
- name: Setup node
|
2022-05-04 20:51:25 +02:00
|
|
|
uses: actions/setup-node@v3
|
2022-07-11 16:42:51 +02:00
|
|
|
if: ${{ steps.docs-change.outputs.docsChange == 'nope' }}
|
2021-12-02 19:10:05 +01:00
|
|
|
with:
|
2023-03-24 00:28:49 +01:00
|
|
|
node-version: ${{ env.NODE_LTS_VERSION }}
|
2022-05-04 20:51:25 +02:00
|
|
|
check-latest: true
|
2021-12-02 19:10:05 +01:00
|
|
|
|
2022-05-04 20:51:25 +02:00
|
|
|
- uses: actions/checkout@v3
|
2021-01-26 21:34:30 +01:00
|
|
|
with:
|
|
|
|
fetch-depth: 25
|
|
|
|
|
2021-08-18 22:29:15 +02:00
|
|
|
# https://github.com/actions/virtual-environments/issues/1187
|
|
|
|
- name: tune linux network
|
|
|
|
run: sudo ethtool -K eth0 tx off rx off
|
2021-10-27 02:44:15 +02:00
|
|
|
|
2022-07-11 16:42:51 +02:00
|
|
|
- name: Check non-docs only change
|
2023-01-12 00:20:10 +01:00
|
|
|
run: echo "DOCS_CHANGE<<EOF" >> $GITHUB_OUTPUT; echo "$(node scripts/run-for-change.js --not --type docs --exec echo 'nope')" >> $GITHUB_OUTPUT; echo 'EOF' >> $GITHUB_OUTPUT
|
2022-07-11 16:42:51 +02:00
|
|
|
id: docs-change
|
|
|
|
|
2023-01-12 00:21:55 +01:00
|
|
|
- run: echo "${{steps.docs-change.outputs.DOCS_CHANGE}}"
|
2022-07-11 16:42:51 +02:00
|
|
|
|
2023-03-31 06:27:16 +02:00
|
|
|
- name: Check codemod change
|
|
|
|
run: echo "CODEMOD_CHANGE<<EOF" >> $GITHUB_OUTPUT; echo "$(node scripts/run-for-change.js --type next-codemod --exec echo 'yup')" >> $GITHUB_OUTPUT; echo 'EOF' >> $GITHUB_OUTPUT
|
|
|
|
id: codemod-change
|
|
|
|
|
|
|
|
- run: echo "${{steps.codemod-change.outputs.CODEMOD_CHANGE}}"
|
|
|
|
|
2023-01-10 23:44:27 +01:00
|
|
|
- run: echo "SWC_CHANGE<<EOF" >> $GITHUB_OUTPUT; echo "$(node scripts/run-for-change.js --type next-swc --exec echo 'yup')" >> $GITHUB_OUTPUT; echo 'EOF' >> $GITHUB_OUTPUT
|
2022-11-20 03:09:47 +01:00
|
|
|
id: swc-change
|
|
|
|
|
2023-01-10 23:44:27 +01:00
|
|
|
- run: echo "TURBO_TOKEN=$(echo ${TURBO_TOKEN:-empty})" >> $GITHUB_OUTPUT
|
2022-11-20 03:09:47 +01:00
|
|
|
id: turbo-token
|
|
|
|
|
2023-01-10 23:44:27 +01:00
|
|
|
- run: echo "${{steps.swc-change.outputs.SWC_CHANGE}}"
|
2022-11-20 03:09:47 +01:00
|
|
|
|
2022-05-29 06:35:16 +02:00
|
|
|
- run: npm i -g pnpm@${PNPM_VERSION}
|
|
|
|
|
|
|
|
- id: get-store-path
|
2023-01-10 23:44:27 +01:00
|
|
|
run: echo STORE_PATH=$(pnpm store path) >> $GITHUB_OUTPUT
|
2022-05-29 06:35:16 +02:00
|
|
|
|
|
|
|
- uses: actions/cache@v3
|
2023-02-07 01:35:18 +01:00
|
|
|
timeout-minutes: 5
|
2022-05-29 06:35:16 +02:00
|
|
|
id: cache-pnpm-store
|
|
|
|
with:
|
|
|
|
path: ${{ steps.get-store-path.outputs.STORE_PATH }}
|
|
|
|
key: pnpm-store-${{ hashFiles('pnpm-lock.yaml') }}
|
|
|
|
restore-keys: |
|
|
|
|
pnpm-store-
|
|
|
|
pnpm-store-${{ hashFiles('pnpm-lock.yaml') }}
|
|
|
|
|
|
|
|
- run: pnpm install
|
2023-01-17 17:47:16 +01:00
|
|
|
|
2023-01-18 19:48:12 +01:00
|
|
|
- run: TEST_TIMINGS_TOKEN=${{ secrets.TEST_TIMINGS_TOKEN }} node run-tests.js --timings --write-timings -g 1/1
|
2023-01-17 18:02:25 +01:00
|
|
|
if: ${{ steps.docs-change.outputs.DOCS_CHANGE == 'nope' }}
|
2023-01-17 17:47:16 +01:00
|
|
|
|
2022-05-29 06:35:16 +02:00
|
|
|
- run: pnpm run build
|
2021-12-09 23:36:18 +01:00
|
|
|
|
2021-10-27 02:44:15 +02:00
|
|
|
- id: check-release
|
|
|
|
run: |
|
2022-12-02 06:48:51 +01:00
|
|
|
if [[ $(node ./scripts/check-is-release.js 2> /dev/null || :) = v* ]];
|
2021-10-27 02:44:15 +02:00
|
|
|
then
|
2023-01-10 23:44:27 +01:00
|
|
|
echo "IS_RELEASE=true" >> $GITHUB_OUTPUT
|
2021-10-27 02:44:15 +02:00
|
|
|
else
|
2023-01-10 23:44:27 +01:00
|
|
|
echo "IS_RELEASE=false" >> $GITHUB_OUTPUT
|
2021-10-27 02:44:15 +02:00
|
|
|
fi
|
2021-12-16 21:10:45 +01:00
|
|
|
# We use week in the turbo cache key to keep the cache from infinitely growing
|
|
|
|
- id: get-week
|
2023-01-10 23:44:27 +01:00
|
|
|
run: echo "WEEK=$(date +%U)" >> $GITHUB_OUTPUT
|
2021-12-09 23:36:18 +01:00
|
|
|
|
2022-05-04 20:51:25 +02:00
|
|
|
- uses: actions/cache@v3
|
2023-02-07 01:35:18 +01:00
|
|
|
timeout-minutes: 5
|
2020-01-27 21:07:31 +01:00
|
|
|
id: cache-build
|
|
|
|
with:
|
2021-09-21 22:01:08 +02:00
|
|
|
path: ./*
|
2022-04-18 21:09:51 +02:00
|
|
|
key: ${{ github.sha }}-${{ github.run_number }}
|
2020-01-27 21:07:31 +01:00
|
|
|
|
|
|
|
lint:
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
needs: build
|
|
|
|
steps:
|
2021-12-02 19:10:05 +01:00
|
|
|
- name: Setup node
|
2022-05-04 20:51:25 +02:00
|
|
|
uses: actions/setup-node@v3
|
2021-12-02 19:10:05 +01:00
|
|
|
with:
|
2023-03-24 00:28:49 +01:00
|
|
|
node-version: ${{ env.NODE_LTS_VERSION }}
|
2022-05-04 20:51:25 +02:00
|
|
|
check-latest: true
|
2021-12-02 19:10:05 +01:00
|
|
|
|
2022-05-29 06:35:16 +02:00
|
|
|
- run: npm i -g pnpm@${PNPM_VERSION}
|
|
|
|
|
2022-05-04 20:51:25 +02:00
|
|
|
- uses: actions/cache@v3
|
2023-02-07 01:35:18 +01:00
|
|
|
timeout-minutes: 5
|
2020-01-27 21:07:31 +01:00
|
|
|
id: restore-build
|
|
|
|
with:
|
2021-09-21 22:01:08 +02:00
|
|
|
path: ./*
|
2022-04-18 21:09:51 +02:00
|
|
|
key: ${{ github.sha }}-${{ github.run_number }}
|
2021-08-11 11:17:57 +02:00
|
|
|
- run: ./scripts/check-manifests.js
|
2023-02-21 01:33:36 +01:00
|
|
|
|
2022-05-29 06:35:16 +02:00
|
|
|
- run: pnpm lint
|
2023-02-21 01:33:36 +01:00
|
|
|
if: ${{needs.build.outputs.docsChange == 'nope'}}
|
|
|
|
|
|
|
|
- run: pnpm lint-no-typescript
|
|
|
|
if: ${{needs.build.outputs.docsChange != 'nope'}}
|
2020-01-27 21:07:31 +01:00
|
|
|
|
2022-02-21 10:24:49 +01:00
|
|
|
rust-check:
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
needs: build
|
|
|
|
steps:
|
2022-07-11 16:42:51 +02:00
|
|
|
- uses: actions/cache@v3
|
2023-02-07 01:35:18 +01:00
|
|
|
timeout-minutes: 5
|
2022-07-11 16:42:51 +02:00
|
|
|
id: restore-build
|
|
|
|
if: ${{needs.build.outputs.docsChange == 'nope'}}
|
|
|
|
with:
|
|
|
|
path: ./*
|
|
|
|
key: ${{ github.sha }}-${{ github.run_number }}
|
|
|
|
|
2023-01-10 23:44:27 +01:00
|
|
|
- run: echo "SWC_CHANGE<<EOF" >> $GITHUB_OUTPUT; echo "$(node scripts/run-for-change.js --type next-swc --exec echo 'yup')" >> $GITHUB_OUTPUT; echo 'EOF' >> $GITHUB_OUTPUT
|
2022-07-11 16:42:51 +02:00
|
|
|
id: swc-change
|
|
|
|
|
2023-01-10 23:44:27 +01:00
|
|
|
- run: echo "${{ steps.swc-change.outputs.SWC_CHANGE }}"
|
2022-07-11 16:42:51 +02:00
|
|
|
|
2022-02-21 10:24:49 +01:00
|
|
|
- name: Install
|
|
|
|
uses: actions-rs/toolchain@v1
|
2022-07-11 16:42:51 +02:00
|
|
|
if: ${{ steps.swc-change.outputs.SWC_CHANGE == 'yup' }}
|
2022-02-21 10:24:49 +01:00
|
|
|
with:
|
|
|
|
profile: minimal
|
2022-05-04 20:51:25 +02:00
|
|
|
toolchain: ${{ env.RUST_TOOLCHAIN }}
|
2022-02-21 10:24:49 +01:00
|
|
|
components: rustfmt, clippy
|
|
|
|
|
|
|
|
- name: Cache cargo registry
|
2022-05-04 20:51:25 +02:00
|
|
|
uses: actions/cache@v3
|
2023-02-07 01:35:18 +01:00
|
|
|
timeout-minutes: 5
|
2022-07-11 16:42:51 +02:00
|
|
|
if: ${{ steps.swc-change.outputs.SWC_CHANGE == 'yup' }}
|
2022-02-21 10:24:49 +01:00
|
|
|
with:
|
|
|
|
path: ~/.cargo/registry
|
|
|
|
key: stable-ubuntu-clippy-cargo-registry
|
|
|
|
|
|
|
|
- name: Cache cargo index
|
2022-05-04 20:51:25 +02:00
|
|
|
uses: actions/cache@v3
|
2023-02-07 01:35:18 +01:00
|
|
|
timeout-minutes: 5
|
2022-07-11 16:42:51 +02:00
|
|
|
if: ${{ steps.swc-change.outputs.SWC_CHANGE == 'yup' }}
|
2022-02-21 10:24:49 +01:00
|
|
|
with:
|
|
|
|
path: ~/.cargo/git
|
|
|
|
key: stable-ubuntu-clippy-cargo-index
|
|
|
|
|
|
|
|
- name: Check
|
2022-07-11 16:42:51 +02:00
|
|
|
if: ${{ steps.swc-change.outputs.SWC_CHANGE == 'yup' }}
|
2022-02-21 10:24:49 +01:00
|
|
|
run: |
|
|
|
|
cargo fmt -- --check
|
2023-03-17 09:41:32 +01:00
|
|
|
cargo clippy --all -- -D warnings -A deprecated
|
2023-03-27 23:31:45 +02:00
|
|
|
cargo check -p next-dev --no-default-features --features cli,custom_allocator,rustls-tls,__internal_nextjs_integration_test
|
2022-02-21 10:24:49 +01:00
|
|
|
working-directory: packages/next-swc
|
|
|
|
|
2020-04-07 15:42:16 +02:00
|
|
|
checkPrecompiled:
|
|
|
|
name: Check Pre-compiled
|
|
|
|
runs-on: ubuntu-latest
|
2021-10-30 06:29:30 +02:00
|
|
|
needs: build
|
2020-04-07 15:42:16 +02:00
|
|
|
env:
|
|
|
|
NEXT_TELEMETRY_DISABLED: 1
|
|
|
|
steps:
|
2021-12-02 19:10:05 +01:00
|
|
|
- name: Setup node
|
2022-05-04 20:51:25 +02:00
|
|
|
uses: actions/setup-node@v3
|
2022-07-11 16:42:51 +02:00
|
|
|
if: ${{needs.build.outputs.docsChange == 'nope'}}
|
2021-12-02 19:10:05 +01:00
|
|
|
with:
|
2023-03-24 00:28:49 +01:00
|
|
|
node-version: ${{ env.NODE_LTS_VERSION }}
|
2022-05-04 20:51:25 +02:00
|
|
|
check-latest: true
|
2021-12-02 19:10:05 +01:00
|
|
|
|
2021-08-18 22:29:15 +02:00
|
|
|
# https://github.com/actions/virtual-environments/issues/1187
|
|
|
|
- name: tune linux network
|
2022-07-11 16:42:51 +02:00
|
|
|
if: ${{needs.build.outputs.docsChange == 'nope'}}
|
2021-08-18 22:29:15 +02:00
|
|
|
run: sudo ethtool -K eth0 tx off rx off
|
|
|
|
|
2022-05-04 20:51:25 +02:00
|
|
|
- uses: actions/checkout@v3
|
2022-07-11 16:42:51 +02:00
|
|
|
if: ${{needs.build.outputs.docsChange == 'nope'}}
|
2021-09-21 22:29:44 +02:00
|
|
|
|
|
|
|
- run: mv .git .git-bak
|
2022-07-11 16:42:51 +02:00
|
|
|
if: ${{needs.build.outputs.docsChange == 'nope'}}
|
2021-09-21 22:29:44 +02:00
|
|
|
|
2022-05-04 20:51:25 +02:00
|
|
|
- uses: actions/cache@v3
|
2023-02-07 01:35:18 +01:00
|
|
|
timeout-minutes: 5
|
2022-07-11 16:42:51 +02:00
|
|
|
if: ${{needs.build.outputs.docsChange == 'nope'}}
|
2020-04-07 15:42:16 +02:00
|
|
|
id: restore-build
|
|
|
|
with:
|
2021-09-21 22:29:44 +02:00
|
|
|
path: ./*
|
2022-04-18 21:09:51 +02:00
|
|
|
key: ${{ github.sha }}-${{ github.run_number }}
|
2021-09-21 19:17:16 +02:00
|
|
|
|
2022-06-09 17:09:18 +02:00
|
|
|
- run: npm i -g pnpm@${PNPM_VERSION}
|
|
|
|
|
2021-09-21 22:29:44 +02:00
|
|
|
- run: rm -rf .git && mv .git-bak .git
|
2022-07-11 16:42:51 +02:00
|
|
|
if: ${{needs.build.outputs.docsChange == 'nope'}}
|
2021-09-21 22:29:44 +02:00
|
|
|
|
2021-07-01 13:41:27 +02:00
|
|
|
- run: ./scripts/check-pre-compiled.sh
|
2022-07-11 16:42:51 +02:00
|
|
|
if: ${{needs.build.outputs.docsChange == 'nope'}}
|
2020-04-07 15:42:16 +02:00
|
|
|
|
2021-09-21 19:17:16 +02:00
|
|
|
- uses: EndBug/add-and-commit@v7
|
|
|
|
if: ${{ failure() }}
|
|
|
|
with:
|
|
|
|
add: 'packages/next/compiled packages/next/bundles --force'
|
|
|
|
message: '⚙ Update compiled files'
|
|
|
|
|
2020-11-10 18:25:50 +01:00
|
|
|
testUnit:
|
|
|
|
name: Test Unit
|
|
|
|
runs-on: ubuntu-latest
|
2022-03-31 14:37:59 +02:00
|
|
|
needs: [build, build-native-test]
|
2022-10-11 22:42:27 +02:00
|
|
|
timeout-minutes: 10
|
2020-11-10 18:25:50 +01:00
|
|
|
env:
|
|
|
|
NEXT_TELEMETRY_DISABLED: 1
|
|
|
|
steps:
|
2021-12-02 19:10:05 +01:00
|
|
|
- name: Setup node
|
2022-05-04 20:51:25 +02:00
|
|
|
uses: actions/setup-node@v3
|
2022-07-11 16:42:51 +02:00
|
|
|
if: ${{needs.build.outputs.docsChange == 'nope'}}
|
2021-12-02 19:10:05 +01:00
|
|
|
with:
|
2023-03-24 00:28:49 +01:00
|
|
|
node-version: ${{ env.NODE_LTS_VERSION }}
|
2022-05-04 20:51:25 +02:00
|
|
|
check-latest: true
|
2021-12-02 19:10:05 +01:00
|
|
|
|
2022-05-04 20:51:25 +02:00
|
|
|
- uses: actions/cache@v3
|
2023-02-07 01:35:18 +01:00
|
|
|
timeout-minutes: 5
|
2022-07-11 16:42:51 +02:00
|
|
|
if: ${{needs.build.outputs.docsChange == 'nope'}}
|
2020-11-10 18:25:50 +01:00
|
|
|
id: restore-build
|
|
|
|
with:
|
2021-09-21 22:01:08 +02:00
|
|
|
path: ./*
|
2022-04-18 21:09:51 +02:00
|
|
|
key: ${{ github.sha }}-${{ github.run_number }}
|
2020-11-10 18:25:50 +01:00
|
|
|
|
2022-05-04 20:51:25 +02:00
|
|
|
- uses: actions/download-artifact@v3
|
2022-07-11 16:42:51 +02:00
|
|
|
if: ${{needs.build.outputs.docsChange == 'nope'}}
|
2021-10-29 20:56:56 +02:00
|
|
|
with:
|
2022-03-31 14:37:59 +02:00
|
|
|
name: next-swc-test-binary
|
2021-11-21 12:59:56 +01:00
|
|
|
path: packages/next-swc/native
|
2021-10-29 20:56:56 +02:00
|
|
|
|
2022-06-16 20:08:07 +02:00
|
|
|
- run: npm i -g pnpm@${PNPM_VERSION}
|
2022-07-11 16:42:51 +02:00
|
|
|
if: ${{needs.build.outputs.docsChange == 'nope'}}
|
2022-06-16 20:08:07 +02:00
|
|
|
|
2021-08-24 14:52:45 +02:00
|
|
|
- run: node run-tests.js --type unit
|
2022-07-11 16:42:51 +02:00
|
|
|
if: ${{needs.build.outputs.docsChange == 'nope'}}
|
2020-11-10 18:25:50 +01:00
|
|
|
|
2023-02-21 01:33:36 +01:00
|
|
|
# run LTS matrix always and maintenance tests during a release
|
|
|
|
testDevLTS:
|
|
|
|
name: Test Development Node.js LTS
|
2021-09-13 14:36:25 +02:00
|
|
|
runs-on: ubuntu-latest
|
2022-03-31 14:37:59 +02:00
|
|
|
needs: [build, build-native-test]
|
2022-10-20 02:04:41 +02:00
|
|
|
timeout-minutes: 35
|
2021-09-13 14:36:25 +02:00
|
|
|
env:
|
|
|
|
NEXT_TELEMETRY_DISABLED: 1
|
2023-01-18 19:48:12 +01:00
|
|
|
TEST_TIMINGS_TOKEN: ${{ secrets.TEST_TIMINGS_TOKEN }}
|
2022-03-17 23:47:59 +01:00
|
|
|
strategy:
|
|
|
|
fail-fast: false
|
|
|
|
matrix:
|
2023-02-21 01:33:36 +01:00
|
|
|
node: [18]
|
|
|
|
group: [1, 2, 3, 4, 5]
|
2021-09-13 14:36:25 +02:00
|
|
|
steps:
|
2023-01-10 23:44:27 +01:00
|
|
|
- run: echo "${{needs.build.outputs.docsChange}}"
|
2021-09-13 14:36:25 +02:00
|
|
|
|
|
|
|
# https://github.com/actions/virtual-environments/issues/1187
|
|
|
|
- name: tune linux network
|
|
|
|
run: sudo ethtool -K eth0 tx off rx off
|
|
|
|
|
2022-05-04 20:51:25 +02:00
|
|
|
- uses: actions/cache@v3
|
2023-02-07 01:35:18 +01:00
|
|
|
timeout-minutes: 5
|
2022-07-11 16:42:51 +02:00
|
|
|
if: ${{needs.build.outputs.docsChange == 'nope'}}
|
2021-09-13 14:36:25 +02:00
|
|
|
id: restore-build
|
|
|
|
with:
|
2021-09-21 22:01:08 +02:00
|
|
|
path: ./*
|
2022-04-18 21:09:51 +02:00
|
|
|
key: ${{ github.sha }}-${{ github.run_number }}
|
2021-09-13 14:36:25 +02:00
|
|
|
|
2022-05-04 20:51:25 +02:00
|
|
|
- uses: actions/download-artifact@v3
|
2022-07-11 16:42:51 +02:00
|
|
|
if: ${{needs.build.outputs.docsChange == 'nope'}}
|
2021-10-29 20:56:56 +02:00
|
|
|
with:
|
2022-03-31 14:37:59 +02:00
|
|
|
name: next-swc-test-binary
|
2021-11-21 12:59:56 +01:00
|
|
|
path: packages/next-swc/native
|
2021-10-29 20:56:56 +02:00
|
|
|
|
2023-03-22 20:56:39 +01:00
|
|
|
- run: docker run --rm -v $(pwd):/work mcr.microsoft.com/playwright:v1.28.1-jammy /bin/bash -c "cd /work && curl -s https://install-node.vercel.app/v${{ matrix.node }} | FORCE=1 bash && node -v && npm i -g pnpm@${PNPM_VERSION} > /dev/null && NEXT_TEST_JOB=1 NEXT_TEST_MODE=dev TEST_TIMINGS_TOKEN=${{ secrets.TEST_TIMINGS_TOKEN }} xvfb-run node run-tests.js --type development --timings -g ${{ matrix.group }}/5 >> /proc/1/fd/1"
|
2021-09-13 14:36:25 +02:00
|
|
|
name: Run test/development
|
2022-07-11 16:42:51 +02:00
|
|
|
if: ${{needs.build.outputs.docsChange == 'nope'}}
|
2021-09-13 14:36:25 +02:00
|
|
|
|
2022-02-26 00:36:25 +01:00
|
|
|
- name: Upload test trace
|
|
|
|
if: always()
|
2022-05-04 20:51:25 +02:00
|
|
|
uses: actions/upload-artifact@v3
|
2022-02-26 00:36:25 +01:00
|
|
|
with:
|
|
|
|
name: test-trace
|
|
|
|
if-no-files-found: ignore
|
|
|
|
retention-days: 2
|
|
|
|
path: |
|
|
|
|
test/traces
|
|
|
|
|
2023-02-21 01:33:36 +01:00
|
|
|
testDevMaintenance:
|
|
|
|
name: Test Development Node.js Maintenance
|
2022-02-26 00:36:25 +01:00
|
|
|
runs-on: ubuntu-latest
|
2022-03-31 14:37:59 +02:00
|
|
|
needs: [build, build-native-test]
|
2022-10-20 02:04:41 +02:00
|
|
|
timeout-minutes: 35
|
2022-02-26 00:36:25 +01:00
|
|
|
env:
|
|
|
|
NEXT_TELEMETRY_DISABLED: 1
|
2023-01-18 19:48:12 +01:00
|
|
|
TEST_TIMINGS_TOKEN: ${{ secrets.TEST_TIMINGS_TOKEN }}
|
2022-03-17 23:47:59 +01:00
|
|
|
strategy:
|
|
|
|
fail-fast: false
|
|
|
|
matrix:
|
2023-02-21 01:33:36 +01:00
|
|
|
node: [16]
|
|
|
|
group: [1, 2, 3, 4, 5]
|
|
|
|
# we can't use "matrix" context in job level "if" so we have
|
|
|
|
# to create a separate job which can skip
|
|
|
|
if: ${{ needs.build.outputs.isRelease == 'true' }}
|
2022-02-26 00:36:25 +01:00
|
|
|
steps:
|
2023-01-10 23:44:27 +01:00
|
|
|
- run: echo "${{needs.build.outputs.docsChange}}"
|
2022-02-26 00:36:25 +01:00
|
|
|
|
|
|
|
# https://github.com/actions/virtual-environments/issues/1187
|
|
|
|
- name: tune linux network
|
|
|
|
run: sudo ethtool -K eth0 tx off rx off
|
|
|
|
|
2022-05-04 20:51:25 +02:00
|
|
|
- uses: actions/cache@v3
|
2023-02-07 01:35:18 +01:00
|
|
|
timeout-minutes: 5
|
2022-07-11 16:42:51 +02:00
|
|
|
if: ${{needs.build.outputs.docsChange == 'nope'}}
|
2022-02-26 00:36:25 +01:00
|
|
|
id: restore-build
|
|
|
|
with:
|
|
|
|
path: ./*
|
2022-04-18 21:09:51 +02:00
|
|
|
key: ${{ github.sha }}-${{ github.run_number }}
|
2022-02-26 00:36:25 +01:00
|
|
|
|
2022-05-04 20:51:25 +02:00
|
|
|
- uses: actions/download-artifact@v3
|
2022-07-11 16:42:51 +02:00
|
|
|
if: ${{needs.build.outputs.docsChange == 'nope'}}
|
2022-02-26 00:36:25 +01:00
|
|
|
with:
|
2022-03-31 14:37:59 +02:00
|
|
|
name: next-swc-test-binary
|
2022-02-26 00:36:25 +01:00
|
|
|
path: packages/next-swc/native
|
|
|
|
|
2023-03-22 20:56:39 +01:00
|
|
|
- run: docker run --rm -v $(pwd):/work mcr.microsoft.com/playwright:v1.28.1-jammy /bin/bash -c "cd /work && curl -s https://install-node.vercel.app/v${{ matrix.node }} | FORCE=1 bash && node -v && npm i -g pnpm@${PNPM_VERSION} > /dev/null && NEXT_TEST_JOB=1 NEXT_TEST_MODE=dev TEST_TIMINGS_TOKEN=${{ secrets.TEST_TIMINGS_TOKEN }} xvfb-run node run-tests.js --type development --timings -g ${{ matrix.group }}/5 >> /proc/1/fd/1"
|
2023-02-21 01:33:36 +01:00
|
|
|
name: Run test/development
|
|
|
|
if: ${{needs.build.outputs.docsChange == 'nope'}}
|
|
|
|
|
|
|
|
- name: Upload test trace
|
|
|
|
if: always()
|
|
|
|
uses: actions/upload-artifact@v3
|
|
|
|
with:
|
|
|
|
name: test-trace
|
|
|
|
if-no-files-found: ignore
|
|
|
|
retention-days: 2
|
|
|
|
path: |
|
|
|
|
test/traces
|
|
|
|
|
|
|
|
testDevE2ELTS:
|
|
|
|
name: Test Development (E2E) Node.js LTS
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
needs: [build, build-native-test]
|
|
|
|
timeout-minutes: 35
|
|
|
|
env:
|
|
|
|
NEXT_TELEMETRY_DISABLED: 1
|
|
|
|
TEST_TIMINGS_TOKEN: ${{ secrets.TEST_TIMINGS_TOKEN }}
|
|
|
|
strategy:
|
|
|
|
fail-fast: false
|
|
|
|
matrix:
|
|
|
|
node: [18]
|
|
|
|
group: [1, 2, 3, 4, 5, 6, 7, 8]
|
|
|
|
steps:
|
|
|
|
- run: echo "${{needs.build.outputs.docsChange}}"
|
|
|
|
|
|
|
|
# https://github.com/actions/virtual-environments/issues/1187
|
|
|
|
- name: tune linux network
|
|
|
|
run: sudo ethtool -K eth0 tx off rx off
|
|
|
|
|
|
|
|
- uses: actions/cache@v3
|
|
|
|
timeout-minutes: 5
|
|
|
|
if: ${{needs.build.outputs.docsChange == 'nope'}}
|
|
|
|
id: restore-build
|
|
|
|
with:
|
|
|
|
path: ./*
|
|
|
|
key: ${{ github.sha }}-${{ github.run_number }}
|
|
|
|
|
|
|
|
- uses: actions/download-artifact@v3
|
|
|
|
if: ${{needs.build.outputs.docsChange == 'nope'}}
|
|
|
|
with:
|
|
|
|
name: next-swc-test-binary
|
|
|
|
path: packages/next-swc/native
|
|
|
|
|
2023-03-22 20:56:39 +01:00
|
|
|
- run: docker run --rm -v $(pwd):/work mcr.microsoft.com/playwright:v1.28.1-jammy /bin/bash -c "cd /work && curl -s https://install-node.vercel.app/v${{ matrix.node }} | FORCE=1 bash && node -v && npm i -g pnpm@${PNPM_VERSION} > /dev/null && NEXT_TEST_JOB=1 NEXT_TEST_MODE=dev TEST_TIMINGS_TOKEN=${{ secrets.TEST_TIMINGS_TOKEN }} xvfb-run node run-tests.js --type e2e --timings -g ${{ matrix.group }}/8 >> /proc/1/fd/1"
|
2021-09-13 14:36:25 +02:00
|
|
|
name: Run test/e2e (dev)
|
2022-07-11 16:42:51 +02:00
|
|
|
if: ${{needs.build.outputs.docsChange == 'nope'}}
|
2021-09-13 14:36:25 +02:00
|
|
|
|
2021-10-25 08:21:57 +02:00
|
|
|
- name: Upload test trace
|
|
|
|
if: always()
|
2022-05-04 20:51:25 +02:00
|
|
|
uses: actions/upload-artifact@v3
|
2021-10-25 08:21:57 +02:00
|
|
|
with:
|
|
|
|
name: test-trace
|
2021-10-25 13:18:06 +02:00
|
|
|
if-no-files-found: ignore
|
2021-10-25 08:21:57 +02:00
|
|
|
retention-days: 2
|
|
|
|
path: |
|
|
|
|
test/traces
|
|
|
|
|
2023-02-21 01:33:36 +01:00
|
|
|
testDevE2EMaintenance:
|
|
|
|
name: Test Development (E2E) Node.js Maintenance
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
needs: [build, build-native-test]
|
|
|
|
timeout-minutes: 35
|
|
|
|
env:
|
|
|
|
NEXT_TELEMETRY_DISABLED: 1
|
|
|
|
TEST_TIMINGS_TOKEN: ${{ secrets.TEST_TIMINGS_TOKEN }}
|
|
|
|
strategy:
|
|
|
|
fail-fast: false
|
|
|
|
matrix:
|
|
|
|
node: [16]
|
|
|
|
group: [1, 2, 3, 4, 5, 6, 7, 8]
|
|
|
|
if: ${{ needs.build.outputs.isRelease == 'true' }}
|
|
|
|
steps:
|
|
|
|
- run: echo "${{needs.build.outputs.docsChange}}"
|
|
|
|
|
|
|
|
# https://github.com/actions/virtual-environments/issues/1187
|
|
|
|
- name: tune linux network
|
|
|
|
run: sudo ethtool -K eth0 tx off rx off
|
|
|
|
|
|
|
|
- uses: actions/cache@v3
|
|
|
|
timeout-minutes: 5
|
|
|
|
if: ${{needs.build.outputs.docsChange == 'nope'}}
|
|
|
|
id: restore-build
|
|
|
|
with:
|
|
|
|
path: ./*
|
|
|
|
key: ${{ github.sha }}-${{ github.run_number }}
|
|
|
|
|
|
|
|
- uses: actions/download-artifact@v3
|
|
|
|
if: ${{needs.build.outputs.docsChange == 'nope'}}
|
|
|
|
with:
|
|
|
|
name: next-swc-test-binary
|
|
|
|
path: packages/next-swc/native
|
|
|
|
|
2023-03-22 20:56:39 +01:00
|
|
|
- run: docker run --rm -v $(pwd):/work mcr.microsoft.com/playwright:v1.28.1-jammy /bin/bash -c "cd /work && curl -s https://install-node.vercel.app/v${{ matrix.node }} | FORCE=1 bash && node -v && npm i -g pnpm@${PNPM_VERSION} > /dev/null && NEXT_TEST_JOB=1 NEXT_TEST_MODE=dev TEST_TIMINGS_TOKEN=${{ secrets.TEST_TIMINGS_TOKEN }} xvfb-run node run-tests.js --type e2e --timings -g ${{ matrix.group }}/8 >> /proc/1/fd/1"
|
2023-02-21 01:33:36 +01:00
|
|
|
name: Run test/e2e (dev)
|
|
|
|
if: ${{needs.build.outputs.docsChange == 'nope'}}
|
|
|
|
|
|
|
|
- name: Upload test trace
|
|
|
|
if: always()
|
|
|
|
uses: actions/upload-artifact@v3
|
|
|
|
with:
|
|
|
|
name: test-trace
|
|
|
|
if-no-files-found: ignore
|
|
|
|
retention-days: 2
|
|
|
|
path: |
|
|
|
|
test/traces
|
|
|
|
|
|
|
|
testProdLTS:
|
|
|
|
name: Test Production Node.js LTS
|
2021-09-13 14:36:25 +02:00
|
|
|
runs-on: ubuntu-latest
|
2022-03-31 14:37:59 +02:00
|
|
|
needs: [build, build-native-test]
|
2022-10-04 20:13:31 +02:00
|
|
|
timeout-minutes: 15
|
2021-09-13 14:36:25 +02:00
|
|
|
env:
|
|
|
|
NEXT_TELEMETRY_DISABLED: 1
|
2023-01-18 19:48:12 +01:00
|
|
|
TEST_TIMINGS_TOKEN: ${{ secrets.TEST_TIMINGS_TOKEN }}
|
2022-03-17 23:47:59 +01:00
|
|
|
strategy:
|
|
|
|
fail-fast: false
|
|
|
|
matrix:
|
2023-02-21 01:33:36 +01:00
|
|
|
node: [18]
|
|
|
|
group: [1, 2, 3, 4, 5]
|
2021-09-13 14:36:25 +02:00
|
|
|
steps:
|
2023-01-10 23:44:27 +01:00
|
|
|
- run: echo "${{needs.build.outputs.docsChange}}"
|
2021-09-13 14:36:25 +02:00
|
|
|
|
|
|
|
# https://github.com/actions/virtual-environments/issues/1187
|
|
|
|
- name: tune linux network
|
|
|
|
run: sudo ethtool -K eth0 tx off rx off
|
|
|
|
|
2022-05-04 20:51:25 +02:00
|
|
|
- uses: actions/cache@v3
|
2023-02-07 01:35:18 +01:00
|
|
|
timeout-minutes: 5
|
2022-07-11 16:42:51 +02:00
|
|
|
if: ${{needs.build.outputs.docsChange == 'nope'}}
|
2021-09-13 14:36:25 +02:00
|
|
|
id: restore-build
|
|
|
|
with:
|
2021-09-21 22:01:08 +02:00
|
|
|
path: ./*
|
2022-04-18 21:09:51 +02:00
|
|
|
key: ${{ github.sha }}-${{ github.run_number }}
|
2021-09-13 14:36:25 +02:00
|
|
|
|
2022-05-04 20:51:25 +02:00
|
|
|
- uses: actions/download-artifact@v3
|
2022-07-11 16:42:51 +02:00
|
|
|
if: ${{needs.build.outputs.docsChange == 'nope'}}
|
2021-10-29 20:56:56 +02:00
|
|
|
with:
|
2022-03-31 14:37:59 +02:00
|
|
|
name: next-swc-test-binary
|
2021-11-21 12:59:56 +01:00
|
|
|
path: packages/next-swc/native
|
2021-10-29 20:56:56 +02:00
|
|
|
|
2023-03-22 20:56:39 +01:00
|
|
|
- run: docker run --rm -v $(pwd):/work mcr.microsoft.com/playwright:v1.28.1-jammy /bin/bash -c "cd /work && curl -s https://install-node.vercel.app/v${{ matrix.node }} | FORCE=1 bash && node -v && npm i -g pnpm@${PNPM_VERSION} > /dev/null && NEXT_TEST_JOB=1 NEXT_TEST_MODE=start TEST_TIMINGS_TOKEN=${{ secrets.TEST_TIMINGS_TOKEN }} xvfb-run node run-tests.js --type production --timings -g ${{ matrix.group }}/5 >> /proc/1/fd/1"
|
2023-02-21 01:33:36 +01:00
|
|
|
name: Run test/production
|
|
|
|
if: ${{needs.build.outputs.docsChange == 'nope'}}
|
|
|
|
|
|
|
|
testProdMaintenance:
|
|
|
|
name: Test Production Node.js Maintenance
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
needs: [build, build-native-test]
|
|
|
|
timeout-minutes: 15
|
|
|
|
env:
|
|
|
|
NEXT_TELEMETRY_DISABLED: 1
|
|
|
|
TEST_TIMINGS_TOKEN: ${{ secrets.TEST_TIMINGS_TOKEN }}
|
|
|
|
strategy:
|
|
|
|
fail-fast: false
|
|
|
|
matrix:
|
|
|
|
node: [16]
|
|
|
|
group: [1, 2, 3, 4, 5]
|
|
|
|
if: ${{ needs.build.outputs.isRelease == 'true' }}
|
|
|
|
steps:
|
|
|
|
- run: echo "${{needs.build.outputs.docsChange}}"
|
|
|
|
|
|
|
|
# https://github.com/actions/virtual-environments/issues/1187
|
|
|
|
- name: tune linux network
|
|
|
|
run: sudo ethtool -K eth0 tx off rx off
|
|
|
|
|
|
|
|
- uses: actions/cache@v3
|
|
|
|
timeout-minutes: 5
|
|
|
|
if: ${{needs.build.outputs.docsChange == 'nope'}}
|
|
|
|
id: restore-build
|
|
|
|
with:
|
|
|
|
path: ./*
|
|
|
|
key: ${{ github.sha }}-${{ github.run_number }}
|
|
|
|
|
|
|
|
- uses: actions/download-artifact@v3
|
|
|
|
if: ${{needs.build.outputs.docsChange == 'nope'}}
|
|
|
|
with:
|
|
|
|
name: next-swc-test-binary
|
|
|
|
path: packages/next-swc/native
|
|
|
|
|
2023-03-22 20:56:39 +01:00
|
|
|
- run: docker run --rm -v $(pwd):/work mcr.microsoft.com/playwright:v1.28.1-jammy /bin/bash -c "cd /work && curl -s https://install-node.vercel.app/v${{ matrix.node }} | FORCE=1 bash && node -v && npm i -g pnpm@${PNPM_VERSION} > /dev/null && NEXT_TEST_JOB=1 NEXT_TEST_MODE=start TEST_TIMINGS_TOKEN=${{ secrets.TEST_TIMINGS_TOKEN }} xvfb-run node run-tests.js --type production --timings -g ${{ matrix.group }}/5 >> /proc/1/fd/1"
|
2021-09-13 14:36:25 +02:00
|
|
|
name: Run test/production
|
2022-07-11 16:42:51 +02:00
|
|
|
if: ${{needs.build.outputs.docsChange == 'nope'}}
|
2021-09-13 14:36:25 +02:00
|
|
|
|
2023-02-21 01:33:36 +01:00
|
|
|
testProdE2ELTS:
|
|
|
|
name: Test Production (E2E) Node.js LTS
|
2022-02-26 00:36:25 +01:00
|
|
|
runs-on: ubuntu-latest
|
2022-03-31 14:37:59 +02:00
|
|
|
needs: [build, build-native-test]
|
2022-10-20 02:04:41 +02:00
|
|
|
timeout-minutes: 35
|
2022-02-26 00:36:25 +01:00
|
|
|
env:
|
|
|
|
NEXT_TELEMETRY_DISABLED: 1
|
2023-01-18 19:48:12 +01:00
|
|
|
TEST_TIMINGS_TOKEN: ${{ secrets.TEST_TIMINGS_TOKEN }}
|
2022-03-17 23:47:59 +01:00
|
|
|
strategy:
|
|
|
|
fail-fast: false
|
|
|
|
matrix:
|
2023-02-21 01:33:36 +01:00
|
|
|
node: [18]
|
|
|
|
group: [1, 2, 3, 4, 5, 6, 7, 8]
|
2022-02-26 00:36:25 +01:00
|
|
|
steps:
|
2023-01-10 23:44:27 +01:00
|
|
|
- run: echo "${{needs.build.outputs.docsChange}}"
|
2022-02-26 00:36:25 +01:00
|
|
|
|
|
|
|
# https://github.com/actions/virtual-environments/issues/1187
|
|
|
|
- name: tune linux network
|
|
|
|
run: sudo ethtool -K eth0 tx off rx off
|
|
|
|
|
2022-05-04 20:51:25 +02:00
|
|
|
- uses: actions/cache@v3
|
2023-02-07 01:35:18 +01:00
|
|
|
timeout-minutes: 5
|
2022-07-11 16:42:51 +02:00
|
|
|
if: ${{needs.build.outputs.docsChange == 'nope'}}
|
2022-02-26 00:36:25 +01:00
|
|
|
id: restore-build
|
|
|
|
with:
|
|
|
|
path: ./*
|
2022-04-18 21:09:51 +02:00
|
|
|
key: ${{ github.sha }}-${{ github.run_number }}
|
2022-02-26 00:36:25 +01:00
|
|
|
|
2022-05-04 20:51:25 +02:00
|
|
|
- uses: actions/download-artifact@v3
|
2022-07-11 16:42:51 +02:00
|
|
|
if: ${{needs.build.outputs.docsChange == 'nope'}}
|
2022-02-26 00:36:25 +01:00
|
|
|
with:
|
2022-03-31 14:37:59 +02:00
|
|
|
name: next-swc-test-binary
|
2022-02-26 00:36:25 +01:00
|
|
|
path: packages/next-swc/native
|
|
|
|
|
2023-03-22 20:56:39 +01:00
|
|
|
- run: docker run --rm -v $(pwd):/work mcr.microsoft.com/playwright:v1.28.1-jammy /bin/bash -c "cd /work && curl -s https://install-node.vercel.app/v${{ matrix.node }} | FORCE=1 bash && node -v && npm i -g pnpm@${PNPM_VERSION} > /dev/null && NEXT_TEST_JOB=1 NEXT_TEST_MODE=start TEST_TIMINGS_TOKEN=${{ secrets.TEST_TIMINGS_TOKEN }} xvfb-run node run-tests.js --type e2e --timings -g ${{ matrix.group }}/8 >> /proc/1/fd/1"
|
2023-02-21 01:33:36 +01:00
|
|
|
name: Run test/e2e (production)
|
|
|
|
if: ${{needs.build.outputs.docsChange == 'nope'}}
|
|
|
|
|
|
|
|
testProdE2EMaintenance:
|
|
|
|
name: Test Production (E2E) Node.js Maintenance
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
needs: [build, build-native-test]
|
|
|
|
timeout-minutes: 35
|
|
|
|
env:
|
|
|
|
NEXT_TELEMETRY_DISABLED: 1
|
|
|
|
TEST_TIMINGS_TOKEN: ${{ secrets.TEST_TIMINGS_TOKEN }}
|
|
|
|
strategy:
|
|
|
|
fail-fast: false
|
|
|
|
matrix:
|
|
|
|
node: [16]
|
|
|
|
group: [1, 2, 3, 4, 5, 6, 7, 8]
|
|
|
|
# run LTS matrix always and maintenance tests during a release
|
|
|
|
if: ${{ needs.build.outputs.isRelease == 'true' }}
|
|
|
|
steps:
|
|
|
|
- run: echo "${{needs.build.outputs.docsChange}}"
|
|
|
|
|
|
|
|
# https://github.com/actions/virtual-environments/issues/1187
|
|
|
|
- name: tune linux network
|
|
|
|
run: sudo ethtool -K eth0 tx off rx off
|
|
|
|
|
|
|
|
- uses: actions/cache@v3
|
|
|
|
timeout-minutes: 5
|
|
|
|
if: ${{needs.build.outputs.docsChange == 'nope'}}
|
|
|
|
id: restore-build
|
|
|
|
with:
|
|
|
|
path: ./*
|
|
|
|
key: ${{ github.sha }}-${{ github.run_number }}
|
|
|
|
|
|
|
|
- uses: actions/download-artifact@v3
|
|
|
|
if: ${{needs.build.outputs.docsChange == 'nope'}}
|
|
|
|
with:
|
|
|
|
name: next-swc-test-binary
|
|
|
|
path: packages/next-swc/native
|
|
|
|
|
2023-03-22 20:56:39 +01:00
|
|
|
- run: docker run --rm -v $(pwd):/work mcr.microsoft.com/playwright:v1.28.1-jammy /bin/bash -c "cd /work && curl -s https://install-node.vercel.app/v${{ matrix.node }} | FORCE=1 bash && node -v && npm i -g pnpm@${PNPM_VERSION} > /dev/null && NEXT_TEST_JOB=1 NEXT_TEST_MODE=start TEST_TIMINGS_TOKEN=${{ secrets.TEST_TIMINGS_TOKEN }} xvfb-run node run-tests.js --type e2e --timings -g ${{ matrix.group }}/8 >> /proc/1/fd/1"
|
2022-04-01 00:35:00 +02:00
|
|
|
name: Run test/e2e (production)
|
2022-07-11 16:42:51 +02:00
|
|
|
if: ${{needs.build.outputs.docsChange == 'nope'}}
|
2021-09-13 14:36:25 +02:00
|
|
|
|
2023-01-05 00:10:46 +01:00
|
|
|
testCNA:
|
|
|
|
name: Test Create Next App
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
needs: [build, build-native-test]
|
|
|
|
timeout-minutes: 35
|
|
|
|
env:
|
|
|
|
NEXT_TELEMETRY_DISABLED: 1
|
2023-01-18 19:48:12 +01:00
|
|
|
TEST_TIMINGS_TOKEN: ${{ secrets.TEST_TIMINGS_TOKEN }}
|
2023-01-05 00:10:46 +01:00
|
|
|
steps:
|
2023-01-10 23:44:27 +01:00
|
|
|
- run: echo "${{needs.build.outputs.docsChange}}"
|
2023-01-05 00:10:46 +01:00
|
|
|
|
|
|
|
# https://github.com/actions/virtual-environments/issues/1187
|
|
|
|
- name: tune linux network
|
|
|
|
run: sudo ethtool -K eth0 tx off rx off
|
|
|
|
|
|
|
|
- uses: actions/cache@v3
|
2023-02-07 01:35:18 +01:00
|
|
|
timeout-minutes: 5
|
2023-01-05 00:10:46 +01:00
|
|
|
if: ${{ needs.build.outputs.docsChange == 'nope' }}
|
|
|
|
id: restore-build
|
|
|
|
with:
|
|
|
|
path: ./*
|
|
|
|
key: ${{ github.sha }}-${{ github.run_number }}
|
|
|
|
|
|
|
|
- uses: actions/download-artifact@v3
|
|
|
|
if: ${{ needs.build.outputs.docsChange == 'nope' }}
|
|
|
|
with:
|
|
|
|
name: next-swc-test-binary
|
|
|
|
path: packages/next-swc/native
|
|
|
|
|
2023-04-03 22:37:14 +02:00
|
|
|
- run: docker run --rm -v $(pwd):/work mcr.microsoft.com/playwright:v1.28.1-jammy /bin/bash -c "cd /work && NODE_VERSION=${{ env.NODE_LTS_VERSION }} ./scripts/setup-node.sh && npm i -g pnpm@${PNPM_VERSION} > /dev/null && NEXT_TEST_JOB=1 NEXT_TEST_CNA=1 xvfb-run node run-tests.js test/integration/create-next-app/index.test.ts test/integration/create-next-app/templates.test.ts >> /proc/1/fd/1"
|
2023-03-28 19:39:00 +02:00
|
|
|
if: ${{ needs.build.outputs.docsChange == 'nope' }}
|
2023-01-05 00:10:46 +01:00
|
|
|
|
|
|
|
- name: Upload test trace
|
|
|
|
if: always()
|
|
|
|
uses: actions/upload-artifact@v3
|
|
|
|
with:
|
|
|
|
name: test-trace
|
|
|
|
if-no-files-found: ignore
|
|
|
|
retention-days: 2
|
|
|
|
path: |
|
|
|
|
test/traces
|
|
|
|
|
2023-02-20 05:42:02 +01:00
|
|
|
testCodemods:
|
|
|
|
name: Test Codemods
|
|
|
|
runs-on: ubuntu-latest
|
2023-02-22 02:06:13 +01:00
|
|
|
needs: [build]
|
2023-03-31 06:27:16 +02:00
|
|
|
if: ${{ needs.build.outputs.codemodChange == 'yup' }}
|
2023-02-20 05:42:02 +01:00
|
|
|
timeout-minutes: 5
|
|
|
|
env:
|
|
|
|
NEXT_TELEMETRY_DISABLED: 1
|
|
|
|
TEST_TIMINGS_TOKEN: ${{ secrets.TEST_TIMINGS_TOKEN }}
|
|
|
|
|
|
|
|
steps:
|
2023-03-31 06:27:16 +02:00
|
|
|
- run: echo "${{needs.build.outputs.codemodChange}}"
|
2023-02-20 05:42:02 +01:00
|
|
|
|
|
|
|
# https://github.com/actions/virtual-environments/issues/1187
|
|
|
|
- name: tune linux network
|
|
|
|
run: sudo ethtool -K eth0 tx off rx off
|
|
|
|
|
|
|
|
- uses: actions/cache@v3
|
|
|
|
timeout-minutes: 5
|
|
|
|
id: restore-build
|
|
|
|
with:
|
|
|
|
path: ./*
|
|
|
|
key: ${{ github.sha }}-${{ github.run_number }}
|
|
|
|
|
2023-03-31 06:27:16 +02:00
|
|
|
- name: Run tests
|
2023-04-03 22:37:14 +02:00
|
|
|
run: docker run --rm -v $(pwd):/work mcr.microsoft.com/playwright:v1.28.1-jammy /bin/bash -c "cd /work && NODE_VERSION=${{ env.NODE_LTS_VERSION }} ./scripts/setup-node.sh && npm i -g pnpm@${PNPM_VERSION} > /dev/null && cd ./packages/next-codemod && pnpm build && pnpm test >> /proc/1/fd/1"
|
2023-02-20 05:42:02 +01:00
|
|
|
|
2020-11-10 18:25:50 +01:00
|
|
|
testIntegration:
|
|
|
|
name: Test Integration
|
2020-01-27 21:07:31 +01:00
|
|
|
runs-on: ubuntu-latest
|
2022-03-31 14:37:59 +02:00
|
|
|
needs: [build, build-native-test]
|
2022-10-20 02:04:41 +02:00
|
|
|
timeout-minutes: 35
|
2020-01-28 05:48:52 +01:00
|
|
|
env:
|
|
|
|
NEXT_TELEMETRY_DISABLED: 1
|
2023-01-18 19:48:12 +01:00
|
|
|
TEST_TIMINGS_TOKEN: ${{ secrets.TEST_TIMINGS_TOKEN }}
|
2020-01-27 21:07:31 +01:00
|
|
|
strategy:
|
|
|
|
fail-fast: false
|
|
|
|
matrix:
|
2022-08-25 19:33:03 +02:00
|
|
|
group:
|
|
|
|
[
|
|
|
|
1,
|
|
|
|
2,
|
|
|
|
3,
|
|
|
|
4,
|
|
|
|
5,
|
|
|
|
6,
|
|
|
|
7,
|
|
|
|
8,
|
|
|
|
9,
|
|
|
|
10,
|
|
|
|
11,
|
|
|
|
12,
|
|
|
|
13,
|
|
|
|
14,
|
|
|
|
15,
|
|
|
|
16,
|
|
|
|
17,
|
|
|
|
18,
|
|
|
|
19,
|
|
|
|
20,
|
2022-12-04 04:49:00 +01:00
|
|
|
21,
|
|
|
|
22,
|
|
|
|
23,
|
|
|
|
24,
|
|
|
|
25,
|
2023-02-21 01:33:36 +01:00
|
|
|
26,
|
|
|
|
27,
|
|
|
|
28,
|
2022-08-25 19:33:03 +02:00
|
|
|
]
|
2020-01-27 21:07:31 +01:00
|
|
|
steps:
|
2023-01-10 23:44:27 +01:00
|
|
|
- run: echo "${{needs.build.outputs.docsChange}}"
|
2021-08-18 22:29:15 +02:00
|
|
|
|
|
|
|
# https://github.com/actions/virtual-environments/issues/1187
|
|
|
|
- name: tune linux network
|
|
|
|
run: sudo ethtool -K eth0 tx off rx off
|
|
|
|
|
2022-05-04 20:51:25 +02:00
|
|
|
- uses: actions/cache@v3
|
2023-02-07 01:35:18 +01:00
|
|
|
timeout-minutes: 5
|
2022-07-11 16:42:51 +02:00
|
|
|
if: ${{needs.build.outputs.docsChange == 'nope'}}
|
2020-01-27 21:07:31 +01:00
|
|
|
id: restore-build
|
|
|
|
with:
|
2021-09-21 22:01:08 +02:00
|
|
|
path: ./*
|
2022-04-18 21:09:51 +02:00
|
|
|
key: ${{ github.sha }}-${{ github.run_number }}
|
2020-02-01 01:57:58 +01:00
|
|
|
|
2022-05-04 20:51:25 +02:00
|
|
|
- uses: actions/download-artifact@v3
|
2022-07-11 16:42:51 +02:00
|
|
|
if: ${{needs.build.outputs.docsChange == 'nope'}}
|
2021-10-29 20:56:56 +02:00
|
|
|
with:
|
2022-03-31 14:37:59 +02:00
|
|
|
name: next-swc-test-binary
|
2021-11-21 12:59:56 +01:00
|
|
|
path: packages/next-swc/native
|
2021-10-29 20:56:56 +02:00
|
|
|
|
2023-04-03 22:37:14 +02:00
|
|
|
- run: docker run --rm -v $(pwd):/work mcr.microsoft.com/playwright:v1.28.1-jammy /bin/bash -c "cd /work && NODE_VERSION=${{ env.NODE_LTS_VERSION }} ./scripts/setup-node.sh && npm i -g pnpm@${PNPM_VERSION} > /dev/null && NEXT_TEST_JOB=1 TEST_TIMINGS_TOKEN=${{ secrets.TEST_TIMINGS_TOKEN }} xvfb-run node run-tests.js --timings -g ${{ matrix.group }}/28 >> /proc/1/fd/1"
|
2022-07-11 16:42:51 +02:00
|
|
|
if: ${{needs.build.outputs.docsChange == 'nope'}}
|
2020-01-27 21:07:31 +01:00
|
|
|
|
2021-10-25 13:18:06 +02:00
|
|
|
- name: Upload test trace
|
|
|
|
if: always()
|
2022-05-04 20:51:25 +02:00
|
|
|
uses: actions/upload-artifact@v3
|
2021-10-25 13:18:06 +02:00
|
|
|
with:
|
|
|
|
name: test-trace
|
|
|
|
if-no-files-found: ignore
|
|
|
|
retention-days: 2
|
|
|
|
path: |
|
|
|
|
test/traces
|
|
|
|
|
2020-11-05 21:45:21 +01:00
|
|
|
testElectron:
|
|
|
|
name: Test Electron
|
|
|
|
runs-on: ubuntu-latest
|
2022-03-31 14:37:59 +02:00
|
|
|
needs: [build, build-native-test]
|
2022-10-11 22:42:27 +02:00
|
|
|
timeout-minutes: 10
|
2020-11-05 21:45:21 +01:00
|
|
|
env:
|
|
|
|
NEXT_TELEMETRY_DISABLED: 1
|
|
|
|
TEST_ELECTRON: 1
|
|
|
|
steps:
|
2021-12-02 19:10:05 +01:00
|
|
|
- name: Setup node
|
2022-05-04 20:51:25 +02:00
|
|
|
uses: actions/setup-node@v3
|
2022-07-11 16:42:51 +02:00
|
|
|
if: ${{needs.build.outputs.docsChange == 'nope'}}
|
2021-12-02 19:10:05 +01:00
|
|
|
with:
|
2023-03-24 00:28:49 +01:00
|
|
|
node-version: ${{ env.NODE_MAINTENANCE_VERSION }}
|
2022-05-04 20:51:25 +02:00
|
|
|
check-latest: true
|
2021-12-02 19:10:05 +01:00
|
|
|
|
2022-05-04 20:51:25 +02:00
|
|
|
- uses: actions/cache@v3
|
2023-02-07 01:35:18 +01:00
|
|
|
timeout-minutes: 5
|
2022-07-11 16:42:51 +02:00
|
|
|
if: ${{needs.build.outputs.docsChange == 'nope'}}
|
2020-11-05 21:45:21 +01:00
|
|
|
id: restore-build
|
|
|
|
with:
|
2021-09-21 22:01:08 +02:00
|
|
|
path: ./*
|
2022-04-18 21:09:51 +02:00
|
|
|
key: ${{ github.sha }}-${{ github.run_number }}
|
2020-11-05 21:45:21 +01:00
|
|
|
|
2022-05-04 20:51:25 +02:00
|
|
|
- uses: actions/download-artifact@v3
|
2022-07-11 16:42:51 +02:00
|
|
|
if: ${{needs.build.outputs.docsChange == 'nope'}}
|
2021-10-29 20:56:56 +02:00
|
|
|
with:
|
2022-03-31 14:37:59 +02:00
|
|
|
name: next-swc-test-binary
|
2021-11-21 12:59:56 +01:00
|
|
|
path: packages/next-swc/native
|
2021-10-29 20:56:56 +02:00
|
|
|
|
2022-06-16 20:08:07 +02:00
|
|
|
- run: npm i -g pnpm@${PNPM_VERSION}
|
2022-07-11 16:42:51 +02:00
|
|
|
if: ${{needs.build.outputs.docsChange == 'nope'}}
|
2022-06-16 20:08:07 +02:00
|
|
|
|
|
|
|
- run: cd test/integration/with-electron/app && yarn install
|
2022-07-11 16:42:51 +02:00
|
|
|
if: ${{needs.build.outputs.docsChange == 'nope'}}
|
2020-11-05 21:45:21 +01:00
|
|
|
|
|
|
|
- run: xvfb-run node run-tests.js test/integration/with-electron/test/index.test.js
|
2022-07-11 16:42:51 +02:00
|
|
|
if: ${{needs.build.outputs.docsChange == 'nope'}}
|
2020-11-05 21:45:21 +01:00
|
|
|
|
2023-04-01 03:50:35 +02:00
|
|
|
# A job to run sets of tests with turbopack enabled. These tests are considered as `stable`,
|
|
|
|
# that running with turbopack should always pass.
|
|
|
|
testTurbopack:
|
|
|
|
name: Test Development (Turbopack)
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
needs: [build, build-native-test]
|
|
|
|
timeout-minutes: 35
|
|
|
|
env:
|
|
|
|
NEXT_TELEMETRY_DISABLED: 1
|
|
|
|
TEST_TIMINGS_TOKEN: ${{ secrets.TEST_TIMINGS_TOKEN }}
|
|
|
|
# Enabling backtrace will makes snapshot tests fail
|
|
|
|
RUST_BACKTRACE: 0
|
|
|
|
# Path to the custom next-swc bindings located in **docker container** image.
|
|
|
|
NEXT_BINDINGS_BIN: /work/packages/next-swc/native/next-swc.linux-x64-gnu.node
|
|
|
|
# Glob pattern to run specific tests with --turbo.
|
|
|
|
NEXT_DEV_TEST_GLOB: '*'
|
|
|
|
# List of test files to run with turbopack as blocking CI check.
|
|
|
|
# [TODO]: as list grows we should consider different way to manage this.
|
|
|
|
TEST_FILES_LIST: |
|
|
|
|
test/development/acceptance-app/dynamic-error.test.ts \
|
|
|
|
test/development/acceptance-app/unsupported-app-features.test.ts \
|
|
|
|
test/development/acceptance-app/ReactRefresh.test.ts
|
|
|
|
strategy:
|
|
|
|
fail-fast: false
|
|
|
|
steps:
|
|
|
|
- run: echo "${{needs.build.outputs.docsChange}}"
|
|
|
|
|
|
|
|
# https://github.com/actions/virtual-environments/issues/1187
|
|
|
|
- name: tune linux network
|
|
|
|
run: sudo ethtool -K eth0 tx off rx off
|
|
|
|
|
|
|
|
- uses: actions/cache@v3
|
|
|
|
timeout-minutes: 5
|
|
|
|
if: ${{needs.build.outputs.docsChange == 'nope'}}
|
|
|
|
id: restore-build
|
|
|
|
with:
|
|
|
|
path: ./*
|
|
|
|
key: ${{ github.sha }}-${{ github.run_number }}
|
|
|
|
|
|
|
|
- uses: actions/download-artifact@v3
|
|
|
|
if: ${{needs.build.outputs.docsChange == 'nope'}}
|
|
|
|
with:
|
|
|
|
name: next-swc-test-binary
|
|
|
|
path: packages/next-swc/native
|
|
|
|
|
2023-04-03 22:37:14 +02:00
|
|
|
- run: docker run --rm -v $(pwd):/work mcr.microsoft.com/playwright:v1.28.1-jammy /bin/bash -c "cd /work && NODE_VERSION=${{ env.NODE_LTS_VERSION }} ./scripts/setup-node.sh && node -v && npm i -g pnpm@${PNPM_VERSION} > /dev/null && __INTERNAL_NEXT_DEV_TEST_TURBO_DEV=TRUE __INTERNAL_CUSTOM_TURBOPACK_BINDINGS=${NEXT_BINDINGS_BIN} __INTERNAL_NEXT_DEV_TEST_TURBO_GLOB_MATCH=${NEXT_DEV_TEST_GLOB} NEXT_E2E_TEST_TIMEOUT=240000 NEXT_TEST_JOB=1 NEXT_TEST_MODE=dev TEST_TIMINGS_TOKEN=${{ secrets.TEST_TIMINGS_TOKEN }} xvfb-run node run-tests.js --type development --timings -c 1 $TEST_FILES_LIST >> /proc/1/fd/1"
|
2023-04-01 03:50:35 +02:00
|
|
|
name: Run test/development
|
|
|
|
if: ${{needs.build.outputs.docsChange == 'nope'}}
|
|
|
|
|
2020-01-27 21:07:31 +01:00
|
|
|
testsPass:
|
2020-01-27 21:19:44 +01:00
|
|
|
name: thank you, next
|
2020-01-27 21:07:31 +01:00
|
|
|
runs-on: ubuntu-latest
|
2021-09-13 14:36:25 +02:00
|
|
|
needs:
|
|
|
|
[
|
|
|
|
lint,
|
2021-09-21 19:17:16 +02:00
|
|
|
check-examples,
|
|
|
|
test-native,
|
2023-03-14 16:05:19 +01:00
|
|
|
test-native-integration,
|
2021-09-13 14:36:25 +02:00
|
|
|
checkPrecompiled,
|
|
|
|
testIntegration,
|
|
|
|
testUnit,
|
2023-02-21 01:33:36 +01:00
|
|
|
testDevLTS,
|
|
|
|
testProdLTS,
|
|
|
|
testDevE2ELTS,
|
2023-02-28 06:39:11 +01:00
|
|
|
testProdE2ELTS,
|
2021-09-13 14:36:25 +02:00
|
|
|
]
|
2020-01-27 21:07:31 +01:00
|
|
|
steps:
|
|
|
|
- run: exit 0
|
|
|
|
|
|
|
|
testFirefox:
|
|
|
|
name: Test Firefox (production)
|
2023-02-18 06:19:11 +01:00
|
|
|
runs-on: ubuntu-latest
|
2022-03-31 14:37:59 +02:00
|
|
|
needs: [build, build-native-test]
|
2022-10-11 22:42:27 +02:00
|
|
|
timeout-minutes: 10
|
2020-01-28 05:48:52 +01:00
|
|
|
env:
|
2020-05-15 22:13:37 +02:00
|
|
|
NEXT_TELEMETRY_DISABLED: 1
|
2020-01-27 21:07:31 +01:00
|
|
|
steps:
|
2022-05-04 20:51:25 +02:00
|
|
|
- uses: actions/cache@v3
|
2023-02-07 01:35:18 +01:00
|
|
|
timeout-minutes: 5
|
2022-07-11 16:42:51 +02:00
|
|
|
if: ${{needs.build.outputs.docsChange == 'nope'}}
|
2020-01-27 21:07:31 +01:00
|
|
|
id: restore-build
|
|
|
|
with:
|
2021-09-21 22:01:08 +02:00
|
|
|
path: ./*
|
2022-04-18 21:09:51 +02:00
|
|
|
key: ${{ github.sha }}-${{ github.run_number }}
|
2022-12-07 17:43:19 +01:00
|
|
|
|
2022-05-04 20:51:25 +02:00
|
|
|
- uses: actions/download-artifact@v3
|
2022-07-11 16:42:51 +02:00
|
|
|
if: ${{needs.build.outputs.docsChange == 'nope'}}
|
2021-10-29 20:56:56 +02:00
|
|
|
with:
|
2022-03-31 14:37:59 +02:00
|
|
|
name: next-swc-test-binary
|
2021-11-21 12:59:56 +01:00
|
|
|
path: packages/next-swc/native
|
2022-12-07 17:43:19 +01:00
|
|
|
|
2023-04-03 22:37:14 +02:00
|
|
|
- run: docker run --rm -v $(pwd):/work mcr.microsoft.com/playwright:v1.28.1-jammy /bin/bash -c "cd /work && NODE_VERSION=${{ env.NODE_MAINTENANCE_VERSION }} ./scripts/setup-node.sh && npm i -g pnpm@${PNPM_VERSION} > /dev/null && BROWSERNAME=firefox NEXT_TEST_JOB=1 TEST_TIMINGS_TOKEN=${{ secrets.TEST_TIMINGS_TOKEN }} xvfb-run node run-tests.js test/integration/production/test/index.test.js >> /proc/1/fd/1"
|
2022-07-11 16:42:51 +02:00
|
|
|
if: ${{needs.build.outputs.docsChange == 'nope'}}
|
2020-01-27 21:07:31 +01:00
|
|
|
|
|
|
|
testSafari:
|
|
|
|
name: Test Safari (production)
|
2023-02-18 06:19:11 +01:00
|
|
|
runs-on: ubuntu-latest
|
2022-03-31 14:37:59 +02:00
|
|
|
needs: [build, build-native-test]
|
2022-10-11 22:42:27 +02:00
|
|
|
timeout-minutes: 15
|
2020-01-28 05:48:52 +01:00
|
|
|
env:
|
2022-07-25 21:04:03 +02:00
|
|
|
NEXT_TELEMETRY_DISABLED: 1
|
2020-01-27 21:07:31 +01:00
|
|
|
steps:
|
2021-08-18 22:29:15 +02:00
|
|
|
# https://github.com/actions/virtual-environments/issues/1187
|
|
|
|
- name: tune linux network
|
|
|
|
run: sudo ethtool -K eth0 tx off rx off
|
|
|
|
|
2022-05-04 20:51:25 +02:00
|
|
|
- uses: actions/cache@v3
|
2023-02-07 01:35:18 +01:00
|
|
|
timeout-minutes: 5
|
2022-07-11 16:42:51 +02:00
|
|
|
if: ${{needs.build.outputs.docsChange == 'nope'}}
|
2020-01-27 21:07:31 +01:00
|
|
|
id: restore-build
|
|
|
|
with:
|
2021-09-21 22:01:08 +02:00
|
|
|
path: ./*
|
2022-04-18 21:09:51 +02:00
|
|
|
key: ${{ github.sha }}-${{ github.run_number }}
|
2021-09-13 14:36:25 +02:00
|
|
|
|
2022-05-04 20:51:25 +02:00
|
|
|
- uses: actions/download-artifact@v3
|
2022-07-11 16:42:51 +02:00
|
|
|
if: ${{needs.build.outputs.docsChange == 'nope'}}
|
2021-10-29 20:56:56 +02:00
|
|
|
with:
|
2022-03-31 14:37:59 +02:00
|
|
|
name: next-swc-test-binary
|
2021-11-21 12:59:56 +01:00
|
|
|
path: packages/next-swc/native
|
2021-10-29 20:56:56 +02:00
|
|
|
|
2023-03-22 20:56:39 +01:00
|
|
|
- run: docker run --rm -v $(pwd):/work mcr.microsoft.com/playwright:v1.28.1-jammy /bin/bash -c "cd /work && curl -s https://install-node.vercel.app/v{{ env.NODE_LTS_VERSION }} | FORCE=1 bash && npm i -g pnpm@${PNPM_VERSION} > /dev/null && NEXT_TEST_JOB=1 NEXT_TEST_MODE=start BROWSER_NAME=safari node run-tests.js -c 1 test/integration/production/test/index.test.js test/e2e/basepath.test.ts && DEVICE_NAME='iPhone XR' node run-tests.js -c 1 test/production/prerender-prefetch/index.test.ts >> /proc/1/fd/1"
|
2022-07-11 16:42:51 +02:00
|
|
|
if: ${{needs.build.outputs.docsChange == 'nope'}}
|
2020-01-27 21:07:31 +01:00
|
|
|
|
2023-02-21 01:33:36 +01:00
|
|
|
testFirefoxNodeLTS:
|
|
|
|
name: Test Firefox Node.js LTS
|
2023-02-18 06:19:11 +01:00
|
|
|
runs-on: ubuntu-latest
|
2022-03-31 14:37:59 +02:00
|
|
|
needs: [build, testFirefox, build-native-test]
|
2022-10-11 22:42:27 +02:00
|
|
|
timeout-minutes: 10
|
2021-11-01 22:24:15 +01:00
|
|
|
env:
|
|
|
|
NEXT_TELEMETRY_DISABLED: 1
|
|
|
|
steps:
|
2022-05-04 20:51:25 +02:00
|
|
|
- uses: actions/cache@v3
|
2023-02-07 01:35:18 +01:00
|
|
|
timeout-minutes: 5
|
2022-07-11 16:42:51 +02:00
|
|
|
if: ${{needs.build.outputs.docsChange == 'nope'}}
|
2021-11-01 22:24:15 +01:00
|
|
|
id: restore-build
|
|
|
|
with:
|
|
|
|
path: ./*
|
2022-04-18 21:09:51 +02:00
|
|
|
key: ${{ github.sha }}-${{ github.run_number }}
|
2022-12-07 17:43:19 +01:00
|
|
|
|
2022-05-04 20:51:25 +02:00
|
|
|
- uses: actions/download-artifact@v3
|
2022-07-11 16:42:51 +02:00
|
|
|
if: ${{needs.build.outputs.docsChange == 'nope'}}
|
2021-11-01 22:24:15 +01:00
|
|
|
with:
|
2022-03-31 14:37:59 +02:00
|
|
|
name: next-swc-test-binary
|
2021-11-21 12:59:56 +01:00
|
|
|
path: packages/next-swc/native
|
2022-12-07 17:43:19 +01:00
|
|
|
|
2023-04-03 22:37:14 +02:00
|
|
|
- run: docker run --rm -v $(pwd):/work mcr.microsoft.com/playwright:v1.28.1-jammy /bin/bash -c "cd /work && NODE_VERSION=${{ env.NODE_LTS_VERSION }} ./scripts/setup-node.sh && node -v && npm i -g pnpm@${PNPM_VERSION} > /dev/null && BROWSER_NAME=firefox NEXT_TEST_JOB=1 TEST_TIMINGS_TOKEN=${{ secrets.TEST_TIMINGS_TOKEN }} xvfb-run node run-tests.js test/integration/production/test/index.test.js >> /proc/1/fd/1"
|
2022-07-11 16:42:51 +02:00
|
|
|
if: ${{needs.build.outputs.docsChange == 'nope'}}
|
2021-11-01 22:24:15 +01:00
|
|
|
|
2020-01-27 21:07:31 +01:00
|
|
|
publishRelease:
|
2021-10-27 02:44:15 +02:00
|
|
|
if: ${{ needs.build.outputs.isRelease == 'true' }}
|
2020-01-27 21:07:31 +01:00
|
|
|
name: Potentially publish release
|
|
|
|
runs-on: ubuntu-latest
|
2021-10-26 04:00:36 +02:00
|
|
|
needs:
|
|
|
|
- build
|
2021-11-18 03:23:02 +01:00
|
|
|
- build-wasm
|
2021-10-26 04:00:36 +02:00
|
|
|
- build-native
|
2020-01-28 05:48:52 +01:00
|
|
|
env:
|
2021-09-03 18:58:11 +02:00
|
|
|
NPM_TOKEN: ${{ secrets.NPM_TOKEN_ELEVATED }}
|
2020-01-27 21:07:31 +01:00
|
|
|
steps:
|
2021-12-02 19:10:05 +01:00
|
|
|
- name: Setup node
|
2022-05-04 20:51:25 +02:00
|
|
|
uses: actions/setup-node@v3
|
2022-07-11 16:42:51 +02:00
|
|
|
if: ${{needs.build.outputs.docsChange == 'nope'}}
|
2021-12-02 19:10:05 +01:00
|
|
|
with:
|
2023-03-24 00:28:49 +01:00
|
|
|
node-version: ${{ env.NODE_LTS_VERSION }}
|
2022-05-04 20:51:25 +02:00
|
|
|
check-latest: true
|
2021-12-02 19:10:05 +01:00
|
|
|
|
2021-08-18 22:29:15 +02:00
|
|
|
# https://github.com/actions/virtual-environments/issues/1187
|
|
|
|
- name: tune linux network
|
|
|
|
run: sudo ethtool -K eth0 tx off rx off
|
|
|
|
|
2022-05-04 20:51:25 +02:00
|
|
|
- uses: actions/cache@v3
|
2023-02-07 01:35:18 +01:00
|
|
|
timeout-minutes: 5
|
2020-01-28 05:48:52 +01:00
|
|
|
id: restore-build
|
|
|
|
with:
|
2021-09-21 22:01:08 +02:00
|
|
|
path: ./*
|
2022-04-18 21:09:51 +02:00
|
|
|
key: ${{ github.sha }}-${{ github.run_number }}
|
2021-11-18 03:23:02 +01:00
|
|
|
|
2022-05-04 20:51:25 +02:00
|
|
|
- uses: actions/download-artifact@v3
|
2021-08-12 12:22:50 +02:00
|
|
|
with:
|
|
|
|
name: next-swc-binaries
|
2021-11-21 12:59:56 +01:00
|
|
|
path: packages/next-swc/native
|
2021-11-18 03:23:02 +01:00
|
|
|
|
2022-05-04 20:51:25 +02:00
|
|
|
- uses: actions/download-artifact@v3
|
2021-11-18 03:23:02 +01:00
|
|
|
with:
|
|
|
|
name: wasm-binaries
|
2021-11-21 12:59:56 +01:00
|
|
|
path: packages/next-swc/crates/wasm
|
2021-11-18 03:23:02 +01:00
|
|
|
|
2022-05-30 01:25:12 +02:00
|
|
|
- run: npm i -g pnpm@${PNPM_VERSION}
|
2021-08-12 19:55:07 +02:00
|
|
|
- run: echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" >> ~/.npmrc
|
2022-12-02 06:48:51 +01:00
|
|
|
- run: ./scripts/publish-native.js
|
2022-09-23 01:22:17 +02:00
|
|
|
- run: ./scripts/publish-release.js
|
2020-10-03 04:12:12 +02:00
|
|
|
|
2023-03-16 01:01:26 +01:00
|
|
|
deployExamples:
|
|
|
|
name: Deploy examples
|
|
|
|
runs-on: ubuntu-latest
|
2023-03-17 02:59:52 +01:00
|
|
|
needs: [build]
|
2023-03-16 01:01:26 +01:00
|
|
|
steps:
|
|
|
|
- uses: actions/checkout@v3
|
|
|
|
with:
|
|
|
|
fetch-depth: 25
|
|
|
|
- name: Install Vercel CLI
|
|
|
|
run: npm i -g vercel@28.16.15
|
|
|
|
- name: Deploy preview examples
|
|
|
|
if: ${{ needs.build.outputs.isRelease != 'true' }}
|
|
|
|
run: ./scripts/deploy-examples.sh
|
|
|
|
env:
|
|
|
|
VERCEL_API_TOKEN: ${{ secrets.VERCEL_API_TOKEN }}
|
|
|
|
DEPLOY_ENVIRONMENT: preview
|
|
|
|
- name: Deploy production examples
|
|
|
|
if: ${{ needs.build.outputs.isRelease == 'true' }}
|
|
|
|
run: ./scripts/deploy-examples.sh
|
|
|
|
env:
|
|
|
|
VERCEL_API_TOKEN: ${{ secrets.VERCEL_API_TOKEN }}
|
|
|
|
DEPLOY_ENVIRONMENT: production
|
|
|
|
|
2022-05-21 11:46:16 +02:00
|
|
|
testDeployE2E:
|
|
|
|
name: E2E (deploy)
|
|
|
|
runs-on: ubuntu-latest
|
2022-05-24 00:37:21 +02:00
|
|
|
needs: [publishRelease, build, build-native-test]
|
2022-05-21 11:46:16 +02:00
|
|
|
env:
|
|
|
|
NEXT_TELEMETRY_DISABLED: 1
|
2023-01-18 01:56:04 +01:00
|
|
|
VERCEL_TEST_TOKEN: ${{ secrets.VERCEL_TEST_TOKEN }}
|
|
|
|
VERCEL_TEST_TEAM: vtest314-next-e2e-tests
|
2022-05-21 11:46:16 +02:00
|
|
|
steps:
|
|
|
|
- uses: actions/cache@v3
|
2023-02-07 01:35:18 +01:00
|
|
|
timeout-minutes: 5
|
2022-05-21 11:46:16 +02:00
|
|
|
id: restore-build
|
|
|
|
with:
|
|
|
|
path: ./*
|
|
|
|
key: ${{ github.sha }}-${{ github.run_number }}
|
|
|
|
|
2022-05-24 00:37:21 +02:00
|
|
|
- uses: actions/download-artifact@v3
|
2022-07-11 16:42:51 +02:00
|
|
|
if: ${{needs.build.outputs.docsChange == 'nope'}}
|
2022-05-24 00:37:21 +02:00
|
|
|
with:
|
|
|
|
name: next-swc-test-binary
|
|
|
|
path: packages/next-swc/native
|
|
|
|
|
2023-04-02 00:36:21 +02:00
|
|
|
- run: npm i -g vercel@latest
|
|
|
|
|
2022-05-21 11:46:16 +02:00
|
|
|
- run: RESET_VC_PROJECT=true node scripts/reset-vercel-project.mjs
|
|
|
|
name: Reset test project
|
|
|
|
|
2023-04-03 22:37:14 +02:00
|
|
|
- run: docker run --rm -v $(pwd):/work mcr.microsoft.com/playwright:v1.28.1-jammy /bin/bash -c "cd /work && NODE_VERSION=${{ env.NODE_LTS_VERSION }} ./scripts/setup-node.sh && npm i -g pnpm@${PNPM_VERSION} > /dev/null && VERCEL_TEST_TOKEN=${{ secrets.VERCEL_TEST_TOKEN }} VERCEL_TEST_TEAM=vtest314-next-e2e-tests NEXT_TEST_JOB=1 NEXT_TEST_MODE=deploy TEST_TIMINGS_TOKEN=${{ secrets.TEST_TIMINGS_TOKEN }} xvfb-run node run-tests.js --type e2e >> /proc/1/fd/1"
|
2022-05-21 11:46:16 +02:00
|
|
|
name: Run test/e2e (deploy)
|
|
|
|
|
|
|
|
- name: Upload test trace
|
|
|
|
if: always()
|
|
|
|
uses: actions/upload-artifact@v3
|
|
|
|
with:
|
|
|
|
name: test-trace
|
|
|
|
if-no-files-found: ignore
|
|
|
|
retention-days: 2
|
|
|
|
path: |
|
|
|
|
test/traces
|
|
|
|
|
2021-08-10 23:24:45 +02:00
|
|
|
releaseStats:
|
2020-10-03 04:12:12 +02:00
|
|
|
name: Release Stats
|
|
|
|
runs-on: ubuntu-latest
|
2022-03-31 14:37:59 +02:00
|
|
|
needs: [publishRelease, build-native-test]
|
2020-10-03 04:12:12 +02:00
|
|
|
steps:
|
2021-12-02 19:10:05 +01:00
|
|
|
- name: Setup node
|
2022-05-04 20:51:25 +02:00
|
|
|
uses: actions/setup-node@v3
|
2021-12-02 19:10:05 +01:00
|
|
|
with:
|
2023-03-24 00:28:49 +01:00
|
|
|
node-version: ${{ env.NODE_LTS_VERSION }}
|
2022-05-04 20:51:25 +02:00
|
|
|
check-latest: true
|
2021-12-02 19:10:05 +01:00
|
|
|
|
2022-05-04 20:51:25 +02:00
|
|
|
- uses: actions/cache@v3
|
2023-02-07 01:35:18 +01:00
|
|
|
timeout-minutes: 5
|
2020-10-07 16:55:09 +02:00
|
|
|
id: restore-build
|
|
|
|
with:
|
2021-09-21 22:01:08 +02:00
|
|
|
path: ./*
|
2022-04-18 21:09:51 +02:00
|
|
|
key: ${{ github.sha }}-${{ github.run_number }}
|
2021-10-30 12:54:42 +02:00
|
|
|
|
2022-05-04 20:51:25 +02:00
|
|
|
- uses: actions/download-artifact@v3
|
2021-10-30 12:54:42 +02:00
|
|
|
with:
|
2022-03-31 14:37:59 +02:00
|
|
|
name: next-swc-test-binary
|
2021-11-21 12:59:56 +01:00
|
|
|
path: packages/next-swc/native
|
2021-10-30 12:54:42 +02:00
|
|
|
|
2021-11-21 12:59:56 +01:00
|
|
|
- run: cp -r packages/next-swc/native .github/actions/next-stats-action/native
|
2021-10-30 12:54:42 +02:00
|
|
|
|
2021-07-01 13:41:27 +02:00
|
|
|
- run: ./scripts/release-stats.sh
|
2020-10-03 04:12:12 +02:00
|
|
|
- uses: ./.github/actions/next-stats-action
|
|
|
|
env:
|
|
|
|
PR_STATS_COMMENT_TOKEN: ${{ secrets.PR_STATS_COMMENT_TOKEN }}
|
2021-08-12 12:22:50 +02:00
|
|
|
|
2022-03-31 14:37:59 +02:00
|
|
|
build-native-test:
|
|
|
|
name: Build native binary for tests and metrics
|
2022-08-22 15:30:35 +02:00
|
|
|
runs-on: ubuntu-latest
|
2023-03-09 23:06:05 +01:00
|
|
|
env:
|
|
|
|
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
|
|
|
|
TURBO_TEAM: 'vercel'
|
|
|
|
|
2021-10-29 20:56:56 +02:00
|
|
|
steps:
|
|
|
|
# https://github.com/actions/virtual-environments/issues/1187
|
|
|
|
- name: tune linux network
|
|
|
|
run: sudo ethtool -K eth0 tx off rx off
|
|
|
|
|
2022-05-04 20:51:25 +02:00
|
|
|
- uses: actions/checkout@v3
|
2021-10-29 20:56:56 +02:00
|
|
|
with:
|
|
|
|
fetch-depth: 25
|
|
|
|
|
2023-01-12 00:20:10 +01:00
|
|
|
- run: echo "DOCS_CHANGE<<EOF" >> $GITHUB_OUTPUT; echo "$(node scripts/run-for-change.js --not --type docs --exec echo 'nope')" >> $GITHUB_OUTPUT; echo 'EOF' >> $GITHUB_OUTPUT
|
2021-10-29 20:56:56 +02:00
|
|
|
id: docs-change
|
|
|
|
|
|
|
|
- name: Cache cargo registry
|
2022-05-04 20:51:25 +02:00
|
|
|
uses: actions/cache@v3
|
2023-02-07 01:35:18 +01:00
|
|
|
timeout-minutes: 5
|
2022-07-11 16:42:51 +02:00
|
|
|
if: ${{ steps.docs-change.outputs.DOCS_CHANGE == 'nope' }}
|
2021-10-29 20:56:56 +02:00
|
|
|
with:
|
|
|
|
path: ~/.cargo/registry
|
2022-08-22 15:30:35 +02:00
|
|
|
key: stable-ubuntu-latest-cargo-registry
|
2021-10-29 20:56:56 +02:00
|
|
|
|
|
|
|
- name: Cache cargo index
|
2022-05-04 20:51:25 +02:00
|
|
|
uses: actions/cache@v3
|
2023-02-07 01:35:18 +01:00
|
|
|
timeout-minutes: 5
|
2022-07-11 16:42:51 +02:00
|
|
|
if: ${{ steps.docs-change.outputs.DOCS_CHANGE == 'nope' }}
|
2021-10-29 20:56:56 +02:00
|
|
|
with:
|
|
|
|
path: ~/.cargo/git
|
2022-08-22 15:30:35 +02:00
|
|
|
key: stable-ubuntu-latest-cargo-index
|
2021-10-29 20:56:56 +02:00
|
|
|
|
2021-12-16 21:10:45 +01:00
|
|
|
# We use week in the turbo cache key to keep the cache from infinitely growing
|
|
|
|
- id: get-week
|
2023-01-10 23:44:27 +01:00
|
|
|
run: echo "WEEK=$(date +%U)" >> $GITHUB_OUTPUT
|
2021-12-16 21:10:45 +01:00
|
|
|
|
2022-01-04 22:10:16 +01:00
|
|
|
- name: Turbo Cache
|
|
|
|
id: turbo-cache
|
2022-05-04 20:51:25 +02:00
|
|
|
uses: actions/cache@v3
|
2023-02-07 01:35:18 +01:00
|
|
|
timeout-minutes: 5
|
2022-07-11 16:42:51 +02:00
|
|
|
if: ${{ steps.docs-change.outputs.DOCS_CHANGE == 'nope' }}
|
2022-01-04 22:10:16 +01:00
|
|
|
with:
|
|
|
|
path: .turbo
|
|
|
|
key: turbo-${{ github.job }}-${{ github.ref_name }}-${{ steps.get-week.outputs.WEEK }}-${{ github.sha }}
|
|
|
|
restore-keys: |
|
|
|
|
turbo-${{ github.job }}-
|
|
|
|
turbo-${{ github.job }}-${{ github.ref_name }}-${{ steps.get-week.outputs.WEEK }}-
|
|
|
|
turbo-${{ github.job }}-canary-${{ steps.get-week.outputs.WEEK }}-
|
2021-10-29 20:56:56 +02:00
|
|
|
|
2022-11-15 17:24:04 +01:00
|
|
|
- name: normalize versions
|
2022-11-15 19:41:49 +01:00
|
|
|
if: ${{ steps.docs-change.outputs.DOCS_CHANGE == 'nope' }}
|
2022-11-15 17:24:04 +01:00
|
|
|
run: node scripts/normalize-version-bump.js
|
|
|
|
|
2022-12-06 06:17:03 +01:00
|
|
|
- name: Build in docker
|
|
|
|
uses: addnab/docker-run-action@v3
|
2022-12-07 17:43:19 +01:00
|
|
|
if: ${{ steps.docs-change.outputs.DOCS_CHANGE == 'nope' }}
|
2022-12-06 06:17:03 +01:00
|
|
|
with:
|
|
|
|
image: ghcr.io/napi-rs/napi-rs/nodejs-rust:stable-2022-10-24-x64
|
2023-03-09 23:06:05 +01:00
|
|
|
options: -e TURBO_TOKEN=${{ env.TURBO_TOKEN }} -e TURBO_TEAM=${{ env.TURBO_TEAM }} -e RUST_TOOLCHAIN=${{ env.RUST_TOOLCHAIN }} -e NAPI_CLI_VERSION=${{ env.NAPI_CLI_VERSION }} -e TURBO_VERSION=${{ env.TURBO_VERSION }} -v ${{ env.HOME }}/.cargo/git:/root/.cargo/git -v ${{ env.HOME }}/.cargo/registry:/root/.cargo/registry -v ${{ github.workspace }}:/build -w /build
|
2023-02-10 20:58:55 +01:00
|
|
|
# turn on some optimization while building Rust codes to prevent tests timeout
|
2022-12-06 06:17:03 +01:00
|
|
|
run: |
|
|
|
|
set -e &&
|
2023-02-10 20:58:55 +01:00
|
|
|
export CARGO_PROFILE_DEV_OPT_LEVEL=1 &&
|
2022-12-06 06:17:03 +01:00
|
|
|
rustup toolchain install "${RUST_TOOLCHAIN}" &&
|
|
|
|
rustup default "${RUST_TOOLCHAIN}" &&
|
|
|
|
rustup target add x86_64-unknown-linux-gnu &&
|
|
|
|
npm i -g "@napi-rs/cli@${NAPI_CLI_VERSION}" "turbo@${TURBO_VERSION}" && if [ ! -f $(dirname $(which yarn))/pnpm ]; then ln -s $(which yarn) $(dirname $(which yarn))/pnpm;fi &&
|
|
|
|
unset CC_x86_64_unknown_linux_gnu && unset CC &&
|
2022-12-07 17:43:19 +01:00
|
|
|
turbo run build-native --cache-dir=".turbo" -- --target x86_64-unknown-linux-gnu &&
|
2022-12-06 06:17:03 +01:00
|
|
|
strip packages/next-swc/native/next-swc.*.node
|
2021-10-29 20:56:56 +02:00
|
|
|
|
|
|
|
- name: Upload artifact
|
2022-05-04 20:51:25 +02:00
|
|
|
uses: actions/upload-artifact@v3
|
2022-12-07 17:43:19 +01:00
|
|
|
if: ${{ steps.docs-change.outputs.DOCS_CHANGE == 'nope' }}
|
2021-10-29 20:56:56 +02:00
|
|
|
with:
|
2022-03-31 14:37:59 +02:00
|
|
|
name: next-swc-test-binary
|
2021-11-21 12:59:56 +01:00
|
|
|
path: packages/next-swc/native/next-swc.linux-x64-gnu.node
|
2021-10-29 20:56:56 +02:00
|
|
|
|
|
|
|
- name: Clear the cargo caches
|
2022-07-11 16:42:51 +02:00
|
|
|
if: ${{ steps.docs-change.outputs.DOCS_CHANGE == 'nope' }}
|
2021-10-29 20:56:56 +02:00
|
|
|
run: |
|
|
|
|
cargo install cargo-cache --no-default-features --features ci-autoclean
|
|
|
|
cargo-cache
|
|
|
|
|
|
|
|
test-native:
|
|
|
|
name: Unit Test Native Code
|
2022-08-22 15:30:35 +02:00
|
|
|
runs-on: ubuntu-latest
|
2021-10-29 20:56:56 +02:00
|
|
|
|
|
|
|
steps:
|
2022-05-04 20:51:25 +02:00
|
|
|
- uses: actions/checkout@v3
|
2021-10-29 20:56:56 +02:00
|
|
|
with:
|
|
|
|
fetch-depth: 25
|
2022-07-11 16:42:51 +02:00
|
|
|
|
2023-01-10 23:44:27 +01:00
|
|
|
- run: echo "SWC_CHANGE<<EOF" >> $GITHUB_OUTPUT; echo "$(node scripts/run-for-change.js --type next-swc --exec echo 'yup')" >> $GITHUB_OUTPUT; echo 'EOF' >> $GITHUB_OUTPUT
|
2022-07-11 16:42:51 +02:00
|
|
|
id: swc-change
|
|
|
|
|
2023-01-10 23:44:27 +01:00
|
|
|
- run: echo "${{ steps.swc-change.outputs.SWC_CHANGE }}"
|
2022-07-11 16:42:51 +02:00
|
|
|
|
2021-10-29 20:56:56 +02:00
|
|
|
- name: Install
|
2022-07-11 16:42:51 +02:00
|
|
|
if: ${{ steps.swc-change.outputs.SWC_CHANGE == 'yup' }}
|
2021-10-29 20:56:56 +02:00
|
|
|
uses: actions-rs/toolchain@v1
|
|
|
|
with:
|
2022-05-04 20:51:25 +02:00
|
|
|
toolchain: ${{ env.RUST_TOOLCHAIN }}
|
2021-10-29 20:56:56 +02:00
|
|
|
profile: minimal
|
2022-07-11 16:42:51 +02:00
|
|
|
|
2023-03-10 21:59:54 +01:00
|
|
|
- run: cd packages/next-swc && cargo test --workspace --exclude next-dev-tests
|
2022-07-11 16:42:51 +02:00
|
|
|
if: ${{ steps.swc-change.outputs.SWC_CHANGE == 'yup' }}
|
2021-10-29 20:56:56 +02:00
|
|
|
|
2023-03-14 16:05:19 +01:00
|
|
|
test-native-integration:
|
|
|
|
name: Integration Test Native Code
|
|
|
|
runs-on: ubuntu-latest-16-core-oss
|
|
|
|
needs: build
|
|
|
|
|
|
|
|
env:
|
|
|
|
CARGO_PROFILE_RELEASE_LTO: false
|
|
|
|
|
|
|
|
steps:
|
|
|
|
- uses: actions/cache@v3
|
|
|
|
timeout-minutes: 5
|
|
|
|
id: restore-build
|
|
|
|
with:
|
|
|
|
path: ./*
|
|
|
|
key: ${{ github.sha }}-${{ github.run_number }}
|
|
|
|
|
2023-04-01 23:27:38 +02:00
|
|
|
- run: echo "${{needs.build.outputs.docsChange == 'nope'}}"
|
2023-03-14 16:05:19 +01:00
|
|
|
|
|
|
|
- name: Install
|
2023-04-01 23:27:38 +02:00
|
|
|
if: ${{needs.build.outputs.docsChange == 'nope'}}
|
2023-03-14 16:05:19 +01:00
|
|
|
uses: actions-rs/toolchain@v1
|
|
|
|
with:
|
|
|
|
toolchain: ${{ env.RUST_TOOLCHAIN }}
|
|
|
|
profile: minimal
|
|
|
|
|
|
|
|
- name: Install nextest
|
|
|
|
uses: taiki-e/install-action@nextest
|
|
|
|
|
|
|
|
- name: Build tests
|
|
|
|
timeout-minutes: 60
|
|
|
|
run: cd packages/next-swc && cargo nextest run -p next-dev-tests --release --no-run
|
2023-04-01 23:27:38 +02:00
|
|
|
if: ${{needs.build.outputs.docsChange == 'nope'}}
|
2023-03-14 16:05:19 +01:00
|
|
|
|
|
|
|
- name: Run tests
|
|
|
|
timeout-minutes: 20
|
|
|
|
run: cd packages/next-swc && cargo nextest run -p next-dev-tests --release --no-fail-fast
|
2023-04-01 23:27:38 +02:00
|
|
|
if: ${{needs.build.outputs.docsChange == 'nope'}}
|
2023-03-14 16:05:19 +01:00
|
|
|
|
2021-12-07 11:14:38 +01:00
|
|
|
test-wasm:
|
|
|
|
name: Test the wasm build
|
2023-02-18 06:19:11 +01:00
|
|
|
runs-on: ubuntu-latest
|
2022-10-11 22:42:27 +02:00
|
|
|
timeout-minutes: 15
|
2022-03-31 14:37:59 +02:00
|
|
|
needs: [build, build-native-test, build-wasm-dev]
|
2021-12-07 11:14:38 +01:00
|
|
|
|
|
|
|
steps:
|
2022-05-04 20:51:25 +02:00
|
|
|
- uses: actions/cache@v3
|
2023-02-07 01:35:18 +01:00
|
|
|
timeout-minutes: 5
|
2022-07-11 16:42:51 +02:00
|
|
|
if: ${{needs.build.outputs.docsChange == 'nope'}}
|
2021-12-07 11:14:38 +01:00
|
|
|
id: restore-build
|
|
|
|
with:
|
|
|
|
path: ./*
|
|
|
|
key: ${{ github.sha }}
|
|
|
|
|
2022-05-04 20:51:25 +02:00
|
|
|
- uses: actions/download-artifact@v3
|
2022-07-11 16:42:51 +02:00
|
|
|
if: ${{needs.build.outputs.docsChange == 'nope'}}
|
2021-12-07 11:14:38 +01:00
|
|
|
with:
|
|
|
|
name: wasm-dev-binary
|
|
|
|
path: packages/next-swc/crates/wasm/pkg-nodejs
|
|
|
|
|
|
|
|
- run: ls packages/next-swc/crates/wasm
|
2022-07-11 16:42:51 +02:00
|
|
|
if: ${{needs.build.outputs.docsChange == 'nope'}}
|
2021-12-07 11:14:38 +01:00
|
|
|
|
2022-05-04 20:51:25 +02:00
|
|
|
- uses: actions/download-artifact@v3
|
2022-07-11 16:42:51 +02:00
|
|
|
if: ${{needs.build.outputs.docsChange == 'nope'}}
|
2021-12-07 11:14:38 +01:00
|
|
|
with:
|
2022-03-31 14:37:59 +02:00
|
|
|
name: next-swc-test-binary
|
2021-12-07 11:14:38 +01:00
|
|
|
path: packages/next-swc/native
|
|
|
|
|
2023-04-03 22:37:14 +02:00
|
|
|
- run: docker run --rm -v $(pwd):/work mcr.microsoft.com/playwright:v1.28.1-jammy /bin/bash -c "cd /work && NODE_VERSION=${{ env.NODE_LTS_VERSION }} ./scripts/setup-node.sh && node -v && node ./scripts/setup-wasm.mjs && npm i -g pnpm@${PNPM_VERSION} > /dev/null && TEST_WASM=true xvfb-run node run-tests.js test/integration/production/test/index.test.js test/e2e/streaming-ssr/index.test.ts >> /proc/1/fd/1"
|
2022-07-11 16:42:51 +02:00
|
|
|
if: ${{needs.build.outputs.docsChange == 'nope'}}
|
2022-04-27 02:59:02 +02:00
|
|
|
|
2021-10-29 20:56:56 +02:00
|
|
|
# Build binaries for publishing
|
2021-08-12 12:22:50 +02:00
|
|
|
build-native:
|
|
|
|
strategy:
|
2022-02-18 17:04:43 +01:00
|
|
|
fail-fast: false
|
2021-08-12 12:22:50 +02:00
|
|
|
matrix:
|
2022-02-18 17:04:43 +01:00
|
|
|
settings:
|
2022-05-30 00:12:04 +02:00
|
|
|
# pnpm is aliased here temporarily until the build docker
|
|
|
|
# image is updated past Node.js v14.19 (current 14.18.1)
|
2022-02-18 17:04:43 +01:00
|
|
|
- host: macos-latest
|
|
|
|
target: 'x86_64-apple-darwin'
|
|
|
|
build: |
|
2022-05-30 00:12:04 +02:00
|
|
|
npm i -g "@napi-rs/cli@${NAPI_CLI_VERSION}" "turbo@${TURBO_VERSION}" && if [ ! -f $(dirname $(which yarn))/pnpm ]; then ln -s $(which yarn) $(dirname $(which yarn))/pnpm;fi
|
2022-11-15 19:33:03 +01:00
|
|
|
turbo run build-native -- --release --target x86_64-apple-darwin
|
2022-02-18 17:04:43 +01:00
|
|
|
strip -x packages/next-swc/native/next-swc.*.node
|
|
|
|
- host: windows-latest
|
|
|
|
build: |
|
2022-05-29 06:35:16 +02:00
|
|
|
npm i -g "@napi-rs/cli@${NAPI_CLI_VERSION}" "turbo@${TURBO_VERSION}" "pnpm@${PNPM_VERSION}"
|
2022-11-15 19:33:03 +01:00
|
|
|
turbo run build-native -- --release --target x86_64-pc-windows-msvc
|
2022-02-18 17:04:43 +01:00
|
|
|
target: 'x86_64-pc-windows-msvc'
|
|
|
|
- host: windows-latest
|
|
|
|
build: |
|
2022-05-29 06:35:16 +02:00
|
|
|
npm i -g "@napi-rs/cli@${NAPI_CLI_VERSION}" "turbo@${TURBO_VERSION}" "pnpm@${PNPM_VERSION}"
|
2022-11-15 17:24:04 +01:00
|
|
|
turbo run build-native-no-plugin -- --release --target i686-pc-windows-msvc
|
2022-02-18 17:04:43 +01:00
|
|
|
target: 'i686-pc-windows-msvc'
|
|
|
|
- host: ubuntu-latest
|
|
|
|
target: 'x86_64-unknown-linux-gnu'
|
2022-10-24 07:22:28 +02:00
|
|
|
docker: ghcr.io/napi-rs/napi-rs/nodejs-rust:stable-2022-10-24-x64
|
2022-02-18 17:04:43 +01:00
|
|
|
build: >-
|
|
|
|
set -e &&
|
2022-05-04 20:51:25 +02:00
|
|
|
rustup toolchain install "${RUST_TOOLCHAIN}" &&
|
|
|
|
rustup default "${RUST_TOOLCHAIN}" &&
|
2022-02-18 17:04:43 +01:00
|
|
|
rustup target add x86_64-unknown-linux-gnu &&
|
2022-05-30 00:12:04 +02:00
|
|
|
npm i -g "@napi-rs/cli@${NAPI_CLI_VERSION}" "turbo@${TURBO_VERSION}" && if [ ! -f $(dirname $(which yarn))/pnpm ]; then ln -s $(which yarn) $(dirname $(which yarn))/pnpm;fi &&
|
2022-10-24 07:22:28 +02:00
|
|
|
unset CC_x86_64_unknown_linux_gnu && unset CC &&
|
2022-11-15 17:24:04 +01:00
|
|
|
turbo run build-native -- --release --target x86_64-unknown-linux-gnu &&
|
2022-05-27 16:54:34 +02:00
|
|
|
strip packages/next-swc/native/next-swc.*.node
|
2022-02-18 17:04:43 +01:00
|
|
|
- host: ubuntu-latest
|
|
|
|
target: 'x86_64-unknown-linux-musl'
|
2022-10-24 07:22:28 +02:00
|
|
|
docker: ghcr.io/napi-rs/napi-rs/nodejs-rust:stable-2022-10-24-alpine
|
2022-02-18 17:04:43 +01:00
|
|
|
build: >-
|
|
|
|
set -e &&
|
2022-11-14 20:52:12 +01:00
|
|
|
apk add --no-cache libc6-compat &&
|
2022-05-04 20:51:25 +02:00
|
|
|
rustup toolchain install "${RUST_TOOLCHAIN}" &&
|
|
|
|
rustup default "${RUST_TOOLCHAIN}" &&
|
2022-02-18 17:04:43 +01:00
|
|
|
rustup target add x86_64-unknown-linux-musl &&
|
2022-05-30 00:12:04 +02:00
|
|
|
npm i -g "@napi-rs/cli@${NAPI_CLI_VERSION}" "turbo@${TURBO_VERSION}" && if [ ! -f $(dirname $(which yarn))/pnpm ]; then ln -s $(which yarn) $(dirname $(which yarn))/pnpm;fi &&
|
2022-11-15 17:24:04 +01:00
|
|
|
turbo run build-native -- --release --target x86_64-unknown-linux-musl &&
|
2022-02-18 17:04:43 +01:00
|
|
|
strip packages/next-swc/native/next-swc.*.node
|
|
|
|
- host: macos-latest
|
|
|
|
target: 'aarch64-apple-darwin'
|
|
|
|
build: |
|
|
|
|
sudo rm -Rf /Library/Developer/CommandLineTools/SDKs/*;
|
|
|
|
export CC=$(xcrun -f clang);
|
|
|
|
export CXX=$(xcrun -f clang++);
|
|
|
|
SYSROOT=$(xcrun --sdk macosx --show-sdk-path);
|
|
|
|
export CFLAGS="-isysroot $SYSROOT -isystem $SYSROOT";
|
2022-05-30 00:12:04 +02:00
|
|
|
npm i -g "@napi-rs/cli@${NAPI_CLI_VERSION}" "turbo@${TURBO_VERSION}" && if [ ! -f $(dirname $(which yarn))/pnpm ]; then ln -s $(which yarn) $(dirname $(which yarn))/pnpm;fi
|
2022-11-15 17:24:04 +01:00
|
|
|
turbo run build-native -- --release --target aarch64-apple-darwin
|
2022-02-18 17:04:43 +01:00
|
|
|
strip -x packages/next-swc/native/next-swc.*.node
|
|
|
|
- host: ubuntu-latest
|
|
|
|
target: 'aarch64-unknown-linux-gnu'
|
2022-10-24 07:22:28 +02:00
|
|
|
docker: ghcr.io/napi-rs/napi-rs/nodejs-rust:stable-2022-10-24-aarch64
|
2022-02-18 17:04:43 +01:00
|
|
|
build: >-
|
|
|
|
set -e &&
|
2022-10-12 08:13:06 +02:00
|
|
|
export JEMALLOC_SYS_WITH_LG_PAGE=16 &&
|
2022-05-04 20:51:25 +02:00
|
|
|
rustup toolchain install "${RUST_TOOLCHAIN}" &&
|
|
|
|
rustup default "${RUST_TOOLCHAIN}" &&
|
2022-02-18 17:04:43 +01:00
|
|
|
rustup target add aarch64-unknown-linux-gnu &&
|
2022-05-30 00:12:04 +02:00
|
|
|
npm i -g "@napi-rs/cli@${NAPI_CLI_VERSION}" "turbo@${TURBO_VERSION}" && if [ ! -f $(dirname $(which yarn))/pnpm ]; then ln -s $(which yarn) $(dirname $(which yarn))/pnpm;fi &&
|
2022-05-27 16:54:34 +02:00
|
|
|
export CC_aarch64_unknown_linux_gnu=/usr/aarch64-unknown-linux-gnu/bin/aarch64-unknown-linux-gnu-gcc &&
|
2022-11-15 17:24:04 +01:00
|
|
|
turbo run build-native -- --release --target aarch64-unknown-linux-gnu &&
|
2022-02-18 17:04:43 +01:00
|
|
|
llvm-strip -x packages/next-swc/native/next-swc.*.node
|
|
|
|
- host: ubuntu-latest
|
|
|
|
target: 'aarch64-unknown-linux-musl'
|
2022-10-24 07:22:28 +02:00
|
|
|
docker: ghcr.io/napi-rs/napi-rs/nodejs-rust:stable-2022-10-24-alpine
|
2022-02-18 17:04:43 +01:00
|
|
|
build: >-
|
|
|
|
set -e &&
|
2022-11-14 20:52:12 +01:00
|
|
|
apk add --no-cache libc6-compat &&
|
2022-10-12 08:13:06 +02:00
|
|
|
export JEMALLOC_SYS_WITH_LG_PAGE=16 &&
|
2022-05-30 00:12:04 +02:00
|
|
|
npm i -g "@napi-rs/cli@${NAPI_CLI_VERSION}" "turbo@${TURBO_VERSION}" && if [ ! -f $(dirname $(which yarn))/pnpm ]; then ln -s $(which yarn) $(dirname $(which yarn))/pnpm;fi &&
|
2022-05-04 20:51:25 +02:00
|
|
|
rustup toolchain install "${RUST_TOOLCHAIN}" &&
|
|
|
|
rustup default "${RUST_TOOLCHAIN}" &&
|
2022-02-18 17:04:43 +01:00
|
|
|
rustup target add aarch64-unknown-linux-musl &&
|
2022-11-15 17:24:04 +01:00
|
|
|
turbo run build-native -- --release --target aarch64-unknown-linux-musl &&
|
2022-02-18 17:04:43 +01:00
|
|
|
llvm-strip -x packages/next-swc/native/next-swc.*.node
|
|
|
|
- host: windows-latest
|
|
|
|
target: 'aarch64-pc-windows-msvc'
|
|
|
|
build: |
|
2022-05-29 06:35:16 +02:00
|
|
|
npm i -g "@napi-rs/cli@${NAPI_CLI_VERSION}" "turbo@${TURBO_VERSION}" "pnpm@${PNPM_VERSION}"
|
2022-12-19 22:10:02 +01:00
|
|
|
turbo run build-native-no-plugin-woa -- --release --target aarch64-pc-windows-msvc --cargo-flags=--no-default-features
|
2023-01-12 21:59:01 +01:00
|
|
|
if: ${{ needs.build.outputs.isRelease == 'true' || (needs.build.outputs.turboToken != 'empty') }}
|
2022-02-18 17:04:43 +01:00
|
|
|
needs: build
|
|
|
|
name: stable - ${{ matrix.settings.target }} - node@16
|
|
|
|
runs-on: ${{ matrix.settings.host }}
|
2022-11-15 17:24:04 +01:00
|
|
|
env:
|
|
|
|
TURBO_TEAM: 'vercel'
|
|
|
|
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
|
|
|
|
TURBO_REMOTE_ONLY: 'true'
|
2021-08-12 12:22:50 +02:00
|
|
|
steps:
|
2021-08-18 22:29:15 +02:00
|
|
|
# https://github.com/actions/virtual-environments/issues/1187
|
|
|
|
- name: tune linux network
|
|
|
|
run: sudo ethtool -K eth0 tx off rx off
|
2022-08-22 15:30:35 +02:00
|
|
|
if: ${{ matrix.settings.host == 'ubuntu-latest' }}
|
2022-02-18 17:04:43 +01:00
|
|
|
- name: tune linux network
|
|
|
|
run: sudo ethtool -K eth0 tx off rx off
|
|
|
|
if: ${{ matrix.settings.host == 'ubuntu-latest' }}
|
2021-08-18 22:29:15 +02:00
|
|
|
- name: tune windows network
|
|
|
|
run: Disable-NetAdapterChecksumOffload -Name * -TcpIPv4 -UdpIPv4 -TcpIPv6 -UdpIPv6
|
2022-02-18 17:04:43 +01:00
|
|
|
if: ${{ matrix.settings.host == 'windows-latest' }}
|
2021-08-18 22:29:15 +02:00
|
|
|
- name: tune mac network
|
|
|
|
run: sudo sysctl -w net.link.generic.system.hwcksum_tx=0 && sudo sysctl -w net.link.generic.system.hwcksum_rx=0
|
2022-02-18 17:04:43 +01:00
|
|
|
if: ${{ matrix.settings.host == 'macos-latest' }}
|
2021-11-04 00:35:26 +01:00
|
|
|
# we use checkout here instead of the build cache since
|
|
|
|
# it can fail to restore in different OS'
|
2022-05-04 20:51:25 +02:00
|
|
|
- uses: actions/checkout@v3
|
2021-10-26 04:00:36 +02:00
|
|
|
|
|
|
|
- name: Setup node
|
2022-05-04 20:51:25 +02:00
|
|
|
uses: actions/setup-node@v3
|
2022-02-18 17:04:43 +01:00
|
|
|
if: ${{ !matrix.settings.docker }}
|
2021-10-26 04:00:36 +02:00
|
|
|
with:
|
2023-03-24 00:28:49 +01:00
|
|
|
node-version: ${{ env.NODE_LTS_VERSION }}
|
2022-02-18 17:04:43 +01:00
|
|
|
check-latest: true
|
2021-11-04 00:35:26 +01:00
|
|
|
|
2022-02-18 17:04:43 +01:00
|
|
|
- name: Install
|
2021-10-26 04:00:36 +02:00
|
|
|
uses: actions-rs/toolchain@v1
|
2022-02-18 17:04:43 +01:00
|
|
|
if: ${{ !matrix.settings.docker }}
|
2021-10-26 04:00:36 +02:00
|
|
|
with:
|
|
|
|
profile: minimal
|
|
|
|
override: true
|
2022-05-04 20:51:25 +02:00
|
|
|
toolchain: ${{ env.RUST_TOOLCHAIN }}
|
2022-02-18 17:04:43 +01:00
|
|
|
target: ${{ matrix.settings.target }}
|
2021-10-26 04:00:36 +02:00
|
|
|
|
2022-02-18 17:04:43 +01:00
|
|
|
- name: Cache cargo registry
|
2022-05-04 20:51:25 +02:00
|
|
|
uses: actions/cache@v3
|
2023-02-07 01:35:18 +01:00
|
|
|
timeout-minutes: 5
|
2021-10-26 04:00:36 +02:00
|
|
|
with:
|
2022-02-18 17:04:43 +01:00
|
|
|
path: ~/.cargo/registry
|
|
|
|
key: ${{ matrix.settings.target }}-cargo-registry
|
2021-10-26 04:00:36 +02:00
|
|
|
|
2022-02-18 17:04:43 +01:00
|
|
|
- name: Cache cargo index
|
2022-05-04 20:51:25 +02:00
|
|
|
uses: actions/cache@v3
|
2023-02-07 01:35:18 +01:00
|
|
|
timeout-minutes: 5
|
2022-01-04 22:10:16 +01:00
|
|
|
with:
|
2022-02-18 17:04:43 +01:00
|
|
|
path: ~/.cargo/git
|
|
|
|
key: ${{ matrix.settings.target }}-cargo-index
|
2021-11-04 00:35:26 +01:00
|
|
|
|
2022-11-15 17:24:04 +01:00
|
|
|
- name: normalize versions
|
|
|
|
run: node scripts/normalize-version-bump.js
|
|
|
|
|
2022-02-18 17:04:43 +01:00
|
|
|
- name: Setup toolchain
|
|
|
|
run: ${{ matrix.settings.setup }}
|
|
|
|
if: ${{ matrix.settings.setup }}
|
|
|
|
shell: bash
|
2021-10-26 04:00:36 +02:00
|
|
|
|
2022-02-18 17:04:43 +01:00
|
|
|
- name: Build in docker
|
|
|
|
uses: addnab/docker-run-action@v3
|
|
|
|
if: ${{ matrix.settings.docker }}
|
2022-01-04 22:10:16 +01:00
|
|
|
with:
|
2022-02-18 17:04:43 +01:00
|
|
|
image: ${{ matrix.settings.docker }}
|
2022-11-15 17:24:04 +01:00
|
|
|
options: -e RUST_TOOLCHAIN=${{ env.RUST_TOOLCHAIN }} -e NAPI_CLI_VERSION=${{ env.NAPI_CLI_VERSION }} -e TURBO_VERSION=${{ env.TURBO_VERSION }} -e TURBO_TEAM=vercel -e TURBO_TOKEN=${{ secrets.TURBO_TOKEN }} -e TURBO_REMOTE_ONLY=true -v ${{ env.HOME }}/.cargo/git:/root/.cargo/git -v ${{ env.HOME }}/.cargo/registry:/root/.cargo/registry -v ${{ github.workspace }}:/build -w /build
|
2022-02-18 17:04:43 +01:00
|
|
|
run: ${{ matrix.settings.build }}
|
2021-10-26 04:00:36 +02:00
|
|
|
|
2022-02-18 17:04:43 +01:00
|
|
|
- name: 'Build'
|
|
|
|
run: ${{ matrix.settings.build }}
|
|
|
|
if: ${{ !matrix.settings.docker }}
|
2021-10-26 04:00:36 +02:00
|
|
|
shell: bash
|
|
|
|
|
|
|
|
- name: Upload artifact
|
2023-01-18 01:56:04 +01:00
|
|
|
if: ${{ needs.build.outputs.isRelease == 'true' }}
|
2022-05-04 20:51:25 +02:00
|
|
|
uses: actions/upload-artifact@v3
|
2021-10-26 04:00:36 +02:00
|
|
|
with:
|
|
|
|
name: next-swc-binaries
|
2022-02-18 17:04:43 +01:00
|
|
|
path: packages/next-swc/native/next-swc.*.node
|
2021-11-17 20:01:02 +01:00
|
|
|
|
|
|
|
build-wasm:
|
|
|
|
needs: build
|
2023-01-12 21:59:01 +01:00
|
|
|
if: ${{ needs.build.outputs.isRelease == 'true' || (needs.build.outputs.turboToken != 'empty') }}
|
2021-11-17 20:01:02 +01:00
|
|
|
strategy:
|
|
|
|
matrix:
|
|
|
|
target: [web, nodejs]
|
2022-05-24 22:49:20 +02:00
|
|
|
runs-on: macos-latest
|
2022-11-15 17:24:04 +01:00
|
|
|
env:
|
|
|
|
TURBO_TEAM: 'vercel'
|
|
|
|
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
|
|
|
|
TURBO_REMOTE_ONLY: 'true'
|
2021-11-17 20:01:02 +01:00
|
|
|
steps:
|
2022-11-18 00:19:40 +01:00
|
|
|
- uses: actions/checkout@v3
|
2021-11-17 20:01:02 +01:00
|
|
|
|
|
|
|
- name: Setup node
|
2022-05-04 20:51:25 +02:00
|
|
|
uses: actions/setup-node@v3
|
2021-11-17 20:01:02 +01:00
|
|
|
with:
|
2023-03-24 00:28:49 +01:00
|
|
|
node-version: ${{ env.NODE_LTS_VERSION }}
|
2022-05-04 20:51:25 +02:00
|
|
|
check-latest: true
|
2021-11-17 20:01:02 +01:00
|
|
|
|
|
|
|
- name: Install Rust
|
|
|
|
uses: actions-rs/toolchain@v1
|
|
|
|
with:
|
|
|
|
profile: minimal
|
2022-05-04 20:51:25 +02:00
|
|
|
toolchain: ${{ env.RUST_TOOLCHAIN }}
|
2021-11-17 20:01:02 +01:00
|
|
|
override: true
|
|
|
|
target: wasm32-unknown-unknown
|
|
|
|
|
2022-05-29 06:35:16 +02:00
|
|
|
- run: npm i -g turbo@${{ env.TURBO_VERSION }} pnpm@${PNPM_VERSION}
|
2022-01-04 22:10:16 +01:00
|
|
|
|
2021-11-17 20:01:02 +01:00
|
|
|
- name: Install wasm-pack
|
|
|
|
run: curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh
|
|
|
|
|
2022-11-15 17:24:04 +01:00
|
|
|
- name: normalize versions
|
|
|
|
run: node scripts/normalize-version-bump.js
|
|
|
|
|
2021-11-17 20:01:02 +01:00
|
|
|
- name: Build
|
2022-11-15 17:24:04 +01:00
|
|
|
run: turbo run build-wasm -- --target ${{ matrix.target }}
|
2021-11-17 20:01:02 +01:00
|
|
|
|
|
|
|
- name: Add target to folder name
|
2022-01-04 22:10:16 +01:00
|
|
|
run: '[[ -d "packages/next-swc/crates/wasm/pkg" ]] && mv packages/next-swc/crates/wasm/pkg packages/next-swc/crates/wasm/pkg-${{ matrix.target }} || ls packages/next-swc/crates/wasm'
|
2021-11-17 20:01:02 +01:00
|
|
|
|
|
|
|
- name: Upload artifact
|
2023-01-18 01:56:04 +01:00
|
|
|
if: ${{ needs.build.outputs.isRelease == 'true' }}
|
2022-05-04 20:51:25 +02:00
|
|
|
uses: actions/upload-artifact@v3
|
2021-11-17 20:01:02 +01:00
|
|
|
with:
|
|
|
|
name: wasm-binaries
|
2021-11-21 12:59:56 +01:00
|
|
|
path: packages/next-swc/crates/wasm/pkg-*
|
2021-11-17 20:01:02 +01:00
|
|
|
|
2021-12-07 11:14:38 +01:00
|
|
|
build-wasm-dev:
|
|
|
|
needs: build
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
2022-05-04 20:51:25 +02:00
|
|
|
- uses: actions/cache@v3
|
2023-02-07 01:35:18 +01:00
|
|
|
timeout-minutes: 5
|
2022-07-11 16:42:51 +02:00
|
|
|
if: ${{needs.build.outputs.docsChange == 'nope'}}
|
2021-12-07 11:14:38 +01:00
|
|
|
id: restore-build
|
|
|
|
with:
|
|
|
|
path: ./*
|
2022-04-18 21:09:51 +02:00
|
|
|
key: ${{ github.sha }}-${{ github.run_number }}
|
2021-12-07 11:14:38 +01:00
|
|
|
|
|
|
|
- name: Setup node
|
2022-07-11 16:42:51 +02:00
|
|
|
if: ${{needs.build.outputs.docsChange == 'nope'}}
|
2022-05-04 20:51:25 +02:00
|
|
|
uses: actions/setup-node@v3
|
2021-12-07 11:14:38 +01:00
|
|
|
with:
|
2023-03-24 00:28:49 +01:00
|
|
|
node-version: ${{ env.NODE_LTS_VERSION }}
|
2022-05-04 20:51:25 +02:00
|
|
|
check-latest: true
|
2021-12-07 11:14:38 +01:00
|
|
|
|
2022-05-29 06:35:16 +02:00
|
|
|
- run: npm i -g turbo@${{ env.TURBO_VERSION }} pnpm@${PNPM_VERSION}
|
2022-01-04 22:10:16 +01:00
|
|
|
|
2021-12-07 11:14:38 +01:00
|
|
|
- name: Install Rust
|
2022-07-11 16:42:51 +02:00
|
|
|
if: ${{needs.build.outputs.docsChange == 'nope'}}
|
2021-12-07 11:14:38 +01:00
|
|
|
uses: actions-rs/toolchain@v1
|
|
|
|
with:
|
|
|
|
profile: minimal
|
2022-05-04 20:51:25 +02:00
|
|
|
toolchain: ${{ env.RUST_TOOLCHAIN }}
|
2021-12-07 11:14:38 +01:00
|
|
|
override: true
|
|
|
|
target: wasm32-unknown-unknown
|
|
|
|
|
2022-01-04 22:10:16 +01:00
|
|
|
- name: Turbo Cache
|
|
|
|
id: turbo-cache
|
2022-05-04 20:51:25 +02:00
|
|
|
uses: actions/cache@v3
|
2023-02-07 01:35:18 +01:00
|
|
|
timeout-minutes: 5
|
2022-07-11 16:42:51 +02:00
|
|
|
if: ${{needs.build.outputs.docsChange == 'nope'}}
|
2021-12-07 11:14:38 +01:00
|
|
|
with:
|
2022-01-04 22:10:16 +01:00
|
|
|
path: .turbo
|
|
|
|
key: turbo-${{ github.job }}-${{ github.ref_name }}-${{ steps.get-week.outputs.WEEK }}-${{ github.sha }}
|
|
|
|
restore-keys: |
|
|
|
|
turbo-${{ github.job }}-
|
|
|
|
turbo-${{ github.job }}-${{ github.ref_name }}-${{ steps.get-week.outputs.WEEK }}-
|
|
|
|
turbo-${{ github.job }}-canary-${{ steps.get-week.outputs.WEEK }}-
|
2021-12-07 11:14:38 +01:00
|
|
|
|
|
|
|
- name: Install wasm-pack
|
2022-07-11 16:42:51 +02:00
|
|
|
if: ${{needs.build.outputs.docsChange == 'nope'}}
|
2021-12-07 11:14:38 +01:00
|
|
|
run: curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh
|
|
|
|
|
2022-11-15 17:24:04 +01:00
|
|
|
- name: normalize versions
|
2022-11-15 19:41:49 +01:00
|
|
|
if: ${{needs.build.outputs.docsChange == 'nope'}}
|
2022-11-15 17:24:04 +01:00
|
|
|
run: node scripts/normalize-version-bump.js
|
|
|
|
|
2021-12-07 11:14:38 +01:00
|
|
|
- name: Build
|
2022-07-11 16:42:51 +02:00
|
|
|
if: ${{needs.build.outputs.docsChange == 'nope'}}
|
2022-01-04 22:10:16 +01:00
|
|
|
run: turbo run build-wasm --cache-dir=".turbo" -- --target nodejs --dev
|
2021-12-07 11:14:38 +01:00
|
|
|
|
|
|
|
- name: Add target to folder name
|
2022-07-11 16:42:51 +02:00
|
|
|
if: ${{needs.build.outputs.docsChange == 'nope'}}
|
2022-01-04 22:10:16 +01:00
|
|
|
run: '[[ -d "packages/next-swc/crates/wasm/pkg" ]] && mv packages/next-swc/crates/wasm/pkg packages/next-swc/crates/wasm/pkg-nodejs || ls packages/next-swc/crates/wasm'
|
2021-12-07 11:14:38 +01:00
|
|
|
|
|
|
|
- name: Upload artifact
|
2022-07-11 16:42:51 +02:00
|
|
|
if: ${{needs.build.outputs.docsChange == 'nope'}}
|
2022-05-04 20:51:25 +02:00
|
|
|
uses: actions/upload-artifact@v3
|
2021-12-07 11:14:38 +01:00
|
|
|
with:
|
|
|
|
name: wasm-dev-binary
|
|
|
|
path: packages/next-swc/crates/wasm/pkg-nodejs
|
2022-03-31 14:37:59 +02:00
|
|
|
|
2022-03-31 22:23:23 +02:00
|
|
|
check-trace-secrests:
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
outputs:
|
|
|
|
trace-api-key: ${{ steps.trace-api-key.outputs.defined }}
|
|
|
|
steps:
|
|
|
|
- id: trace-api-key
|
|
|
|
env:
|
|
|
|
TRACE_API_KEY: ${{ secrets.DATA_DOG_API_KEY }}
|
|
|
|
if: "${{ env.TRACE_API_KEY != '' }}"
|
2023-01-10 23:44:27 +01:00
|
|
|
run: echo "defined=true" >> $GITHUB_OUTPUT
|
2022-07-11 16:42:51 +02:00
|
|
|
|
2022-03-31 14:37:59 +02:00
|
|
|
build-performance-metrics:
|
|
|
|
name: Performance Metrics for Release Build
|
|
|
|
runs-on: ubuntu-latest
|
2022-03-31 22:23:23 +02:00
|
|
|
needs: [build, build-native-test, check-trace-secrests]
|
2022-04-01 00:13:20 +02:00
|
|
|
if: needs.check-trace-secrests.outputs.trace-api-key == 'true'
|
2022-05-29 19:17:42 +02:00
|
|
|
env:
|
|
|
|
NEXT_TELEMETRY_DISABLED: 1
|
2022-03-31 14:37:59 +02:00
|
|
|
steps:
|
|
|
|
- name: Setup node
|
2022-05-04 20:51:25 +02:00
|
|
|
uses: actions/setup-node@v3
|
2022-07-11 16:42:51 +02:00
|
|
|
if: ${{needs.build.outputs.docsChange == 'nope'}}
|
2022-03-31 14:37:59 +02:00
|
|
|
with:
|
2023-03-24 00:28:49 +01:00
|
|
|
node-version: ${{ env.NODE_LTS_VERSION }}
|
2022-05-04 20:51:25 +02:00
|
|
|
check-latest: true
|
2022-03-31 14:37:59 +02:00
|
|
|
|
2022-05-04 20:51:25 +02:00
|
|
|
- uses: actions/cache@v3
|
2023-02-07 01:35:18 +01:00
|
|
|
timeout-minutes: 5
|
2022-03-31 14:37:59 +02:00
|
|
|
id: restore-build
|
2022-07-11 16:42:51 +02:00
|
|
|
if: ${{needs.build.outputs.docsChange == 'nope'}}
|
2022-03-31 14:37:59 +02:00
|
|
|
with:
|
|
|
|
path: ./*
|
2022-04-18 21:09:51 +02:00
|
|
|
key: ${{ github.sha }}-${{ github.run_number }}
|
2022-03-31 14:37:59 +02:00
|
|
|
|
|
|
|
- name: Set Git Short sha Env
|
2022-07-11 16:42:51 +02:00
|
|
|
if: ${{needs.build.outputs.docsChange == 'nope'}}
|
2022-03-31 14:37:59 +02:00
|
|
|
run: echo "GIT_SHORT_SHA=`echo ${GITHUB_SHA} | cut -c1-8`" >> $GITHUB_ENV
|
|
|
|
|
|
|
|
- name: Check Git Short sha Env
|
2022-07-11 16:42:51 +02:00
|
|
|
if: ${{needs.build.outputs.docsChange == 'nope'}}
|
2022-03-31 14:37:59 +02:00
|
|
|
run: echo ${GIT_SHORT_SHA}
|
|
|
|
|
2022-05-04 20:51:25 +02:00
|
|
|
- uses: actions/download-artifact@v3
|
2022-07-11 16:42:51 +02:00
|
|
|
if: ${{needs.build.outputs.docsChange == 'nope'}}
|
2022-03-31 14:37:59 +02:00
|
|
|
with:
|
|
|
|
name: next-swc-test-binary
|
|
|
|
path: packages/next-swc/native
|
|
|
|
|
|
|
|
- name: Generate metrics data
|
2022-07-11 16:42:51 +02:00
|
|
|
if: ${{needs.build.outputs.docsChange == 'nope'}}
|
2022-03-31 14:37:59 +02:00
|
|
|
run: |
|
|
|
|
yarn --cwd bench/nested-deps install
|
|
|
|
node bench/nested-deps/bench.mjs build
|
|
|
|
- uses: datadog/agent-github-action@v1
|
2022-07-11 16:42:51 +02:00
|
|
|
if: ${{needs.build.outputs.docsChange == 'nope'}}
|
2022-03-31 14:37:59 +02:00
|
|
|
with:
|
|
|
|
api_key: ${{ secrets.DATA_DOG_API_KEY }}
|
|
|
|
- name: Sending metrics data to Datadog
|
2022-07-11 16:42:51 +02:00
|
|
|
if: ${{needs.build.outputs.docsChange == 'nope'}}
|
2022-03-31 14:37:59 +02:00
|
|
|
run: |
|
|
|
|
node scripts/trace-dd.mjs bench/nested-deps/.next/trace build ${GIT_SHORT_SHA} ./bench/nested-deps/next.config.js
|
|
|
|
env:
|
2022-04-01 01:23:04 +02:00
|
|
|
DATA_DOG_API_KEY: ${{ secrets.DATA_DOG_API_KEY }}
|
2022-03-31 22:23:23 +02:00
|
|
|
DD_TRACE_PARTIAL_FLUSH_MIN_SPANS: 10
|
2022-03-31 14:37:59 +02:00
|
|
|
DD_ENV: canary
|
2022-03-31 22:23:23 +02:00
|
|
|
DD_SERVICE: nextjs-dev-build
|
|
|
|
DD_TRACE_DEBUG: true
|