Every runtime seam the plugin rides is source-identical from 0.1.7-alpha.2, so no code changes; the supported V4 baseline moves from 0.1.7-alpha.2 to 0.1.7-rc.1 (the alphas leave the matrix). rc.1 adds the harness-side plugin peer-compatibility admission gate (evaluatePluginCompatibility); the plugin's >=0.1.2-rc.1 dsh peers satisfy it under the gate's includePrerelease check, so the bundle composes with no exemption. The release workflow fetches the rc.1 tag for the compat matrix and points the plugin checker at the npm next dist-tag (0.1.7-rc.1).
87 lines
3.1 KiB
YAML
87 lines
3.1 KiB
YAML
name: Publish to npm
|
|
|
|
# Fires on a release tag (v*) push. Publishing uses npm Trusted Publishing
|
|
# (OIDC), so no long-lived token is needed — the npm-side trusted publisher
|
|
# must be configured with this exact workflow filename.
|
|
on:
|
|
push:
|
|
tags:
|
|
- 'v*'
|
|
|
|
permissions:
|
|
id-token: write # Required for OIDC
|
|
contents: read
|
|
|
|
jobs:
|
|
publish:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v7
|
|
|
|
- name: Check the DeeSeek Harness plugin
|
|
# `next` = the newest published generation (0.1.7-rc.1), whose npm
|
|
# dependency closure is complete. The 0.1.5-rc `latest` line is
|
|
# transitively broken on npm right now: web-app 0.1.5-rc.3 was
|
|
# published without the dsh-client-ui-sidebar-documentpreview rc.3 it
|
|
# requests, and every ^0.1.5-rc range resolves to it. Revisit when
|
|
# upstream republishes a complete stable closure.
|
|
uses: bowenliang123/dsh-plugin-checker@v1
|
|
with:
|
|
dshVersion: next
|
|
|
|
# Reads the pinned pnpm version from `packageManager` in package.json.
|
|
- uses: pnpm/action-setup@v6
|
|
with:
|
|
version: latest
|
|
|
|
- uses: actions/setup-node@v7
|
|
with:
|
|
node-version: '24'
|
|
registry-url: 'https://registry.npmjs.org'
|
|
package-manager-cache: false # never use caching in release builds
|
|
|
|
- name: Install dependencies
|
|
run: pnpm install --frozen-lockfile
|
|
|
|
- name: Build
|
|
run: pnpm run build
|
|
|
|
- name: Lint
|
|
run: pnpm run lint
|
|
|
|
# The `compat` vitest project inside `pnpm test` stages the REAL harness
|
|
# sources at every supported baseline tag (tests/baselines.ts is the
|
|
# source of truth — keep this fetch list in step when a baseline is
|
|
# added) and runs the built plugin through them; it skips silently
|
|
# without the tags, so this fetch sits BEFORE Test. Only the tags are
|
|
# fetched, so the clone stays shallow.
|
|
- name: Fetch the dsh baseline tags
|
|
run: |
|
|
mkdir -p .tmp/dsh-repo
|
|
cd .tmp/dsh-repo
|
|
git init -q
|
|
git remote add origin https://github.com/deepseek-ai/deepseek-harness.git
|
|
git fetch --depth 1 -q origin \
|
|
refs/tags/dsh-v0.1.2-rc.1:refs/tags/dsh-v0.1.2-rc.1 \
|
|
refs/tags/dsh-v0.1.3-alpha.2:refs/tags/dsh-v0.1.3-alpha.2 \
|
|
refs/tags/dsh-v0.1.5-rc.1:refs/tags/dsh-v0.1.5-rc.1 \
|
|
refs/tags/dsh-v0.1.7-rc.1:refs/tags/dsh-v0.1.7-rc.1
|
|
|
|
- name: Test
|
|
run: DSH_REPO="$PWD/.tmp/dsh-repo" pnpm test
|
|
|
|
- name: Verify version matches the tag
|
|
run: |
|
|
TAG="${{ github.ref_name }}"
|
|
VER="v$(node -p "require('./package.json').version")"
|
|
if [ "$TAG" != "$VER" ]; then
|
|
echo "::error::tag $TAG does not match package version $VER"
|
|
exit 1
|
|
fi
|
|
|
|
# Trusted publishing (OIDC) — no NODE_AUTH_TOKEN required; npm >= 11.5.1
|
|
# exchanges the Actions OIDC token for a short-lived publish credential
|
|
# and attaches provenance automatically.
|
|
- name: Publish to npm
|
|
run: npm publish
|