Build Release Assets #15
Workflow file for this run
This file contains 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: Build Release Assets | |
on: | |
release: | |
types: [created] | |
jobs: | |
build-and-upload: | |
runs-on: ubuntu-latest | |
permissions: | |
contents: write | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Setup Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version: '18' | |
- name: Build Frontend | |
run: | | |
cd front | |
# 跳过 postinstall 脚本 | |
npm install --ignore-scripts | |
# 创建并配置环境文件 | |
cp .env.example .env.production | |
sed -i 's#VITE_AXIOS_BASE_URL.*#VITE_AXIOS_BASE_URL = "https://cyiapi.lmyself.ggff.net"#' .env.production | |
# 显示配置文件内容以便验证 | |
echo "Environment file content:" | |
cat .env.production | |
# 构建 | |
npm run build | |
cd dist | |
zip -r ../../frontend.zip . | |
echo "✅ Frontend build completed" | |
- name: Build Worker | |
run: | | |
cd service | |
# 从示例文件创建 wrangler.toml | |
cp wrangler.toml.example wrangler.toml | |
# 修改配置文件,使用占位符 | |
sed -i 's/database_name = ".*"/database_name = "YOUR_DATABASE_NAME"/' wrangler.toml | |
sed -i 's/database_id = ".*"/database_id = "YOUR_DATABASE_ID"/' wrangler.toml | |
sed -i 's/id = ".*"/id = "YOUR_KV_NAMESPACE_ID"/' wrangler.toml | |
sed -i 's/JWT_SECRET = ".*"/JWT_SECRET = "YOUR_JWT_SECRET"/' wrangler.toml | |
# 安装依赖并构建 | |
npm install | |
npx wrangler deploy --dry-run --outdir=dist | |
mv dist/index.js ../worker.js | |
echo "✅ Worker build completed" | |
# 保存构建产物为 artifacts | |
- name: Upload Artifacts | |
uses: actions/upload-artifact@v3 | |
with: | |
name: release-assets | |
path: | | |
frontend.zip | |
worker.js | |
# 上传到版本发布 | |
- name: Upload Release Assets | |
uses: softprops/action-gh-release@v1 | |
with: | |
files: | | |
frontend.zip | |
worker.js | |
tag_name: ${{ github.ref_name }} | |
token: ${{ secrets.GITHUB_TOKEN }} | |
# 更新 latest 标签和 release | |
- name: Update latest tag and release | |
run: | | |
# 删除旧的 latest 标签和 release(如果存在) | |
git push origin :refs/tags/latest || true | |
gh release delete latest --yes || true | |
# 创建新的 latest 标签指向当前 commit | |
git tag -f latest | |
git push -f origin latest | |
# 创建新的 latest release 并上传资产 | |
gh release create latest \ | |
--title "Latest Release" \ | |
--notes "This is always updated to the latest release. Current version: ${{ github.ref_name }}" \ | |
frontend.zip worker.js | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |