mirror of
https://github.com/LukeHagar/vercel.git
synced 2025-12-07 21:07:46 +00:00
ci: add Node.js v18 tests (#11575)
Some tests are skipped because CI tests are running against v16. I added a new GitHub CI job just inlcuding the tests that are skipped for now.
This commit is contained in:
5
.changeset/sour-scissors-push.md
Normal file
5
.changeset/sour-scissors-push.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
ci: add Node.js v18 tests
|
||||||
124
.github/workflows/test-18.yml
vendored
Normal file
124
.github/workflows/test-18.yml
vendored
Normal file
@@ -0,0 +1,124 @@
|
|||||||
|
name: Tests Node.js v18
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
tags:
|
||||||
|
- '!*'
|
||||||
|
pull_request:
|
||||||
|
|
||||||
|
env:
|
||||||
|
NODE_VERSION: '18'
|
||||||
|
TURBO_REMOTE_ONLY: 'true'
|
||||||
|
TURBO_TEAM: 'vercel'
|
||||||
|
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.workflow }}-${{ github.ref }}
|
||||||
|
cancel-in-progress: ${{ github.ref != 'refs/heads/main' }}
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
setup:
|
||||||
|
name: Find Changes
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
outputs:
|
||||||
|
tests: ${{ steps['set-tests'].outputs['tests'] }}
|
||||||
|
dplUrl: ${{ steps.waitForTarball.outputs.url }}
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
fetch-depth: 2
|
||||||
|
- uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: ${{ env.NODE_VERSION }}
|
||||||
|
- name: install pnpm@8.3.1
|
||||||
|
run: npm i -g pnpm@8.3.1
|
||||||
|
- run: pnpm install
|
||||||
|
- id: set-tests
|
||||||
|
run: |
|
||||||
|
TESTS_ARRAY=$(node utils/chunk-tests-18.js $SCRIPT_NAME)
|
||||||
|
echo "Files to test:"
|
||||||
|
echo "$TESTS_ARRAY"
|
||||||
|
echo "tests=$TESTS_ARRAY" >> $GITHUB_OUTPUT
|
||||||
|
- uses: patrickedqvist/wait-for-vercel-preview@bfdff514ff78a669f2536e9f4dd4ef5813a704a2
|
||||||
|
id: waitForTarball
|
||||||
|
with:
|
||||||
|
token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
max_timeout: 360
|
||||||
|
check_interval: 5
|
||||||
|
test:
|
||||||
|
timeout-minutes: 120
|
||||||
|
runs-on: ${{ matrix.runner }}
|
||||||
|
name: ${{matrix.scriptName}} (${{matrix.packageName}}, ${{matrix.chunkNumber}}, ${{ matrix.runner }})
|
||||||
|
if: ${{ needs.setup.outputs['tests'] != '[]' }}
|
||||||
|
needs:
|
||||||
|
- setup
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
include: ${{ fromJson(needs.setup.outputs['tests']) }}
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
fetch-depth: 2
|
||||||
|
- uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: ${{ matrix.nodeVersion || env.NODE_VERSION }}
|
||||||
|
|
||||||
|
# yarn 1.22.21 introduced a Corepack bug when running tests.
|
||||||
|
# this can be removed once https://github.com/yarnpkg/yarn/issues/9015 is resolved
|
||||||
|
- name: install yarn@1.22.19
|
||||||
|
run: npm i -g yarn@1.22.19
|
||||||
|
|
||||||
|
- name: install pnpm@8.3.1
|
||||||
|
run: npm i -g pnpm@8.3.1
|
||||||
|
|
||||||
|
- run: pnpm install
|
||||||
|
|
||||||
|
- name: Build ${{matrix.packageName}} and all its dependencies
|
||||||
|
run: node utils/gen.js && node_modules/.bin/turbo run build --cache-dir=".turbo" --log-order=stream --scope=${{matrix.packageName}} --include-dependencies --no-deps
|
||||||
|
env:
|
||||||
|
FORCE_COLOR: '1'
|
||||||
|
- name: Test ${{matrix.packageName}}
|
||||||
|
run: node utils/gen.js && node_modules/.bin/turbo run ${{matrix.testScript}} --summarize --cache-dir=".turbo" --log-order=stream --scope=${{matrix.packageName}} --no-deps -- ${{ join(matrix.testPaths, ' ') }}
|
||||||
|
shell: bash
|
||||||
|
env:
|
||||||
|
JEST_JUNIT_OUTPUT_FILE: ${{github.workspace}}/.junit-reports/${{matrix.scriptName}}-${{matrix.packageName}}-${{matrix.chunkNumber}}-${{ matrix.runner }}.xml
|
||||||
|
VERCEL_CLI_VERSION: ${{ needs.setup.outputs.dplUrl }}/tarballs/vercel.tgz
|
||||||
|
VERCEL_TEST_TOKEN: ${{ secrets.VERCEL_TEST_TOKEN }}
|
||||||
|
VERCEL_TEST_REGISTRATION_URL: ${{ secrets.VERCEL_TEST_REGISTRATION_URL }}
|
||||||
|
FORCE_COLOR: '1'
|
||||||
|
- name: 'Determine Turbo HIT or MISS'
|
||||||
|
if: ${{ !cancelled() }}
|
||||||
|
id: turbo-summary
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
TURBO_MISS_COUNT=`node utils/determine-turbo-hit-or-miss.js`
|
||||||
|
echo "MISS COUNT: $TURBO_MISS_COUNT"
|
||||||
|
echo "misses=$TURBO_MISS_COUNT" >> $GITHUB_OUTPUT
|
||||||
|
- name: 'Upload Test Report to Datadog'
|
||||||
|
if: ${{ steps['turbo-summary'].outputs.misses != '0' && !cancelled() }}
|
||||||
|
run: 'npx @datadog/datadog-ci@2.18.1 junit upload --service vercel-cli .junit-reports'
|
||||||
|
env:
|
||||||
|
DATADOG_API_KEY: ${{secrets.DATADOG_API_KEY_CLI}}
|
||||||
|
DD_ENV: ci
|
||||||
|
|
||||||
|
summary:
|
||||||
|
name: Summary
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
timeout-minutes: 5
|
||||||
|
if: always()
|
||||||
|
needs:
|
||||||
|
- test
|
||||||
|
steps:
|
||||||
|
- name: Check All
|
||||||
|
run: |-
|
||||||
|
for status in ${{ join(needs.*.result, ' ') }}
|
||||||
|
do
|
||||||
|
if [ "$status" != "success" ] && [ "$status" != "skipped" ]
|
||||||
|
then
|
||||||
|
echo "Some checks failed"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
done
|
||||||
2
.github/workflows/test.yml
vendored
2
.github/workflows/test.yml
vendored
@@ -1,4 +1,4 @@
|
|||||||
name: Tests
|
name: Tests Node.js v16
|
||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
|
|||||||
46
utils/chunk-tests-18.js
vendored
Normal file
46
utils/chunk-tests-18.js
vendored
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
async function main() {
|
||||||
|
try {
|
||||||
|
console.log(
|
||||||
|
JSON.stringify([
|
||||||
|
{
|
||||||
|
runner: 'ubuntu-latest',
|
||||||
|
packagePath: 'packages/node',
|
||||||
|
packageName: '@vercel/node',
|
||||||
|
scriptName: 'test-unit',
|
||||||
|
testScript: 'test',
|
||||||
|
testPaths: ['test/unit/dev.test.ts'],
|
||||||
|
chunkNumber: 1,
|
||||||
|
allChunksLength: 1,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
runner: 'macos-14',
|
||||||
|
packagePath: 'packages/node',
|
||||||
|
packageName: '@vercel/node',
|
||||||
|
scriptName: 'test-unit',
|
||||||
|
testScript: 'test',
|
||||||
|
testPaths: ['test/unit/dev.test.ts'],
|
||||||
|
chunkNumber: 1,
|
||||||
|
allChunksLength: 1,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
runner: 'windows-latest',
|
||||||
|
packagePath: 'packages/node',
|
||||||
|
packageName: '@vercel/node',
|
||||||
|
scriptName: 'test-unit',
|
||||||
|
testScript: 'test',
|
||||||
|
testPaths: ['test/unit/dev.test.ts'],
|
||||||
|
chunkNumber: 1,
|
||||||
|
allChunksLength: 1,
|
||||||
|
},
|
||||||
|
])
|
||||||
|
);
|
||||||
|
} catch (e) {
|
||||||
|
console.error(e);
|
||||||
|
process.exitCode = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// @ts-ignore
|
||||||
|
if (module === require.main || !module.parent) {
|
||||||
|
main();
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user