mirror of
https://github.com/hpd840321/craftlabs-authorization-sdk.git
synced 2026-06-09 10:00:30 +08:00
ci: add Gitea Actions deploy workflow and runner setup guide
This commit is contained in:
@@ -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
|
||||
Reference in New Issue
Block a user