53f56ce086
- deploy.yml: tag 触发(v*.*.*),四阶段调脚本(compile/test/release/deploy) - manual.yml: workflow_dispatch 支持手动回滚,checkout 指定 tag - scripts/ci/compile.sh: 构建 Go 二进制 + Flutter Web,打包 dist/ - scripts/ci/test.sh: go test + flutter analyze - scripts/ci/release.sh: 解析 CHANGELOG.md → 更新 version.yaml → 创建 Forgejo Release - scripts/ci/deploy.sh: 从 Release 下载产物(自动/手动均可)→ 部署到 EC2 - CHANGELOG.md: Keep a Changelog 格式,初始 v1.0.0 条目 - backend: GetRelease 改读 version.yaml,移除 ENV 变量依赖 - backend/config/version.yaml: 重置为 v1.0.0 - web/download.html: 动态拉取 /api/v1/public/release 展示版本号和更新内容 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
39 lines
1.0 KiB
Bash
Executable File
39 lines
1.0 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# compile.sh <tag> — build backend + Flutter web, package into dist/
|
|
set -euo pipefail
|
|
|
|
export PATH="/opt/homebrew/bin:$PATH"
|
|
export GOPROXY="${GOPROXY:-https://goproxy.cn,direct}"
|
|
export PUB_HOSTED_URL="${PUB_HOSTED_URL:-https://pub.flutter-io.cn}"
|
|
export FLUTTER_STORAGE_BASE_URL="${FLUTTER_STORAGE_BASE_URL:-https://storage.flutter-io.cn}"
|
|
|
|
TAG="$1"
|
|
VER="${TAG#v}"
|
|
|
|
echo "==> compile: version=$VER"
|
|
|
|
# Sync Flutter pubspec version
|
|
sed -i '' "s/^version:.*/version: ${VER}+1/" client/pubspec.yaml
|
|
|
|
# Build Go backend (linux/amd64 for EC2)
|
|
cd backend
|
|
GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o jiu-server .
|
|
cd ..
|
|
|
|
# Build Flutter Web
|
|
cd client
|
|
flutter build web --release \
|
|
--base-href=/app/ \
|
|
"--dart-define=BASE_URL=https://jiu.51yanmei.com" \
|
|
"--dart-define=PUBLIC_URL=https://jiu.51yanmei.com" \
|
|
"--dart-define=APP_VERSION=${TAG}"
|
|
cd ..
|
|
|
|
# Package artifacts
|
|
mkdir -p dist
|
|
mv backend/jiu-server dist/jiu-server
|
|
tar -czf dist/web.tar.gz -C client/build web
|
|
|
|
echo "==> compile: done — dist/ contents:"
|
|
ls -lh dist/
|