332 lines
11 KiB
YAML
332 lines
11 KiB
YAML
name: CI
|
|
|
|
on:
|
|
push:
|
|
branches: ['*']
|
|
pull_request:
|
|
branches: ['*']
|
|
workflow_dispatch:
|
|
|
|
permissions:
|
|
contents: read # to fetch code (actions/checkout)
|
|
|
|
jobs:
|
|
esbuild-platforms:
|
|
# Split this out into its own runner because it's slow
|
|
name: esbuild CI (All Platforms)
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v3
|
|
|
|
- name: Read go.version
|
|
run: |
|
|
echo "GO_VERSION=$(cat go.version)" >> $GITHUB_ENV
|
|
|
|
- name: Set up Go ${{ env.GO_VERSION }}
|
|
uses: actions/setup-go@v3
|
|
with:
|
|
go-version: ${{ env.GO_VERSION }}
|
|
id: go
|
|
|
|
- name: Setup Node.js environment
|
|
uses: actions/setup-node@v3
|
|
with:
|
|
node-version: 18
|
|
|
|
- name: Ensure all platforms can be built
|
|
run: |
|
|
git status
|
|
make platform-all
|
|
|
|
# Plan 9 is not a supported platform, but someone wanted esbuild to be able to build for it anyway...
|
|
- name: Ensure esbuild can be built for Plan 9
|
|
run: |
|
|
GOOS=plan9 GOARCH=386 go build ./cmd/esbuild
|
|
GOOS=plan9 GOARCH=amd64 go build ./cmd/esbuild
|
|
GOOS=plan9 GOARCH=arm go build ./cmd/esbuild
|
|
|
|
- name: Test an old TypeScript version
|
|
run: make test-old-ts
|
|
|
|
esbuild-slow:
|
|
# Split these out into their own runner because they're very slow
|
|
name: esbuild CI (Slow Tests)
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v3
|
|
|
|
- name: Read go.version
|
|
run: |
|
|
echo "GO_VERSION=$(cat go.version)" >> $GITHUB_ENV
|
|
|
|
- name: Set up Go ${{ env.GO_VERSION }}
|
|
uses: actions/setup-go@v3
|
|
with:
|
|
go-version: ${{ env.GO_VERSION }}
|
|
id: go
|
|
|
|
- name: Setup Node.js environment
|
|
uses: actions/setup-node@v3
|
|
with:
|
|
node-version: 16
|
|
|
|
# Note: These tests break with node version 18. Something about WebAssembly.
|
|
- name: Rollup Tests
|
|
run: make test-rollup
|
|
|
|
- name: Uglify Tests
|
|
run: CI=1 make uglify
|
|
|
|
- name: Type check tsc using tsc
|
|
run: make test-tsc
|
|
|
|
esbuild:
|
|
name: esbuild CI
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
matrix:
|
|
os: [ubuntu-latest, macos-latest, windows-latest]
|
|
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v3
|
|
|
|
- name: Read go.version (non-Windows)
|
|
if: matrix.os != 'windows-latest'
|
|
run: |
|
|
echo "GO_VERSION=$(cat go.version)" >> $GITHUB_ENV
|
|
|
|
- name: Read go.version (Windows)
|
|
if: matrix.os == 'windows-latest'
|
|
run: |
|
|
echo "GO_VERSION=$(cat go.version)" >> $Env:GITHUB_ENV
|
|
|
|
- name: Set up Go ${{ env.GO_VERSION }}
|
|
uses: actions/setup-go@v3
|
|
with:
|
|
go-version: ${{ env.GO_VERSION }}
|
|
id: go
|
|
|
|
- name: Setup Node.js environment
|
|
uses: actions/setup-node@v3
|
|
with:
|
|
node-version: 18
|
|
|
|
- name: Setup Deno 1.40.0
|
|
uses: denoland/setup-deno@main
|
|
with:
|
|
deno-version: v1.40.0
|
|
|
|
- name: go test
|
|
run: go test -race ./internal/...
|
|
|
|
- name: go vet
|
|
run: go vet ./cmd/... ./internal/... ./pkg/...
|
|
|
|
- name: Deno Tests (non-Windows)
|
|
if: matrix.os != 'windows-latest'
|
|
run: make test-deno
|
|
|
|
- name: Deno Tests (Windows)
|
|
if: matrix.os == 'windows-latest'
|
|
run: make test-deno-windows
|
|
|
|
- name: Test for path/filepath
|
|
if: matrix.os == 'ubuntu-latest'
|
|
run: make no-filepath
|
|
|
|
- name: Make sure "check-go-version" works (non-Windows)
|
|
if: matrix.os != 'windows-latest'
|
|
run: make check-go-version
|
|
|
|
- name: go fmt
|
|
if: matrix.os == 'macos-latest'
|
|
run: make fmt-go
|
|
|
|
- name: npm ci
|
|
run: cd scripts && npm ci
|
|
|
|
- name: Register Test (ESBUILD_WORKER_THREADS=0, non-Windows)
|
|
if: matrix.os != 'windows-latest'
|
|
run: ESBUILD_WORKER_THREADS=0 node scripts/register-test.js
|
|
|
|
- name: Register Test
|
|
run: node scripts/register-test.js
|
|
|
|
- name: Verify Source Map
|
|
run: node scripts/verify-source-map.js
|
|
|
|
- name: E2E Tests
|
|
run: node scripts/end-to-end-tests.js
|
|
|
|
- name: JS API Tests (ESBUILD_WORKER_THREADS=0, non-Windows)
|
|
if: matrix.os != 'windows-latest'
|
|
run: ESBUILD_WORKER_THREADS=0 node scripts/js-api-tests.js
|
|
|
|
- name: JS API Tests
|
|
run: node scripts/js-api-tests.js
|
|
|
|
- name: NodeJS Unref Tests
|
|
run: node scripts/node-unref-tests.js
|
|
|
|
- name: Plugin Tests
|
|
run: node scripts/plugin-tests.js
|
|
|
|
- name: TypeScript Type Definition Tests
|
|
if: matrix.os == 'ubuntu-latest'
|
|
run: node scripts/ts-type-tests.js
|
|
|
|
- name: JS API Type Check
|
|
if: matrix.os == 'ubuntu-latest'
|
|
run: make lib-typecheck
|
|
|
|
- name: Decorator Tests
|
|
if: matrix.os == 'ubuntu-latest'
|
|
run: make decorator-tests
|
|
|
|
- name: WebAssembly API Tests (browser)
|
|
if: matrix.os == 'ubuntu-latest'
|
|
run: make test-wasm-browser
|
|
|
|
- name: WebAssembly API Tests (node, Linux)
|
|
if: matrix.os == 'ubuntu-latest'
|
|
run: make test-wasm-node
|
|
|
|
- name: WebAssembly API Tests (node, non-Linux)
|
|
if: matrix.os != 'ubuntu-latest'
|
|
run: node scripts/wasm-tests.js
|
|
|
|
- name: Sucrase Tests
|
|
if: matrix.os == 'ubuntu-latest'
|
|
run: make test-sucrase
|
|
|
|
- name: Esprima Tests
|
|
if: matrix.os == 'ubuntu-latest'
|
|
run: make test-esprima
|
|
|
|
- name: Preact Splitting Tests
|
|
if: matrix.os == 'ubuntu-latest'
|
|
run: make test-preact-splitting
|
|
|
|
- name: Check the unicode table generator
|
|
if: matrix.os == 'ubuntu-latest'
|
|
run: cd scripts && node gen-unicode-table.js
|
|
|
|
- name: Yarn PnP tests
|
|
run: |
|
|
# Note that Yarn recently deliberately broke "npm install -g yarn".
|
|
# They say you now have to run "corepack enable" to fix it. They have
|
|
# written about this here: https://yarnpkg.com/corepack
|
|
corepack enable
|
|
|
|
make test-yarnpnp
|
|
|
|
esbuild-old-go-version:
|
|
name: esbuild CI (old Go version)
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v3
|
|
|
|
- name: Set up Go 1.13 (the minimum required Go version for esbuild)
|
|
uses: actions/setup-go@v3
|
|
with:
|
|
go-version: 1.13
|
|
id: go
|
|
|
|
- name: go build
|
|
run: go build ./cmd/esbuild
|
|
|
|
- name: go test
|
|
run: go test ./internal/...
|
|
|
|
esbuild-old-deno-version:
|
|
name: esbuild CI (old Deno version)
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
matrix:
|
|
# Note: I'm excluding "macos-latest" here because GitHub recently
|
|
# changed their macOS CI VMs from x86_64 to aarch64 (i.e. from Intel
|
|
# to ARM) and it looks like old Deno versions have WASM bugs on ARM.
|
|
# Specifically, this test now crashes like this when run on macOS:
|
|
#
|
|
# #
|
|
# # Fatal error in , line 0
|
|
# # Check failed: RwxMemoryWriteScope::IsAllowed().
|
|
# #
|
|
# #
|
|
# #
|
|
# #FailureMessage Object: 0x16f282368
|
|
# ==== C stack trace ===============================
|
|
#
|
|
# 0 deno 0x0000000101bb8e78 v8::base::debug::StackTrace::StackTrace() + 24
|
|
# 1 deno 0x0000000101bbda84 v8::platform::(anonymous namespace)::PrintStackTrace() + 24
|
|
# 2 deno 0x0000000101bb6230 V8_Fatal(char const*, ...) + 268
|
|
# 3 deno 0x000000010227e468 v8::internal::wasm::WasmCodeManager::MemoryProtectionKeysEnabled() const + 0
|
|
# 4 deno 0x0000000102299994 v8::internal::wasm::WasmEngine::InitializeOncePerProcess() + 44
|
|
# 5 deno 0x0000000101e78fd0 v8::internal::V8::Initialize() + 1576
|
|
# 6 deno 0x0000000101c3b7d8 v8::V8::Initialize(int) + 32
|
|
# 7 deno 0x00000001011833dc _ZN3std4sync4once4Once9call_once28_$u7b$$u7b$closure$u7d$$u7d$17h2bbe74d315ab3e84E + 488
|
|
# 8 deno 0x00000001017f8854 std::sync::once::Once::call_inner::h70fbdd48fe002a01 + 724
|
|
# 9 deno 0x000000010115ca80 deno_core::runtime::JsRuntime::new::h9c5f1a9c910f1eed + 192
|
|
# 10 deno 0x00000001014d3b50 deno_runtime::worker::MainWorker::bootstrap_from_options::h91a0eaac48dfc18e + 4260
|
|
# 11 deno 0x0000000100ee692c deno::create_main_worker::h0d1622755821ae7f + 1608
|
|
# 12 deno 0x0000000100f6c688 _ZN97_$LT$core..future..from_generator..GenFuture$LT$T$GT$$u20$as$u20$core..future..future..Future$GT$4poll17h87ddfac9566887c8E + 492
|
|
# 13 deno 0x0000000100f6ba18 tokio::runtime::task::raw::poll::h7d51f1a7d5a61c15 + 1396
|
|
# 14 deno 0x0000000101917b98 std::sys_common::backtrace::__rust_begin_short_backtrace::hd384935dcffe6f2d + 332
|
|
# 15 deno 0x0000000101917954 _ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.shim$u7d$$u7d$17he2755732d5d29cf0E + 124
|
|
# 16 deno 0x0000000101829684 std::sys::unix::thread::Thread::new::thread_start::h432bc30153e41f60 + 48
|
|
# 17 libsystem_pthread.dylib 0x000000018a436f94 _pthread_start + 136
|
|
# 18 libsystem_pthread.dylib 0x000000018a431d34 thread_start + 8
|
|
#
|
|
# Hopefully running this old Deno version on Linux is sufficiently
|
|
# close to running it on macOS. For reference, I believe this is the
|
|
# change that GitHub made which broke this test:
|
|
# https://github.blog/changelog/2023-10-02-github-actions-apple-silicon-m1-macos-runners-are-now-available-in-public-beta/
|
|
os: [ubuntu-latest, windows-latest]
|
|
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v3
|
|
|
|
- name: Read go.version (non-Windows)
|
|
if: matrix.os != 'windows-latest'
|
|
run: |
|
|
echo "GO_VERSION=$(cat go.version)" >> $GITHUB_ENV
|
|
|
|
- name: Read go.version (Windows)
|
|
if: matrix.os == 'windows-latest'
|
|
run: |
|
|
echo "GO_VERSION=$(cat go.version)" >> $Env:GITHUB_ENV
|
|
|
|
- name: Set up Go ${{ env.GO_VERSION }}
|
|
uses: actions/setup-go@v3
|
|
with:
|
|
go-version: ${{ env.GO_VERSION }}
|
|
id: go
|
|
|
|
# Make sure esbuild works with old versions of Deno. Note: It's important
|
|
# to test a version before 1.31.0, which introduced the "Deno.Command" API.
|
|
- name: Setup Deno 1.24.0
|
|
uses: denoland/setup-deno@main
|
|
with:
|
|
deno-version: v1.24.0
|
|
|
|
- name: Setup Node.js environment
|
|
uses: actions/setup-node@v3
|
|
with:
|
|
node-version: 18
|
|
|
|
- name: Deno Tests (non-Windows)
|
|
if: matrix.os != 'windows-latest'
|
|
run: make test-deno
|
|
|
|
- name: Deno Tests (Windows)
|
|
if: matrix.os == 'windows-latest'
|
|
run: make test-deno-windows
|