- 在 doc79 注册 act_runner-lunar(ID 43),模式参考 readitlater - lunar-node: docker://node:22-bookworm(小程序构建) - lunar-ci: docker://golang:1.22-bookworm(后端构建) - 产物挂载 /opt/lunar/ci-artifacts:/ci-artifacts - .gitignore 补充 web/ 和 .ci-tmp/
77 lines
2.1 KiB
YAML
77 lines
2.1 KiB
YAML
name: Build and Deploy Server
|
||
|
||
on:
|
||
push:
|
||
branches:
|
||
- main
|
||
paths:
|
||
- "server/**"
|
||
- ".gitea/workflows/server-deploy.yml"
|
||
|
||
jobs:
|
||
build:
|
||
# 专属运行器:docker://golang:1.22-bookworm(注册于 doc79)
|
||
runs-on: lunar-ci
|
||
steps:
|
||
- uses: https://gitea.neatcn.com/gouki/action-checkout@v4
|
||
with:
|
||
fetch-depth: 20
|
||
|
||
- name: Verify Go runtime
|
||
run: go version
|
||
|
||
- name: Install dependencies
|
||
working-directory: server
|
||
run: go mod download
|
||
|
||
- name: Run tests
|
||
working-directory: server
|
||
run: go test ./...
|
||
|
||
- name: Build application
|
||
working-directory: server
|
||
run: |
|
||
mkdir -p bin
|
||
go build -o bin/server cmd/main.go
|
||
|
||
- name: Build frontend (if exists)
|
||
working-directory: server
|
||
run: |
|
||
if [ -d "web" ]; then
|
||
echo "Building frontend..."
|
||
cd web
|
||
if [ -f "package.json" ]; then
|
||
npm ci
|
||
npm run build
|
||
fi
|
||
else
|
||
echo "No frontend directory found, skipping frontend build"
|
||
fi
|
||
|
||
- name: Create deployment package
|
||
working-directory: server
|
||
run: |
|
||
mkdir -p deploy
|
||
cp -r bin/ deploy/
|
||
cp -r migrations/ deploy/
|
||
cp -r scripts/ deploy/
|
||
if [ -d "web/dist" ]; then
|
||
cp -r web/dist/ deploy/public/
|
||
fi
|
||
tar -czf deploy.tar.gz deploy/
|
||
|
||
- name: Persist deployment package on runner host
|
||
run: |
|
||
test -f server/deploy.tar.gz
|
||
test -d /ci-artifacts
|
||
cp server/deploy.tar.gz "/ci-artifacts/server-deploy-${{ gitea.sha }}.tar.gz"
|
||
cp server/deploy.tar.gz /ci-artifacts/server-deploy-latest.tar.gz
|
||
ls -la /ci-artifacts/server-deploy-latest.tar.gz
|
||
echo "Deployment package saved on runner host: /opt/lunar/ci-artifacts/server-deploy-latest.tar.gz"
|
||
|
||
- name: Cleanup
|
||
if: always()
|
||
run: |
|
||
rm -rf server/deploy/
|
||
rm -f server/deploy.tar.gz
|