Bump hectorm/wasm from 6c07d39
to b5f8d77
#62
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: 'Main' | |
on: | |
push: | |
tags: ['*'] | |
branches: ['*'] | |
pull_request: | |
branches: ['*'] | |
schedule: | |
- cron: '25 12 * * 3' | |
workflow_dispatch: | |
permissions: {} | |
jobs: | |
build: | |
name: 'Build' | |
runs-on: 'ubuntu-latest' | |
permissions: | |
contents: 'read' | |
steps: | |
- name: 'Checkout' | |
uses: 'actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11' | |
- name: 'Expose GitHub Actions variables' | |
uses: 'actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea' | |
with: | |
script: | | |
for (const [k, v] of Object.entries(process.env)) { | |
if (k.startsWith("ACTIONS_")) core.exportVariable(k, v); | |
} | |
- name: 'Set up Docker Buildx' | |
uses: 'docker/setup-buildx-action@f95db51fddba0c2d1ec667646a06c2ce06100226' | |
- name: 'Use Node.js lts/*' | |
uses: 'actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8' | |
with: | |
node-version: 'lts/*' | |
- name: 'Install dependencies' | |
run: 'npm ci' | |
- name: 'Check types' | |
run: 'npm run types' | |
- name: 'Build module' | |
run: 'npm run build -- --pull --cache-from type=gha --cache-to type=gha,mode=max' | |
- name: 'Build docs' | |
run: 'npm run docs' | |
- name: 'Build demo' | |
if: "startsWith(github.ref, 'refs/tags/v')" | |
run: | | |
cp -a ./dist/ ./demo/dist/ | |
sed -ri 's|"[^"]+/(chafa\.js)"|"../dist/\1"|' ./demo/js/worker.js | |
find ./demo/ -type f -not -perm 0644 -exec chmod 0644 '{}' '+' | |
find ./demo/ -type d -not -perm 0755 -exec chmod 0755 '{}' '+' | |
- name: 'Upload module artifact' | |
uses: 'actions/upload-artifact@1eb3cb2b3e0f29609092a73eb033bb759a334595' | |
with: | |
name: 'dist' | |
path: './dist/' | |
retention-days: 1 | |
- name: 'Upload GitHub Pages artifact' | |
if: "startsWith(github.ref, 'refs/tags/v')" | |
uses: 'actions/upload-pages-artifact@0252fc4ba7626f0298f0cf00902a25c6afc77fa8' | |
with: | |
path: './demo/' | |
retention-days: 1 | |
test-node: | |
name: 'Test on Node.js ${{ matrix.node_version }}' | |
needs: ['build'] | |
runs-on: 'ubuntu-latest' | |
permissions: | |
contents: 'read' | |
strategy: | |
fail-fast: false | |
matrix: | |
node_version: ['lts/*', 'current'] | |
steps: | |
- name: 'Checkout' | |
uses: 'actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11' | |
- name: 'Use Node.js ${{ matrix.node_version }}' | |
uses: 'actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8' | |
with: | |
node-version: '${{ matrix.node_version }}' | |
- name: 'Download module artifact' | |
uses: 'actions/download-artifact@6b208ae046db98c579e8a3aa621ab581ff575935' | |
with: | |
name: 'dist' | |
path: './dist/' | |
- name: 'Test' | |
run: 'npm run test:node' | |
test-deno: | |
name: 'Test on Deno ${{ matrix.deno_version }}' | |
needs: ['build'] | |
runs-on: 'ubuntu-latest' | |
permissions: | |
contents: 'read' | |
strategy: | |
fail-fast: false | |
matrix: | |
deno_version: ['vx.x.x'] | |
steps: | |
- name: 'Checkout' | |
uses: 'actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11' | |
- name: 'Use Deno ${{ matrix.deno_version }}' | |
uses: 'denoland/setup-deno@0df5d9c641efdff149993c321fc27c11c5df8623' | |
with: | |
deno-version: '${{ matrix.deno_version }}' | |
- name: 'Download module artifact' | |
uses: 'actions/download-artifact@6b208ae046db98c579e8a3aa621ab581ff575935' | |
with: | |
name: 'dist' | |
path: './dist/' | |
- name: 'Test' | |
run: 'deno task test:deno' | |
test-bun: | |
name: 'Test on Bun ${{ matrix.bun_version }}' | |
needs: ['build'] | |
runs-on: 'ubuntu-latest' | |
permissions: | |
contents: 'read' | |
strategy: | |
fail-fast: false | |
matrix: | |
bun_version: ['latest'] | |
steps: | |
- name: 'Checkout' | |
uses: 'actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11' | |
- name: 'Use Bun ${{ matrix.bun_version }}' | |
uses: 'oven-sh/setup-bun@a1800f471a0bc25cddac36bb13e6f436ddf341d7' | |
with: | |
bun-version: '${{ matrix.bun_version }}' | |
- name: 'Download module artifact' | |
uses: 'actions/download-artifact@6b208ae046db98c579e8a3aa621ab581ff575935' | |
with: | |
name: 'dist' | |
path: './dist/' | |
- name: 'Test' | |
run: 'bun run test:bun' | |
test-browser: | |
name: 'Test on ${{ matrix.browser }}' | |
needs: ['build'] | |
runs-on: 'ubuntu-latest' | |
permissions: | |
contents: 'read' | |
strategy: | |
fail-fast: false | |
matrix: | |
browser: ['chromium', 'firefox', 'webkit'] | |
steps: | |
- name: 'Checkout' | |
uses: 'actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11' | |
- name: 'Use Node.js lts/*' | |
uses: 'actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8' | |
with: | |
node-version: 'lts/*' | |
- name: 'Install dependencies' | |
run: 'npm ci && npx playwright install --with-deps "${{ matrix.browser }}"' | |
- name: 'Download module artifact' | |
uses: 'actions/download-artifact@6b208ae046db98c579e8a3aa621ab581ff575935' | |
with: | |
name: 'dist' | |
path: './dist/' | |
- name: 'Test' | |
run: 'npm run test:browser:"${{ matrix.browser }}"' | |
publish-npm: | |
name: 'Publish npm package' | |
if: "startsWith(github.ref, 'refs/tags/v')" | |
needs: ['build', 'test-node', 'test-deno', 'test-bun', 'test-browser'] | |
runs-on: 'ubuntu-latest' | |
permissions: | |
contents: 'read' | |
steps: | |
- name: 'Checkout' | |
uses: 'actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11' | |
- name: 'Use Node.js lts/*' | |
uses: 'actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8' | |
with: | |
node-version: 'lts/*' | |
registry-url: 'https://registry.npmjs.org' | |
- name: 'Download module artifact' | |
uses: 'actions/download-artifact@6b208ae046db98c579e8a3aa621ab581ff575935' | |
with: | |
name: 'dist' | |
path: './dist/' | |
- name: 'Publish' | |
env: | |
NODE_AUTH_TOKEN: '${{ secrets.NPM_TOKEN }}' | |
run: | | |
PKG_NAME="$(jq -r '.name' ./package.json)"; PKG_VERSION="$(jq -r '.version' ./package.json)" | |
if [ "$(npm view "${PKG_NAME:?}" versions --json | jq -r --arg v "${PKG_VERSION:?}" 'index($v)')" = 'null' ]; then | |
npm publish | |
fi | |
publish-github-release: | |
name: 'Publish GitHub release' | |
if: "startsWith(github.ref, 'refs/tags/v')" | |
needs: ['build', 'test-node', 'test-deno', 'test-bun', 'test-browser'] | |
runs-on: 'ubuntu-latest' | |
permissions: | |
contents: 'write' | |
steps: | |
- name: 'Publish' | |
env: | |
GITHUB_PAT: '${{ secrets.GITHUB_TOKEN }}' | |
run: | | |
RELEASE_STATUS="$(curl -fs --proto '=https' --tlsv1.3 --globoff \ | |
--url "https://api.github.com/repos/${GITHUB_REPOSITORY:?}/releases/tags/${GITHUB_REF_NAME:?}" \ | |
--header "Authorization: Bearer ${GITHUB_PAT:?}" \ | |
--header 'Accept: application/vnd.github.v3+json' \ | |
--header 'Content-Type: application/json' \ | |
--write-out '%{http_code}' --output /dev/null ||:)" | |
if [ "${RELEASE_STATUS:?}" = '200' ]; then exit 0; fi | |
RELEASE_ID="$(curl -fsS --proto '=https' --tlsv1.3 --globoff \ | |
--url "https://api.github.com/repos/${GITHUB_REPOSITORY:?}/releases" \ | |
--header "Authorization: Bearer ${GITHUB_PAT:?}" \ | |
--header 'Accept: application/vnd.github.v3+json' \ | |
--header 'Content-Type: application/json' \ | |
--data "$(jq -rn --arg tag "${GITHUB_REF_NAME:?}" '{"name": $tag, "tag_name": $tag, "generate_release_notes": true}')" | jq -r '.id')" | |
if [ -z "${RELEASE_ID-}" ] || [ "${RELEASE_ID:?}" = 'null' ]; then exit 1; fi | |
publish-github-pages: | |
name: 'Publish GitHub Pages' | |
if: "startsWith(github.ref, 'refs/tags/v')" | |
needs: ['build', 'test-node', 'test-deno', 'test-bun', 'test-browser'] | |
runs-on: 'ubuntu-latest' | |
permissions: | |
id-token: 'write' | |
pages: 'write' | |
environment: | |
name: 'github-pages' | |
url: '${{ steps.deployment.outputs.page_url }}' | |
steps: | |
- name: 'Publish' | |
id: 'deployment' | |
uses: 'actions/deploy-pages@87c3283f01cd6fe19a0ab93a23b2f6fcba5a8e42' |