fix(scheme): add wanxiang sub-schemas (english/mixedcode/reverse) #5
Workflow file for this run
This file contains hidden or 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: 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 |