Skip to content

Workflow file for this run

name: ci
on: [push, pull_request]
jobs:
rust:
name: deno_core-${{ matrix.os }}
if: |
(github.event_name == 'push' || !startsWith(github.event.pull_request.head.label, 'denoland:'))
&& github.ref_name != 'deno_core'
&& !startsWith(github.ref, 'refs/tags/deno/')
runs-on: ${{ matrix.os }}
timeout-minutes: 30
strategy:
matrix:
os: [macOS-latest, ubuntu-latest, windows-2019]
env:
CARGO_INCREMENTAL: 0
GH_ACTIONS: 1
RUST_BACKTRACE: full
RUSTFLAGS: -D warnings
steps:
- name: Clone repository
uses: actions/checkout@v3
- name: Install Rust
uses: dsherret/rust-toolchain-file@v1
- name: Install Rust (nightly)
if: contains(matrix.os, 'ubuntu')
uses: dtolnay/rust-toolchain@nightly
- name: Install Deno
uses: denoland/setup-deno@v1
- uses: Swatinem/rust-cache@v2
with:
prefix-key: "v1-rust"
save-if: ${{ github.ref == 'refs/heads/main' }}
- name: Clean
if: github.ref == 'refs/heads/main'
run: cargo clean
- name: Format
if: contains(matrix.os, 'ubuntu')
run: |
cargo fmt -- --check
deno fmt --check ./core/ ./ops/ ./serde_v8/
- name: Lint
if: contains(matrix.os, 'ubuntu')
run: |
cargo clippy --locked --release --all-features --all-targets -- -D clippy::all
deno lint
tools/copyright_checker.js
- name: Lint deps
if: contains(matrix.os, 'ubuntu')
run: |
cargo install cargo-machete --locked
cargo machete
cargo install cargo-udeps --locked
cargo +nightly udeps
- name: Cargo test
run: cargo test --locked --release --all-features --bins --tests --examples && cargo test --doc
- name: Cargo test (miri)
if: contains(matrix.os, 'ubuntu')
run: |
# Install and run miri tests
rustup component add --toolchain nightly miri
# This somehow prints errors in CI that don't show up locally
MIRIFLAGS="-Zmiri-disable-isolation" RUSTFLAGS=-Awarnings cargo +nightly miri test -p deno_core
- name: Run examples
# Only regression tests here for now.
# Regression test for https://github.com/denoland/deno/pull/19615.
run: |-
cargo run -p deno_core --example op2
cargo run -p deno_core --example op2 --features include_js_files_for_snapshotting
- name: Cargo publish
if: |
contains(matrix.os, 'ubuntu') &&
github.repository == 'denoland/deno_core' &&
startsWith(github.ref, 'refs/tags/')
env:
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
run: cargo publish -p serde_v8 && cargo publish -p deno_ops && cargo publish -p deno_core
- name: Get tag version
if: contains(matrix.os, 'ubuntu') && startsWith(github.ref, 'refs/tags/')
id: get_tag_version
run: echo ::set-output name=TAG_VERSION::${GITHUB_REF/refs\/tags\//}