Skip to main content
Module

std/.github/workflows/ci.yml

The Deno Standard Library
Latest
File
name: ci
permissions: contents: write
on: push: branches: [main] pull_request: branches: [main]
jobs: test: runs-on: ${{ matrix.os }} timeout-minutes: 30 strategy: fail-fast: false matrix: deno: - v1.x - canary os: - ubuntu-latest - windows-latest - macOS-latest
steps: - name: Clone repository uses: actions/checkout@v4
- name: Set up Deno uses: denoland/setup-deno@v1 with: deno-version: ${{ matrix.deno }}
- name: Run tests # TODO(kt3k): remove doc-test task when the below issue resolved # https://github.com/denoland/deno/issues/23430 run: deno task test && deno task doc-test
- name: Run tests (simulate Deno 2) if: matrix.deno == 'canary' run: deno task test env: DENO_FUTURE: 1
- name: Run timezone-dependent tests run: | TZ=Australia/Sydney deno test datetime TZ=Europe/London deno test datetime TZ=America/Toronto deno test datetime if: matrix.os == 'ubuntu-latest'
- name: Type check browser compatible modules shell: bash run: deno task test:browser
- name: Generate lcov run: deno task cov:gen
- name: Upload coverage uses: codecov/codecov-action@v4 env: CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} with: name: ${{ matrix.os }}-${{ matrix.deno }}
- name: Release if version change if: | matrix.os == 'ubuntu-latest' && github.repository == 'denoland/deno_std' && github.ref == 'refs/heads/main' shell: bash env: GITHUB_TOKEN: ${{ secrets.DENOBOT_PAT }} run: ./_tools/release/03_release.ts
lint: runs-on: ${{ matrix.os }} timeout-minutes: 30 strategy: fail-fast: false matrix: os: - ubuntu-latest - windows-latest steps: - name: Clone repository uses: actions/checkout@v4 with: persist-credentials: false
- name: Set up Deno uses: denoland/setup-deno@v1 with: deno-version: canary
- name: Format run: deno fmt --check
- name: Lint run: deno task lint
- name: Spell-check uses: crate-ci/typos@master if: matrix.os == 'ubuntu-latest' with: config: ./.github/typos.toml
wasm: name: wasm runs-on: ubuntu-latest strategy: matrix: module: [crypto/_wasm] steps: - name: Clone repository uses: actions/checkout@v4 with: # required to check for changes fetch-depth: 2 persist-credentials: false
- name: Check for changes id: source run: |- set -o errexit shopt -s inherit_errexit declare modifications="$(git diff --name-only HEAD~ -- ${{ matrix.module }})" declare modified="$([[ "$modifications" ]] && echo true || echo false)" echo "modified=$modified" >> $GITHUB_OUTPUT echo "${{ matrix.module }} Wasm source modified in this commit? $modified" echo "$modifications"
- name: Set up Deno uses: denoland/setup-deno@v1 if: success() && steps.source.outputs.modified == 'true'
- name: Set up Rust uses: hecrj/setup-rust-action@v2 if: success() && steps.source.outputs.modified == 'true' with: # This must match the version in _wasm/rust-toolchain.toml of the module folder rust-version: 1.77.2 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 --cwd ${{ matrix.module }} wasmbuild --check
publish-dry-run: runs-on: ubuntu-latest timeout-minutes: 30 permissions: contents: read id-token: write
steps: - name: Clone repository uses: actions/checkout@v4
- name: Set up Deno uses: denoland/setup-deno@v1 with: deno-version: canary
- name: Convert to workspace run: deno run -A ./_tools/convert_to_workspace.ts
- name: Test # TODO(kt3k): remove doc-test task when the below issue resolved # https://github.com/denoland/deno/issues/23430 run: deno task test && deno task doc-test
- name: Publish (dry run) run: deno publish --allow-dirty --dry-run