# 发布流程:推送 v* 标签 → 测试 → 构建 → 把产物挂到 Gitea Release 上。 # # 产物 patchbay.tar.gz 与 CPU 架构无关(纯 JS + 静态文件), # 架构差异由目标机器上的 bun 运行时吸收,安装侧见仓库根目录的 install.sh。 name: release on: push: tags: - 'v*' jobs: release: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 # 构建用的 bun 版本和 install.sh 里的 BUN_VERSION 保持一致,升级时两处一起改 - uses: oven-sh/setup-bun@v2 with: bun-version: '1.3.14' - run: bun install --frozen-lockfile - run: bun test - run: bun run typecheck # 布局必须保持 server/ 与 web-dist/ 平级: # server/routes.ts 里 WEB_DIST 用 import.meta.url 相对定位 ../web-dist/ - name: 构建并打包 run: | bun run build bun build --target=bun --minify server/index.ts --outfile dist/patchbay/server/index.js cp -r web-dist dist/patchbay/web-dist echo "${GITHUB_REF_NAME}" > dist/patchbay/version.txt cp dist/patchbay/version.txt version.txt tar -czf patchbay.tar.gz -C dist patchbay # version.txt 单独作为 asset 再传一份,install.sh check 用它比对版本, # 不用把整个 tarball 拉下来 - name: 发布 Release uses: https://gitea.com/actions/release-action@main with: # 默认令牌建不了 Release 时(老版本 Gitea 的权限限制), # 在仓库 Settings → Actions → Secrets 里加一个 RELEASE_TOKEN api_key: '${{ secrets.RELEASE_TOKEN || github.token }}' files: |- patchbay.tar.gz version.txt