swc/.github/workflows/cargo.yml
2022-08-13 23:06:27 +09:00

466 lines
15 KiB
YAML

name: Cargo
on: [push, pull_request]
#on:
# push:
# # Ignore commits created by bors
# branches-ignore:
# - 'staging'
# - 'trying'
# pull_request:
# branches-ignore:
# - 'staging'
# - 'trying'
env:
CARGO_INCREMENTAL: 0
RUST_LOG: "debug"
DIFF: 0
# https://github.com/swc-project/swc/pull/3742
RUST_MIN_STACK: 4194304
CI: 1
CARGO_TERM_COLOR: "always"
jobs:
check-license:
name: Check license
runs-on: ubuntu-latest
if: >-
${{ !contains(github.event.head_commit.message, 'chore: ') }}
steps:
- uses: actions/checkout@v3
- name: Install Rust
uses: actions-rs/toolchain@v1
with:
profile: minimal
- name: Install cargo-deny
uses: baptiste0928/cargo-install@v1.1.0
with:
crate: cargo-deny
version: "0.11.3"
- name: Check licenses
run: |
cargo deny check
check:
name: Check
runs-on: ${{ matrix.os }}
if: >-
${{ !contains(github.event.head_commit.message, 'chore: ') }}
strategy:
fail-fast: false
matrix:
os:
- ubuntu-latest
- macos-latest
- windows-latest
steps:
- uses: actions/checkout@v3
with:
submodules: true
# We explicitly do this to cache properly.
- name: Install Rust
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: 1.60
- uses: actions/setup-node@v3
with:
node-version: "16"
cache: "yarn"
- name: Install node dependencies
shell: bash
run: |
yarn
# Ensure that all components are compilable.
- name: Run cargo check for all targets
run: cargo check --color always --all --all-targets
test:
name: Test - ${{ matrix.settings.crate }} - ${{ matrix.settings.os }}
runs-on: ${{ matrix.settings.os }}
if: >-
${{ !contains(github.event.head_commit.message, 'chore: ') }}
strategy:
fail-fast: false
matrix:
settings:
# Use scripts/github/create-matrix.sh to create this.
- crate: ast_node
os: ubuntu-latest
- crate: better_scoped_tls
os: ubuntu-latest
- crate: binding_core_node
os: ubuntu-latest
- crate: binding_core_wasm
os: ubuntu-latest
- crate: dbg-swc
os: ubuntu-latest
- crate: enum_kind
os: ubuntu-latest
- crate: from_variant
os: ubuntu-latest
- crate: jsdoc
os: ubuntu-latest
- crate: node_macro_deps
os: ubuntu-latest
- crate: preset_env_base
os: ubuntu-latest
- crate: string_enum
os: ubuntu-latest
- crate: swc
os: ubuntu-latest
check: |
cargo hack check --feature-powerset --no-dev-deps --exclude-features debug --exclude-features plugin --exclude-features plugin_transform_schema_v1 --exclude-features plugin_transform_schema_vtest
- crate: swc
os: windows-latest
- crate: swc_atoms
os: ubuntu-latest
- crate: swc_bundler
os: ubuntu-latest
check: |
cargo hack check --feature-powerset --no-dev-deps
- crate: swc_cached
os: ubuntu-latest
- crate: swc_cli
os: ubuntu-latest
check: |
cargo check
cargo check --features plugin
- crate: swc_cli
os: windows-latest
- crate: swc_common
os: ubuntu-latest
check: |
cargo hack check --feature-powerset --no-dev-deps --exclude-features plugin_transform_schema_vtest
- crate: swc_common
os: windows-latest
- crate: swc_config
os: ubuntu-latest
- crate: swc_config_macro
os: ubuntu-latest
- crate: swc_css
os: ubuntu-latest
- crate: swc_css_ast
os: ubuntu-latest
- crate: swc_css_codegen
os: ubuntu-latest
- crate: swc_css_codegen
os: windows-latest
- crate: swc_css_codegen_macros
os: ubuntu-latest
- crate: swc_css_lints
os: ubuntu-latest
- crate: swc_css_minifier
os: ubuntu-latest
- crate: swc_css_parser
os: ubuntu-latest
- crate: swc_css_parser
os: windows-latest
- crate: swc_css_prefixer
os: ubuntu-latest
- crate: swc_css_utils
os: ubuntu-latest
- crate: swc_css_visit
os: ubuntu-latest
- crate: swc_ecma_ast
os: ubuntu-latest
check: |
cargo hack check --feature-powerset --no-dev-deps
- crate: swc_ecma_codegen
os: ubuntu-latest
- crate: swc_ecma_codegen
os: windows-latest
- crate: swc_ecma_codegen_macros
os: ubuntu-latest
- crate: swc_ecma_dep_graph
os: ubuntu-latest
- crate: swc_ecma_ext_transforms
os: ubuntu-latest
- crate: swc_ecma_lints
os: ubuntu-latest
- crate: swc_ecma_loader
os: ubuntu-latest
check: |
cargo hack check --feature-powerset --no-dev-deps
- crate: swc_ecma_loader
os: windows-latest
- crate: swc_ecma_minifier
os: ubuntu-latest
- crate: swc_ecma_parser
os: ubuntu-latest
- crate: swc_ecma_parser
os: windows-latest
- crate: swc_ecma_preset_env
os: ubuntu-latest
- crate: swc_ecma_preset_env
os: windows-latest
- crate: swc_ecma_quote
os: ubuntu-latest
- crate: swc_ecma_quote_macros
os: ubuntu-latest
- crate: swc_ecma_testing
os: ubuntu-latest
- crate: swc_ecma_transforms
os: ubuntu-latest
check: |
cargo hack check --feature-powerset --no-dev-deps
- crate: swc_ecma_transforms_base
os: ubuntu-latest
check: |
cargo hack check --feature-powerset --no-dev-deps
- crate: swc_ecma_transforms_classes
os: ubuntu-latest
- crate: swc_ecma_transforms_compat
os: ubuntu-latest
check: |
cargo hack check --feature-powerset --no-dev-deps
- crate: swc_ecma_transforms_macros
os: ubuntu-latest
- crate: swc_ecma_transforms_module
os: ubuntu-latest
- crate: swc_ecma_transforms_module
os: windows-latest
- crate: swc_ecma_transforms_optimization
os: ubuntu-latest
check: |
cargo hack check --feature-powerset --no-dev-deps
- crate: swc_ecma_transforms_proposal
os: ubuntu-latest
- crate: swc_ecma_transforms_react
os: ubuntu-latest
- crate: swc_ecma_transforms_testing
os: ubuntu-latest
- crate: swc_ecma_transforms_testing
os: windows-latest
- crate: swc_ecma_transforms_typescript
os: ubuntu-latest
- crate: swc_ecma_utils
os: ubuntu-latest
check: |
cargo hack check --feature-powerset --no-dev-deps
- crate: swc_ecma_visit
os: ubuntu-latest
check: |
cargo hack check --feature-powerset --no-dev-deps
- crate: swc_ecmascript
os: ubuntu-latest
- crate: swc_eq_ignore_macros
os: ubuntu-latest
- crate: swc_error_reporters
os: ubuntu-latest
- crate: swc_estree_ast
os: ubuntu-latest
- crate: swc_estree_compat
os: ubuntu-latest
- crate: swc_fast_graph
os: ubuntu-latest
- crate: swc_graph_analyzer
os: ubuntu-latest
- crate: swc_html
os: ubuntu-latest
- crate: swc_html_ast
os: ubuntu-latest
- crate: swc_html_codegen
os: ubuntu-latest
- crate: swc_html_codegen
os: windows-latest
- crate: swc_html_codegen_macros
os: ubuntu-latest
- crate: swc_html_minifier
os: ubuntu-latest
- crate: swc_html_parser
os: ubuntu-latest
- crate: swc_html_parser
os: windows-latest
- crate: swc_html_utils
os: ubuntu-latest
- crate: swc_html_visit
os: ubuntu-latest
- crate: swc_xml
os: ubuntu-latest
- crate: swc_xml_ast
os: ubuntu-latest
- crate: swc_xml_codegen
os: ubuntu-latest
- crate: swc_xml_codegen
os: windows-latest
- crate: swc_xml_codegen_macros
os: ubuntu-latest
- crate: swc_xml_parser
os: ubuntu-latest
- crate: swc_xml_parser
os: windows-latest
- crate: swc_xml_visit
os: ubuntu-latest
- crate: swc_macros_common
os: ubuntu-latest
- crate: swc_node_base
os: ubuntu-latest
- crate: swc_node_bundler
os: ubuntu-latest
check: |
cargo check
cargo check --no-default-features --features swc_v2
- crate: swc_node_bundler
os: windows-latest
- crate: swc_node_comments
os: ubuntu-latest
- crate: swc_nodejs_common
os: ubuntu-latest
- crate: swc_plugin
os: ubuntu-latest
- crate: swc_plugin
os: windows-latest
- crate: swc_plugin_macro
os: ubuntu-latest
- crate: swc_plugin_proxy
os: ubuntu-latest
- crate: swc_plugin_runner
os: ubuntu-latest
- crate: swc_plugin_runner
os: macos-latest
- crate: swc_plugin_runner
os: windows-latest
- crate: swc_plugin_testing
os: ubuntu-latest
- crate: swc_plugin_testing
os: windows-latest
- crate: swc_timer
os: ubuntu-latest
- crate: swc_trace_macro
os: ubuntu-latest
- crate: swc_visit
os: ubuntu-latest
- crate: swc_visit_macros
os: ubuntu-latest
- crate: testing
os: ubuntu-latest
- crate: testing_macros
os: ubuntu-latest
steps:
- name: Handle line endings
shell: bash
if: runner.os == 'Windows'
run: |
git config --system core.autocrlf false
git config --system core.eol lf
- uses: actions/checkout@v3
with:
submodules: true
# Source map format
- uses: actions/setup-node@v3
with:
node-version: "16"
cache: "yarn"
# We explicitly do this to cache properly.
- name: Install Rust
uses: actions-rs/toolchain@v1
with:
profile: minimal
target: wasm32-wasi
- uses: denoland/setup-deno@v1
if: matrix.settings.crate == 'swc_bundler'
with:
deno-version: v1.x
- name: Install node dependencies
shell: bash
run: |
yarn
# I don't want to think deeply about this
yarn global add jest@27 mocha || \
yarn global add jest@27 mocha || \
yarn global add jest@27 mocha || \
yarn global add jest@27 mocha || \
yarn global add jest@27 mocha || \
yarn global add jest@27 mocha || \
yarn global add jest@27 mocha || \
yarn global add jest@27 mocha || true
- name: Configure path (windows)
shell: bash
if: runner.os == 'Windows'
run: |
echo $(yarn global bin) >> $GITHUB_PATH
- name: Verify dependencies
shell: bash
run: |
jest --version && mocha --version
- name: Configure execution cache
shell: bash
run: |
mkdir -p .swc-exec-cache
echo "SWC_ECMA_TESTING_CACHE_DIR=$(pwd)/.swc-exec-cache" >> $GITHUB_ENV
- name: Cache execution results
uses: actions/cache@v3
with:
path: |
.swc-exec-cache
key: swc-exec-cache-${{ runner.os }}-${{ matrix.settings.crate }}-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
swc-exec-cache-${{ matrix.settings.crate }}-${{ runner.os }}
- name: Run cargo test
if: matrix.settings.crate != 'swc_plugin_runner' && matrix.settings.crate != 'swc_ecma_minifier' && matrix.settings.crate != 'swc_core' && matrix.settings.crate != 'swc_ecma_quote'
run: |
cargo test --color always -p ${{ matrix.settings.crate }}
- name: Run cargo test (core)
if: matrix.settings.crate == 'swc_core'
run: |
cargo test --color always -p swc_core --features quote --features common --features utils
- name: Run cargo test (plugin)
if: matrix.settings.crate == 'swc_plugin_runner'
run: |
cargo test --color always -p swc_plugin_runner --features plugin_transform_schema_v1
- name: Run cargo test (swc_ecma_minifier)
if: matrix.settings.crate == 'swc_ecma_minifier'
run: |
cargo test --color always -p swc_ecma_minifier --features concurrent
- name: Run cargo test (all features)
if: matrix.settings.crate == 'swc_ecma_parser' || matrix.settings.crate == 'swc_ecma_loader' || matrix.settings.crate == 'swc_ecma_transforms'
run: |
cargo test --color always -p ${{ matrix.settings.crate }} --all-features
- name: Run cargo test (concurrent)
if: runner.os == 'Linux' && matrix.settings.crate != 'swc_ecma_minifier'
shell: bash
run: |
./scripts/ci/test-concurrent.sh ${{ matrix.settings.crate }}
- name: Run cargo test (swc, concurrent)
shell: bash
if: matrix.settings.crate == 'swc' && runner.os == 'Linux'
run: |
cargo test --color always -p swc --features concurrent
- name: Install cargo-hack
uses: baptiste0928/cargo-install@v1.1.0
if: matrix.settings.os == 'ubuntu-latest' && matrix.settings.check
with:
crate: cargo-hack
version: "0.5.7"
- name: Check compilation
if: matrix.settings.check
working-directory: "crates/${{ matrix.settings.crate }}"
run: "${{ matrix.settings.check }}"