Skip to main content
Module

std/.github/workflows/ci.yml

Deno standard library
Go to Latest
File
name: ci
on: push: branches: [main] pull_request: branches: [main]
jobs: test: runs-on: ${{ matrix.os }} timeout-minutes: 30 strategy: fail-fast: false matrix: deno: [1.x, canary] os: [macOS-latest, ubuntu-latest, windows-2019]
steps: - name: Clone repository uses: actions/checkout@v2 with: submodules: true persist-credentials: false
- name: Set up Deno uses: denoland/setup-deno@v1.0.0 with: deno-version: ${{ matrix.deno }}
- name: Run tests release if: matrix.deno != 'canary' run: deno test --doc --unstable --allow-all --coverage=./cov --import-map=test_import_map.json --config strict-ts44.tsconfig.json
- name: Run tests canary if: matrix.deno == 'canary' run: deno test --doc --unstable --allow-all --coverage=./cov --import-map=test_import_map.json --config strict-ts44.tsconfig.json --ignore=_wasm_crypto/_build.ts,crypto/_benches,encoding/_yaml/example,examples/chat/server.ts,examples/echo_server.ts,examples/cat.ts,examples/gist.ts,examples/curl.ts,hash/_wasm/build.ts,http/bench.ts,http/bench_legacy.ts,http/racing_server.ts,http/testdata,node/cli.ts,node/_tools,node/testdata,node/_module,wasi/snapshot_preview1_test_runner.ts
- name: Type check browser compatible modules shell: bash run: | git grep --name-only "// This module is browser compatible." | grep -v ".github/workflows" | xargs deno cache --config browser-compat.tsconfig.json
- name: Generate lcov shell: bash # TODO(kt3k): Excludes ubuntu for now because it panics while processing io/util.ts # See https://github.com/denoland/deno/issues/10420 if: matrix.os != 'ubuntu-latest' # excludes tests, testdata, and generated sources from coverage report run: | deno coverage ./cov/ --lcov --exclude="test\\.(ts|js)|wasm\\.js|testdata|node/_tools|node/_module/cjs|node_modules" > cov.lcov
- name: Upload coverage uses: codecov/codecov-action@v1 if: matrix.os != 'ubuntu-latest' with: name: ${{ matrix.os }}-${{ matrix.deno }} files: cov.lcov
- name: Remove coverage report shell: bash if: matrix.os != 'ubuntu-latest' run: | rm -rf ./cov/ rm cov.lcov
lint: runs-on: ubuntu-latest steps: - name: Clone repository uses: actions/checkout@v2 with: submodules: false persist-credentials: false
- name: Set up Deno uses: denoland/setup-deno@v1.0.0
- name: Format run: deno fmt --check
- name: Lint run: deno lint
hash-wasm: name: "_wasm_crypto/" runs-on: ubuntu-latest steps: - name: Clone repository uses: actions/checkout@v2 with: # required to check for changes fetch-depth: 2 submodules: false persist-credentials: false
- name: Check for changes to _wasm_crypto/ id: source run: |- set -o errexit shopt -s inherit_errexit declare modifications="$(git diff --name-only HEAD~ -- ./_wasm_crypto)" declare modified="$([[ "$modifications" ]] && echo true || echo false)" echo "::set-output name=modified::$modified" echo "Hash source modified in this commit? $modified" echo "$modifications"
- name: Set up Deno uses: denoland/setup-deno@v1.0.0 if: success() && steps.source.outputs.modified == 'true'
- name: Set up Rust uses: hecrj/setup-rust-action@v1 if: success() && steps.source.outputs.modified == 'true' with: # This must match the version in hash/_wasm/rust-toolchain: rust-version: 1.55.0 targets: wasm32-unknown-unknown components: rustfmt
- name: Set up wasm-bindgen-cli run: |- # This must match the version in _wasm_crypto/Cargo.lock: cargo install -f wasm-bindgen-cli --version 0.2.74 if: success() && steps.source.outputs.modified == 'true'
- name: Rebuild WASM if: success() && steps.source.outputs.modified == 'true' run: |- ./_wasm_crypto/_build.ts
- name: Verify WASM hasn't changed id: build if: success() && steps.source.outputs.modified == 'true' run: |- set -o errexit shopt -s inherit_errexit declare modifications="$(git status --porcelain)" declare modified="$([[ "$(git status --porcelain)" ]] && echo true || echo false)" echo "::set-output name=modified::$modified" echo "Generated code modified? $modified" echo "$modifications"
if [[ "$modified" = "true" ]]; then echo "::error ::Rebuilt WASM doesn't match committed WASM. Please rebuild and commit." exit 1 fi
- name: Upload rebuilt ./_wasm_crypto/ as artifact if it didn't match committed if: failure() && steps.build.outputs.modified == 'true' uses: actions/upload-artifact@v2 with: name: Rebuilt _wasm_crypto path: |- ./_wasm_crypto/crypto.js ./_wasm_crypto/crypto.wasm.js