Skip to content

fix(scheme): add wanxiang sub-schemas (english/mixedcode/reverse) #5

fix(scheme): add wanxiang sub-schemas (english/mixedcode/reverse)

fix(scheme): add wanxiang sub-schemas (english/mixedcode/reverse) #5

Workflow file for this run

name: Release
on:
push:
tags:
- 'v*'
permissions:
contents: write
env:
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
jobs:
# ── 1. 打包 scheme ──────────────────────────────────────────
package:
runs-on: ubuntu-latest
outputs:
version: ${{ steps.version.outputs.version }}
steps:
- uses: actions/checkout@v4
- name: Get version
id: version
run: echo "version=${GITHUB_REF_NAME}" >> $GITHUB_OUTPUT
- name: Fetch generated dicts from Worker
run: |
mkdir -p dicts
curl -fsSL "https://rime.ichimarugin728.dev/dicts/tone_moe.dict.yaml" \
-o dicts/tone_moe.dict.yaml
curl -fsSL "https://rime.ichimarugin728.dev/dicts/gins-shici.dict.yaml" \
-o dicts/gins-shici.dict.yaml
- name: Package scheme — Squirrel
run: |
mkdir -p dist
tar czf dist/gins-rime-squirrel.tar.gz \
scheme/shared/ \
scheme/squirrel/ \
dicts/tone_moe.dict.yaml \
dicts/gins-shici.dict.yaml
- name: Package scheme — Hamster
run: |
tar czf dist/gins-rime-hamster.tar.gz \
scheme/shared/ \
scheme/hamster/ \
dicts/tone_moe.dict.yaml \
dicts/gins-shici.dict.yaml
- name: Copy zsh CLI script
run: cp tools/gins-rime dist/gins-rime
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: dist
path: dist/
# ── 1b. 编译 Swift binary ─────────────────────────────────────
build-swift:
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- name: Build Swift binary
working-directory: tools/gins-rime-cli
run: |
swift build -c release
cp .build/release/GinsRime /tmp/gins-rime-native
chmod +x /tmp/gins-rime-native
- name: Upload Swift artifact
uses: actions/upload-artifact@v4
with:
name: gins-rime-native
path: /tmp/gins-rime-native
# ── 2. 上传 R2 ──────────────────────────────────────────────
upload-r2:
needs: [package, build-swift]
runs-on: ubuntu-latest
env:
CLOUDFLARE_API_TOKEN: ${{ secrets.CF_API_TOKEN }}
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CF_ACCOUNT_ID }}
VERSION: ${{ needs.package.outputs.version }}
steps:
- uses: actions/download-artifact@v4
with:
name: dist
path: dist/
- uses: actions/download-artifact@v4
with:
name: gins-rime-native
path: dist/
- name: Install wrangler
run: npm install -g wrangler
- name: Upload packages to R2
run: |
wrangler r2 object put "gins-rime/releases/${VERSION}/squirrel.tar.gz" \
--file dist/gins-rime-squirrel.tar.gz \
--content-type "application/gzip" --remote
wrangler r2 object put "gins-rime/releases/latest/squirrel.tar.gz" \
--file dist/gins-rime-squirrel.tar.gz \
--content-type "application/gzip" --remote
wrangler r2 object put "gins-rime/releases/${VERSION}/hamster.tar.gz" \
--file dist/gins-rime-hamster.tar.gz \
--content-type "application/gzip" --remote
wrangler r2 object put "gins-rime/releases/latest/hamster.tar.gz" \
--file dist/gins-rime-hamster.tar.gz \
--content-type "application/gzip" --remote
wrangler r2 object put "gins-rime/releases/${VERSION}/gins-rime" \
--file dist/gins-rime \
--content-type "application/x-sh" --remote
wrangler r2 object put "gins-rime/releases/latest/gins-rime" \
--file dist/gins-rime \
--content-type "application/x-sh" --remote
wrangler r2 object put "gins-rime/releases/${VERSION}/gins-rime-native" \
--file dist/gins-rime-native \
--content-type "application/octet-stream" --remote
wrangler r2 object put "gins-rime/releases/latest/gins-rime-native" \
--file dist/gins-rime-native \
--content-type "application/octet-stream" --remote
- name: Update latest.json
run: |
DATE=$(date +%Y%m%d)
wrangler r2 object get gins-rime/releases/latest.json \
--file /tmp/latest.json --remote 2>/dev/null || echo '{}' > /tmp/latest.json
python3 - <<EOF
import json
with open('/tmp/latest.json') as f:
data = json.load(f)
data['version'] = '${VERSION}'
data['date'] = '${DATE}'
data['squirrel'] = '/releases/${VERSION}/squirrel.tar.gz'
data['hamster'] = '/releases/${VERSION}/hamster.tar.gz'
data['cli'] = '/releases/${VERSION}/gins-rime'
with open('/tmp/latest.json', 'w') as f:
json.dump(data, f, indent=2)
EOF
wrangler r2 object put gins-rime/releases/latest.json \
--file /tmp/latest.json \
--content-type "application/json" --remote
# ── 3. 部署 Worker ──────────────────────────────────────────
deploy-worker:
needs: upload-r2
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
with:
version: latest
run_install: false
- uses: actions/setup-node@v4
with:
node-version: 22
cache: pnpm
cache-dependency-path: workers/gins-rime/site/pnpm-lock.yaml
- name: Build site
working-directory: workers/gins-rime/site
run: CI=true pnpm install --frozen-lockfile && pnpm build
- name: Install worker deps
working-directory: workers/gins-rime
run: npm install
- name: Deploy to Cloudflare Workers
working-directory: workers/gins-rime
env:
CLOUDFLARE_API_TOKEN: ${{ secrets.CF_API_TOKEN }}
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CF_ACCOUNT_ID }}
run: npx wrangler deploy
# ── 4. GitHub Release ───────────────────────────────────────
github-release:
needs: [package, build-swift]
runs-on: ubuntu-latest
steps:
- uses: actions/download-artifact@v4
with:
name: dist
path: dist/
- uses: actions/download-artifact@v4
with:
name: gins-rime-native
path: dist/
- name: Create GitHub Release
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
VERSION: ${{ needs.package.outputs.version }}
run: |
gh release create "$VERSION" \
dist/gins-rime-squirrel.tar.gz \
dist/gins-rime-hamster.tar.gz \
dist/gins-rime \
dist/gins-rime-native \
--repo "${{ github.repository }}" \
--title "Gins-Rime $VERSION" \
--generate-notes