feat: 配置cicd & 运行配置调整

This commit is contained in:
lzh
2025-12-18 11:35:48 +08:00
parent 63090f26c5
commit c7e370549b
4 changed files with 169 additions and 5 deletions

View File

@@ -0,0 +1,98 @@
name: aiot-platform CI/CD
on:
push:
branches:
- main
jobs:
build-and-deploy:
runs-on: xw-runner
container:
image: catthehacker/ubuntu:act-latest
# Runner 可能已默认挂载 docker.sock如遇权限问题再尝试添加 options: --user root
steps:
# 1. 手动检出代码
- name: Checkout (Native)
run: |
# 清理工作目录
ls -A1 | xargs rm -rf
# 手动拼接 Git URL
SERVER_DOMAIN=$(echo "${{ gitea.server_url }}" | sed -E 's|https?://||')
PROTO="http"
if [[ "${{ gitea.server_url }}" == https* ]]; then
PROTO="https"
fi
GIT_URL="${PROTO}://${{ gitea.actor }}:${{ gitea.token }}@${SERVER_DOMAIN}/${{ gitea.repository }}.git"
echo "Cloning from ${PROTO}://${SERVER_DOMAIN}/${{ gitea.repository }}.git ..."
git clone --depth 1 "$GIT_URL" .
git log -1 --format='%h - %s'
# 2. 准备 Docker 网络 (用于容器间通信)
- name: Create Docker Network
run: |
docker network create aiot-net || true
# 3. 构建并部署主服务 (Server)
- name: Build & Deploy Server
id: build-server
env:
IMAGE_NAME: 'aiot-server'
CONTAINER_NAME: aiot-server
run: |
# --- 构建 ---
SHORT_SHA=$(git log -1 --format='%h')
FULL_IMAGE_NAME="${IMAGE_NAME}:${SHORT_SHA}"
echo "Building Server $FULL_IMAGE_NAME..."
# 使用默认 Dockerfile
docker build -t "$FULL_IMAGE_NAME" -f Dockerfile .
docker tag "$FULL_IMAGE_NAME" "${IMAGE_NAME}:latest"
# --- 部署 ---
echo "Deploying Server..."
docker stop $CONTAINER_NAME || true
docker rm $CONTAINER_NAME || true
docker run -d \
--name $CONTAINER_NAME \
--network aiot-net \
--restart always \
-p 48080:48080 \
"${IMAGE_NAME}:latest"
# 4. 构建并部署 IoT 网关 (Gateway)
- name: Build & Deploy Gateway
id: build-gateway
env:
IMAGE_NAME: 'aiot-gateway'
CONTAINER_NAME: aiot-gateway
run: |
# --- 构建 ---
SHORT_SHA=$(git log -1 --format='%h')
FULL_IMAGE_NAME="${IMAGE_NAME}:${SHORT_SHA}"
echo "Building Gateway $FULL_IMAGE_NAME..."
# 使用 Dockerfile.gateway
docker build -t "$FULL_IMAGE_NAME" -f Dockerfile.gateway .
docker tag "$FULL_IMAGE_NAME" "${IMAGE_NAME}:latest"
# --- 部署 ---
echo "Deploying Gateway..."
docker stop $CONTAINER_NAME || true
docker rm $CONTAINER_NAME || true
# 覆盖 RPC 地址,使其指向 aiot-server 容器
# 假设 application.yaml 中配置的是 viewshanghai.iot.gateway.rpc.url
docker run -d \
--name $CONTAINER_NAME \
--network aiot-net \
--restart always \
-p 1883:1883 \
-p 8092:8092 \
-e VIEWSHANGHAI_IOT_GATEWAY_RPC_URL="http://aiot-server:48080" \
"${IMAGE_NAME}:latest"