ci: add Gitea Actions deploy workflow and runner setup guide

This commit is contained in:
2026-05-25 11:08:48 +08:00
parent 769bf721f4
commit ff534fc325
2 changed files with 222 additions and 0 deletions
+104
View File
@@ -0,0 +1,104 @@
# Gitea Actions: 平台部署流水线
# 触发条件:推送 main 分支 或 手动触发
# 运行环境:self-hosted runner(需要安装 docker + docker-compose
name: deploy
on:
push:
branches: [main]
paths:
- "services/**"
- "web/**"
- "services/docker-compose.yml"
workflow_dispatch:
env:
REGISTRY: gitea.craftlabs.cn/craftlabs
API_IMAGE: delivery-platform-api
WEBHOOK_IMAGE: license-webhook-ingress
UI_IMAGE: delivery-platform-ui
jobs:
build-and-deploy:
runs-on: ubuntu-latest # self-hosted runner 需注册该标签
steps:
- name: Checkout
uses: actions/checkout@v4
# ============ 后端 API ============
- name: Setup Java
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: "17"
cache: maven
- name: Build delivery-platform-api
run: |
mvn -f services/pom.xml -pl delivery-platform-api -am -DskipTests clean package -q
- name: Build API Docker image
run: |
docker build -t ${{ env.REGISTRY }}/${{ env.API_IMAGE }}:${{ github.sha }} \
-t ${{ env.REGISTRY }}/${{ env.API_IMAGE }}:latest \
services/delivery-platform-api
# ============ Webhook ============
- name: Build license-webhook-ingress
run: |
mvn -f services/pom.xml -pl license-webhook-ingress -am -DskipTests clean package -q
- name: Build Webhook Docker image
run: |
docker build -t ${{ env.REGISTRY }}/${{ env.WEBHOOK_IMAGE }}:${{ github.sha }} \
-t ${{ env.REGISTRY }}/${{ env.WEBHOOK_IMAGE }}:latest \
services/license-webhook-ingress
# ============ 前端 ============
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: "20"
- name: Build frontend
working-directory: web/delivery-platform-ui
run: |
npm install
npm run build
- name: Build Frontend Docker image
run: |
docker build -t ${{ env.REGISTRY }}/${{ env.UI_IMAGE }}:${{ github.sha }} \
-t ${{ env.REGISTRY }}/${{ env.UI_IMAGE }}:latest \
web/delivery-platform-ui
# ============ 推送镜像到 Gitea Registry ============
- name: Login to Gitea Container Registry
run: echo "${{ secrets.GITEA_REGISTRY_TOKEN }}" | docker login gitea.craftlabs.cn -u "${{ secrets.GITEA_REGISTRY_USER }}" --password-stdin
- name: Push images
run: |
docker push ${{ env.REGISTRY }}/${{ env.API_IMAGE }}:${{ github.sha }}
docker push ${{ env.REGISTRY }}/${{ env.API_IMAGE }}:latest
docker push ${{ env.REGISTRY }}/${{ env.WEBHOOK_IMAGE }}:${{ github.sha }}
docker push ${{ env.REGISTRY }}/${{ env.WEBHOOK_IMAGE }}:latest
docker push ${{ env.REGISTRY }}/${{ env.UI_IMAGE }}:${{ github.sha }}
docker push ${{ env.REGISTRY }}/${{ env.UI_IMAGE }}:latest
# ============ 远程部署 ============
- name: Deploy via docker-compose
env:
DB_PASSWORD: ${{ secrets.DB_PASSWORD }}
PLATFORM_JWT_SECRET: ${{ secrets.PLATFORM_JWT_SECRET }}
CRAFTLABS_WEBHOOK_EXPECTED_TOKEN: ${{ secrets.WEBHOOK_TOKEN }}
run: |
# 将 docker-compose.yml 复制到部署目录并替换镜像版本
mkdir -p /opt/craftlabs/deploy
cp services/docker-compose.yml /opt/craftlabs/deploy/
cd /opt/craftlabs/deploy
export API_IMAGE_TAG=${{ env.REGISTRY }}/${{ env.API_IMAGE }}:${{ github.sha }}
export WEBHOOK_IMAGE_TAG=${{ env.REGISTRY }}/${{ env.WEBHOOK_IMAGE }}:${{ github.sha }}
export UI_IMAGE_TAG=${{ env.REGISTRY }}/${{ env.UI_IMAGE }}:${{ github.sha }}
docker compose pull
docker compose up -d --remove-orphans