ci: escape all if conditions #44
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: CI | |
on: | |
push: | |
branches: | |
- main | |
tags: | |
- "v*.*.*" | |
pull_request: | |
branches: | |
- main | |
jobs: | |
build: | |
name: Build package | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: oven-sh/setup-bun@v2 | |
with: | |
bun-version: latest | |
- uses: actions/cache/restore@v4 | |
id: cache | |
with: | |
path: node_modules | |
key: ${{ runner.os }}-${{ hashFiles('bun.lockb') }} | |
- name: Install Dependencies | |
if: ${{ steps.cache.outputs.cache-hit != 'true' }} | |
run: bun install --frozen-lockfile | |
- uses: actions/cache/save@v4 | |
if: steps.cache.outputs.cache-hit != 'true' | |
with: | |
path: node_modules | |
key: ${{ runner.os }}-${{ hashFiles('bun.lockb') }} | |
- name: Build | |
run: bun run build | |
- name: Generate documentation | |
run: | | |
bun run scripts/gen-docs-actions.ts --force && \ | |
bun run scripts/gen-docs-api.ts --force && \ | |
bun run scripts/gen-config-schema.ts | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: dist | |
path: | | |
dist/ | |
config.schema.json | |
retention-days: 7 | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: docs | |
path: docs/ | |
retention-days: 1 | |
publish-npm: | |
name: Publish to npm | |
runs-on: ubuntu-latest | |
if: ${{ startsWith(github.ref, 'refs/tags/') }} | |
needs: | |
- build | |
permissions: | |
contents: write | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/download-artifact@v4 | |
with: | |
name: dist | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 20.x | |
- uses: JS-DevTools/npm-publish@v3 | |
with: | |
token: ${{ secrets.NPM_TOKEN }} | |
- id: extract-changelog | |
uses: sean0x42/markdown-extract@v2 | |
with: | |
file: CHANGELOG.md | |
pattern: ${{ github.ref_name }} | |
no-print-matched-heading: true | |
- name: Create Release | |
uses: softprops/action-gh-release@v2 | |
with: | |
body: | | |
## Changelog | |
${{ steps.extract-changelog.outputs.markdown }} | |
build-docs: | |
name: Build documentation | |
runs-on: ubuntu-latest | |
if: ${{ ! startsWith(github.ref, 'refs/tags/') }} | |
needs: | |
- build | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: '3.11' | |
cache: pip | |
- name: Install dependencies (python) | |
run: pip install -r requirements.txt | |
- name: Download artifact | |
uses: actions/download-artifact@v4 | |
with: | |
run-id: ${{ github.run_id }} | |
name: docs | |
path: docs/ | |
- name: Build | |
run: mkdocs build | |
- name: Upload artifact for deployment | |
uses: actions/upload-pages-artifact@v3 | |
if: ${{ github.event_name != 'pull_request' }} | |
with: | |
path: .docs/ | |
retention-days: 1 | |
deploy-docs: | |
name: Deploy documentation to GH Pages | |
runs-on: ubuntu-latest | |
needs: | |
- build-docs | |
permissions: | |
pages: write | |
id-token: write | |
environment: | |
name: github-pages | |
url: ${{ steps.deployment.outputs.page_url }} | |
if: ${{ github.event_name != 'pull_request' && ! startsWith(github.ref, 'refs/tags/') }} | |
steps: | |
- name: Deploy to GitHub Pages | |
id: deployment | |
uses: actions/deploy-pages@v4 |