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: [canary] os: - ${{ github.repository_owner == 'denoland' && 'ubuntu-20.04-xl' || 'ubuntu-20.04' }} - ${{ github.repository_owner == 'denoland' && 'windows-2019-xl' || 'windows-2019' }} - macOS-latest
steps: - name: Clone repository uses: actions/checkout@v3 with: submodules: true
- name: Set up Deno uses: denoland/setup-deno@v1.0.0 with: deno-version: ${{ matrix.deno }}
- name: Run tests canary run: deno task test
- name: Type check browser compatible modules shell: bash run: deno task test:browser
- name: Generate lcov shell: bash # 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: | !startsWith(matrix.os, 'ubuntu') with: name: ${{ matrix.os }}-${{ matrix.deno }} files: cov.lcov
- name: Remove coverage report shell: bash if: | !startsWith(matrix.os, 'ubuntu') run: | rm -rf ./cov/ rm cov.lcov
- name: Release if version change if: | startsWith(matrix.os, 'ubuntu') && github.repository == 'denoland/deno_std' && github.ref == 'refs/heads/main' shell: bash env: GITHUB_TOKEN: ${{ secrets.DENOBOT_PAT }} run: ./_tools/release/03_release.ts
node: runs-on: ${{ matrix.os }} timeout-minutes: 30 strategy: fail-fast: false matrix: deno: [canary] os: - ${{ github.repository_owner == 'denoland' && 'ubuntu-20.04-xl' || 'ubuntu-20.04' }} - ${{ github.repository_owner == 'denoland' && 'windows-2019-xl' || 'windows-2019' }} - macOS-latest
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: Type check node modules shell: bash run: deno task node:check-unstable-api
# FIXME(bartlomieju): currently doc tests are failing, we need --compat mode in "deno test" to get them working # - name: Doctest node/ # run: deno test --doc --unstable --allow-all --import-map=test_import_map.json --config strict-ts44.tsconfig.json node/
- name: Unit test node/ run: deno task node:unit
- name: Run Node tests canary run: deno task node:test env: DENO_NODE_COMPAT_URL: file:///${{ github.workspace }}/
lint: runs-on: ${{ github.repository_owner == 'denoland' && 'ubuntu-20.04-xl' || 'ubuntu-20.04' }} 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
- name: Check circular dependencies shell: bash run: ./_tools/check_circular_deps.ts
- name: Check License headers shell: bash run: ./_tools/check_licence.ts
hash-wasm: name: "_wasm_crypto/" runs-on: ${{ github.repository_owner == 'denoland' && 'ubuntu-20.04-xl' || 'ubuntu-20.04' }} 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 "Wasm crypto 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 _wasm_crypto/rust-toolchain.toml: rust-version: 1.57.0 targets: wasm32-unknown-unknown components: rustfmt
- name: Rebuild Wasm and verify it hasn't changed if: success() && steps.source.outputs.modified == 'true' run: deno task build:crypto --check
varint-wasm: name: "_wasm_varint/" runs-on: ${{ github.repository_owner == 'denoland' && 'ubuntu-20.04-xl' || 'ubuntu-20.04' }} 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_varint/ id: source run: |- set -o errexit shopt -s inherit_errexit declare modifications="$(git diff --name-only HEAD~ -- ./_wasm_varint)" declare modified="$([[ "$modifications" ]] && echo true || echo false)" echo "::set-output name=modified::$modified" echo "Wasm varint 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 _wasm_varint/rust-toolchain.toml: rust-version: 1.57.0 targets: wasm32-unknown-unknown components: rustfmt
- name: Rebuild Wasm and verify it hasn't changed if: success() && steps.source.outputs.modified == 'true' run: deno task build:varint --check