Skip to content

0.2.1

0.2.1 #319

Workflow file for this run

# yaml-language-server: $schema=https://json.schemastore.org/github-workflow.json
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@692973e3d937129bcbf40652eb9f2f61becf3332"
- 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@988b5a0280414f521da01fcc63a27aeeb4b104db"
- name: "Use Node.js lts/*"
uses: "actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b"
with:
node-version: "lts/*"
cache: "npm"
- name: "Install dependencies"
run: "npm ci"
- name: "Build module"
run: "npm run build:wasm:docker -- --pull --cache-from type=gha --cache-to type=gha,mode=max"
- name: "Build types"
run: "npm run build:types"
- name: "Build docs"
run: "npm run docs"
- name: "Build demo"
run: |
cp -a ./dist/chafa.* ./demo/js/
sed -ri 's|"[^"]+/(chafa\.js)"|"./\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: "Lint"
run: "npm run lint"
- name: "Upload module artifact"
uses: "actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874"
with:
name: "dist"
path: "./dist/"
retention-days: 1
- name: "Upload demo artifact"
if: "startsWith(github.ref, 'refs/tags/v')"
uses: "actions/upload-pages-artifact@56afc609e74202658d3ffba0e8f6dda462b719fa"
with:
path: "./demo/"
retention-days: 1
test-node:
name: "Test on Node.js ${{ matrix.node_version }} on ${{ matrix.os }}"
needs: ["build"]
runs-on: "${{ matrix.os }}"
permissions:
contents: "read"
strategy:
fail-fast: false
matrix:
node_version: ["lts/-1", "lts/*", "current"]
os: ["ubuntu-latest", "windows-latest", "macos-latest"]
steps:
- name: "Checkout"
uses: "actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332"
- name: "Download module artifact"
uses: "actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16"
with:
name: "dist"
path: "./dist/"
- name: "Use Node.js ${{ matrix.node_version }}"
uses: "actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b"
with:
node-version: "${{ matrix.node_version }}"
cache: "npm"
- name: "Install dependencies"
run: "npm ci"
- name: "Test"
run: "npm run test:node"
test-deno:
name: "Test on Deno ${{ matrix.deno_version }} on ${{ matrix.os }}"
needs: ["build"]
runs-on: "${{ matrix.os }}"
permissions:
contents: "read"
strategy:
fail-fast: false
matrix:
deno_version: ["vx.x.x"]
os: ["ubuntu-latest", "windows-latest", "macos-latest"]
steps:
- name: "Checkout"
uses: "actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332"
- name: "Download module artifact"
uses: "actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16"
with:
name: "dist"
path: "./dist/"
- name: "Use Deno ${{ matrix.deno_version }}"
uses: "denoland/setup-deno@916edb9a40fd86d1ff57b758807ebe57242f7407"
with:
deno-version: "${{ matrix.deno_version }}"
- name: "Use Node.js lts/*"
uses: "actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b"
with:
node-version: "lts/*"
cache: "npm"
- name: "Install dependencies"
run: "npm ci"
- name: "Test"
run: "npm run test:deno"
test-bun:
name: "Test on Bun ${{ matrix.bun_version }} on ${{ matrix.os }}"
needs: ["build"]
runs-on: "${{ matrix.os }}"
permissions:
contents: "read"
strategy:
fail-fast: false
matrix:
bun_version: ["latest"]
os: ["ubuntu-latest", "windows-latest", "macos-latest"]
steps:
- name: "Checkout"
uses: "actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332"
- name: "Download module artifact"
uses: "actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16"
with:
name: "dist"
path: "./dist/"
- name: "Use Bun ${{ matrix.bun_version }}"
uses: "oven-sh/setup-bun@4bc047ad259df6fc24a6c9b0f9a0cb08cf17fbe5"
with:
bun-version: "${{ matrix.bun_version }}"
- name: "Install dependencies"
run: "bun install --frozen-lockfile"
- name: "Test"
run: "bun run test:bun"
test-browser:
name: "Test on ${{ matrix.browser }} browser on ${{ matrix.os }}"
needs: ["build"]
runs-on: "${{ matrix.os }}"
permissions:
contents: "read"
strategy:
fail-fast: false
matrix:
browser: ["chromium", "firefox", "webkit"]
os: ["ubuntu-latest"]
steps:
- name: "Checkout"
uses: "actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332"
- name: "Download module artifact"
uses: "actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16"
with:
name: "dist"
path: "./dist/"
- name: "Use Node.js lts/*"
uses: "actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b"
with:
node-version: "lts/*"
cache: "npm"
- name: "Install dependencies"
run: 'npm ci && npx playwright install --with-deps "${{ matrix.browser }}"'
- name: "Test"
run: 'npm run test:browser:"${{ matrix.browser }}"'
publish-npm:
name: "Publish npm package"
if: "startsWith(github.ref, 'refs/tags/v')"
needs: ["test-node", "test-deno", "test-bun", "test-browser"]
runs-on: "ubuntu-latest"
permissions:
contents: "read"
id-token: "write"
steps:
- name: "Checkout"
uses: "actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332"
- name: "Download module artifact"
uses: "actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16"
with:
name: "dist"
path: "./dist/"
- name: "Use Node.js lts/*"
uses: "actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b"
with:
node-version: "lts/*"
registry-url: "https://registry.npmjs.org"
- 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 --provenance --access public
fi
publish-github-release:
name: "Publish GitHub release"
if: "startsWith(github.ref, 'refs/tags/v')"
needs: ["test-node", "test-deno", "test-bun", "test-browser"]
runs-on: "ubuntu-latest"
permissions:
contents: "write"
steps:
- name: "Publish"
uses: "hectorm/ghaction-release@066200d04c3549852afa243d631ea3dc93390f68"
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@d6db90164ac5ed86f2b6aed7e0febac5b3c0c03e"