savar-g_taskline/.github/workflows/release.yml
2026-07-18 15:36:36 -07:00

78 lines
2.1 KiB
YAML

name: Release
on:
push:
tags:
- "[0-9]+.[0-9]+.[0-9]+"
permissions:
contents: read
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Check out repository
uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5
with:
persist-credentials: false
- name: Set up Node.js
uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5
with:
node-version: 22
cache: npm
- name: Install dependencies
run: npm ci
- name: Run tests
run: npm test
- name: Run Obsidian lint
run: npm run lint
- name: Build plugin
run: npm run build
- name: Verify release version
env:
RELEASE_TAG: ${{ github.ref_name }}
run: node -e 'const manifest = require("./manifest.json"); if (manifest.version !== process.env.RELEASE_TAG) { throw new Error(`Tag ${process.env.RELEASE_TAG} does not match manifest ${manifest.version}`); }'
- name: Stage release assets
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
with:
name: taskline-release
path: |
main.js
manifest.json
styles.css
if-no-files-found: error
retention-days: 1
release:
needs: build
runs-on: ubuntu-latest
permissions:
attestations: write
contents: write
id-token: write
steps:
- name: Download release assets
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4
with:
name: taskline-release
- name: Attest release assets
uses: actions/attest@f7c74d28b9d84cb8768d0b8ca14a4bac6ef463e6 # v4
with:
subject-path: |
main.js
manifest.json
styles.css
- name: Create GitHub release
env:
GH_TOKEN: ${{ github.token }}
run: gh release create "$GITHUB_REF_NAME" main.js manifest.json styles.css --repo "$GITHUB_REPOSITORY" --verify-tag --generate-notes --title "Taskline $GITHUB_REF_NAME"