swc/.github/workflows/cargo.yml
Donny/강동윤 91ef3cc16e
feat(plugin): Enable plugin support under experimental flag (#2894)
swc_plugin_runner:
 - Add plugin resolver.
 - Implement cache for resolver.
 - Add some integration tests.

swc:
 - Add a cargo feature named `plugin`.
 - Add an experimental option for plugins.

node:
 - Enable `plugin`.
 - Add some integration tests.
2021-11-28 17:02:14 +09:00

306 lines
7.7 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:
CI: 1
CARGO_INCREMENTAL: 0
RUST_LOG: "debug"
SWC_CACHE_TEST: 1
jobs:
check-license:
name: Check license
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Install Rust
uses: actions-rs/toolchain@v1
with:
profile: minimal
- name: Install required tools
run: |
cargo install cargo-deny
- name: Check licenses
run: |
cargo deny check
fmt:
name: fmt
runs-on: ubuntu-latest
env:
RUST_LOG: "0"
steps:
- uses: actions/checkout@v2
# We explicitly do this to cache properly.
- name: Install Rust
uses: actions-rs/toolchain@v1
with:
profile: minimal
components: rustfmt
- name: Run cargo fmt
run: cargo fmt --all -- --check
check:
name: Check
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os:
- ubuntu-latest
- macos-10.15
- windows-latest
steps:
- uses: actions/checkout@v2
- name: Checkout submodules
shell: bash
run: |
auth_header="$(git config --local --get http.https://github.com/.extraheader)"
git submodule sync --recursive
git -c "http.extraheader=$auth_header" -c protocol.version=2 submodule update --init --force --recursive --depth=1
# We explicitly do this to cache properly.
- name: Install Rust
uses: actions-rs/toolchain@v1
with:
profile: minimal
- name: Cache
uses: actions/cache@v2
with:
path: |
~/.cargo/
target
Cargo.lock
key: cargo-dev--${{ runner.os }}-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
cargo-dev--${{ runner.os }}
# Ensure that all components are compilable.
- name: Run cargo check for all targets
run: cargo check --color always --all --all-targets
test:
name: Test
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os:
- ubuntu-latest
# - macos-10.15
- windows-latest
crate:
- ast_node
- enum_kind
- from_variant
- jsdoc
- node
- rplugin
- rplugin_macros
- string_enum
- swc
- swc_atoms
- swc_bundler
- swc_common
- swc_css
- swc_css_ast
- swc_css_codegen
- swc_css_codegen_macros
- swc_css_parser
- swc_css_utils
- swc_css_visit
- swc_ecma_ast
- swc_ecma_codegen
- swc_ecma_codegen_macros
- swc_ecma_dep_graph
- swc_ecma_ext_transforms
- swc_ecma_loader
- swc_ecma_minifier
- swc_ecma_parser
- swc_ecma_plugin_ast
- swc_ecma_preset_env
- swc_ecma_transforms
- swc_ecma_transforms_base
- swc_ecma_transforms_classes
- swc_ecma_transforms_compat
- swc_ecma_transforms_macros
- swc_ecma_transforms_module
- swc_ecma_transforms_optimization
- swc_ecma_transforms_proposal
- swc_ecma_transforms_react
- swc_ecma_transforms_testing
- swc_ecma_transforms_typescript
- swc_ecma_utils
- swc_ecma_visit
- swc_ecmascript
- swc_eq_ignore_macros
- swc_estree_ast
- swc_estree_compat
- swc_fast_graph
- swc_graph_analyzer
- swc_macros_common
- swc_node_base
- swc_node_bundler
- swc_node_comments
- swc_plugin
- swc_plugin_js_api
- swc_plugin_runner
- swc_plugin_testing
- swc_stylis
- swc_timer
- swc_visit
- swc_visit_macros
- swc_webpack_ast
- testing
- testing_macros
- wasm
exclude:
- os: windows-latest
crate: swc_node_bundler
include:
- os: macos-latest
crate: swc_plugin_runner
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@v2
# Source map format
- uses: actions/setup-node@v2
with:
node-version: "16"
# We explicitly do this to cache properly.
- name: Install Rust
uses: actions-rs/toolchain@v1
with:
profile: minimal
- uses: actions/setup-node@v2
with:
node-version: 16
- uses: denoland/setup-deno@v1
if: matrix.crate == 'swc_bundler'
with:
deno-version: v1.x
- name: Checkout submodules
shell: bash
run: |
auth_header="$(git config --local --get http.https://github.com/.extraheader)"
git submodule sync --recursive
git -c "http.extraheader=$auth_header" -c protocol.version=2 submodule update --init --force --recursive --depth=1
- name: Install node dependencies
shell: bash
run: |
# This does not have any effect on windows.
npm config set prefix $HOME/npm
yarn
(cd crates/swc_ecma_transforms && yarn)
npm i -g jest
echo $HOME
echo $HOME/npm/bin >> $GITHUB_PATH
- name: Configure path (windows)
shell: bash
if: runner.os == 'Windows'
run: |
echo 'C:\\npm\\prefix' >> $GITHUB_PATH
- name: Verify dependencies
shell: bash
run: |
jest -v
- name: Cache
uses: actions/cache@v2
with:
path: |
~/.cargo/
target
Cargo.lock
key: cargo-dev--${{ runner.os }}-${{ matrix.crate }}-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
cargo-dev--${{ runner.os }}-${{ matrix.crate }}
- name: Run cargo test
run: |
jest -v
cargo test --color always -p ${{ matrix.crate }}
- name: Run cargo test (swc_ecma_transforms)
if: matrix.crate == 'swc_ecma_transforms'
run: |
cargo test --color always -p swc_ecma_transforms --all-features
- name: Run cargo test (concurrent)
if: runner.os != 'Windows'
shell: bash
run: |
./scripts/ci/test-concurrent.sh ${{ matrix.crate }}
- name: Run cargo test (swc, concurrent)
shell: bash
if: matrix.crate == 'swc' && runner.os != 'Windows'
run: |
cargo test --color always -p swc --features concurrent
deploy-docs:
name: Docs
runs-on: ubuntu-latest
# if: github.ref == 'refs/heads/main'
# needs:
# - test
steps:
- uses: actions/checkout@v2
- name: Install Rust
uses: actions-rs/toolchain@v1
with:
profile: minimal
- name: Create rustdoc
run: cargo doc --all
- name: Create CNAME
run: |
echo 'rustdoc.swc.rs' > target/doc/CNAME
- name: Deploy
if: github.ref == 'refs/heads/main'
uses: JamesIves/github-pages-deploy-action@4.1.0
with:
token: ${{ secrets.GH_TOKEN }}
branch: gh-pages
folder: target/doc
clean: true
git-config-email: github-bot@swc.rs
repository-name: swc-project/rustdoc
commit-message: "Update"
single-commit: true