mirror of
https://github.com/denoland/std.git
synced 2024-11-22 04:59:05 +00:00
b4e5d21762
Co-authored-by: kt3k <kt3k@users.noreply.github.com>
182 lines
4.3 KiB
YAML
182 lines
4.3 KiB
YAML
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
|
|
- v2.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@v2
|
|
with:
|
|
deno-version: ${{ matrix.deno }}
|
|
|
|
- name: Run tests
|
|
run: deno task test
|
|
|
|
- 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
|
|
run: deno task test:browser
|
|
if: matrix.deno == 'v2.x' && matrix.os == 'ubuntu-latest'
|
|
|
|
- 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 }}
|
|
|
|
test-node:
|
|
runs-on: ${{ matrix.os }}
|
|
timeout-minutes: 30
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
node:
|
|
- latest
|
|
os:
|
|
- ubuntu-latest
|
|
|
|
steps:
|
|
- name: Clone repository
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Set up Deno
|
|
uses: denoland/setup-deno@v2
|
|
|
|
- name: Set up Node.js
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version: ${{ matrix.node }}
|
|
|
|
- run: npm install
|
|
working-directory: _tools/node_test_runner
|
|
|
|
- name: Run tests
|
|
run: deno task test:node
|
|
|
|
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@v2
|
|
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@v2
|
|
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 }} --config deno.json 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@v2
|
|
with:
|
|
deno-version: canary
|
|
|
|
- name: Publish (dry run)
|
|
run: deno publish --dry-run
|