From dbf9b2d72277ad78c98fd92dce9422c1b1181e44 Mon Sep 17 00:00:00 2001 From: admin Date: Fri, 28 Nov 2025 15:13:48 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=20.gitea/workflows/develop?= =?UTF-8?q?=5Fbuild.yaml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/develop_build.yaml | 146 ++++++++++++++++++++++++++++ 1 file changed, 146 insertions(+) create mode 100644 .gitea/workflows/develop_build.yaml diff --git a/.gitea/workflows/develop_build.yaml b/.gitea/workflows/develop_build.yaml new file mode 100644 index 00000000..4f005b4f --- /dev/null +++ b/.gitea/workflows/develop_build.yaml @@ -0,0 +1,146 @@ +name: 手动 AiDA back-java Develop 分支构建部署 +on: + workflow_dispatch: + push: + branches: + - dev/3.1_release_merge + +jobs: + build_and_deploy: + runs-on: ubuntu-latest + + permissions: + contents: read + packages: write + + env: + REMOTE_DEPLOY_PATH: /workspace/workspace_aida/DevelopVersion/develop-version-aida-back + + steps: + - name: 1.检出代码 + uses: actions/checkout@v4 + with: + ref: dev/3.1_release_merge + + - name: Set up JDK 8 + uses: actions/setup-java@v4 + with: + java-version: '8' + distribution: 'temurin' + + - name: 2.设置JAVA Maven 环境 + run: | + # 适配act的root用户和Gitea Runner普通用户 + SUDO="" + [ "$(id -u)" != "0" ] && SUDO="sudo" + + # 安装依赖 + $SUDO apt update && $SUDO apt install -y wget tar --no-install-recommends + + # 下载并安装Maven + MAVEN_VERSION="3.9.11" + MAVEN_TAR="apache-maven-${MAVEN_VERSION}-bin.tar.gz" + MAVEN_URL="https://archive.apache.org/dist/maven/maven-3/${MAVEN_VERSION}/binaries/${MAVEN_TAR}" + wget --no-verbose -O /tmp/${MAVEN_TAR} ${MAVEN_URL} + + # 解压+软链接 + $SUDO tar -xzf /tmp/${MAVEN_TAR} -C /usr/local/ + $SUDO ln -sf /usr/local/apache-maven-${MAVEN_VERSION} /usr/local/maven + + # 配置PATH + echo "/usr/local/maven/bin" >> $GITHUB_PATH + export PATH="/usr/local/maven/bin:$PATH" + + # 验证 + mvn -v + + - name: 2.构建jar包 + run: + mvn -B clean package -DskipTests --file pom.xml + + - name: 3.检查 Runner 本地文件 + run: | + echo "当前目录:$(pwd)" + echo "target 目录内容:" + ls -la ./target/ + + # 容错:处理通配符无匹配的情况 + JAR_FILE=$(ls ./target/*.jar 2>/dev/null | head -n1) + if [ -z "$JAR_FILE" ] || [ ! -f "$JAR_FILE" ]; then + echo "❌ Runner 本地无有效 JAR 包!" + exit 1 + fi + + # 检查Docker配置文件 + for FILE in Dockerfile docker-compose.yml; do + if [ ! -f "./$FILE" ]; then + echo "❌ 缺失文件:$FILE" + exit 1 + fi + done + echo "✅ 本地文件校验通过!" + + - name: 4. 同步文件到远程服务器 + uses: appleboy/scp-action@v0.1.7 + with: + host: ${{ secrets.SERVER_HOST }} + username: ${{ secrets.SERVER_USER }} + key: ${{ secrets.SSH_KEY }} + source: "./target/*.jar,./Dockerfile,./docker-compose.yml" + target: ${{ env.REMOTE_DEPLOY_PATH }} + ssh_options: "-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" + strip_components: 0 + + - name: 5. 验证远程文件 + uses: appleboy/ssh-action@v1.0.3 + with: + host: ${{ secrets.SERVER_HOST }} + username: ${{ secrets.SERVER_USER }} + key: ${{ secrets.SSH_KEY }} + script: | + echo "===== 远程部署目录文件列表 =====" + ls -la ${{ env.REMOTE_DEPLOY_PATH }} + + # 容错:检查JAR包 + REMOTE_JAR=$(ls ${{ env.REMOTE_DEPLOY_PATH }}/target/*.jar 2>/dev/null | head -n1) + if [ -z "$REMOTE_JAR" ] || [ ! -f "$REMOTE_JAR" ]; then + echo "❌ 远程服务器无有效 JAR 包!" + exit 1 + fi + + # 检查Docker文件 + for FILE in Dockerfile docker-compose.yml; do + if [ ! -f "${{ env.REMOTE_DEPLOY_PATH }}/$FILE" ]; then + echo "❌ 远程缺失文件:$FILE" + exit 1 + fi + done + echo "✅ 远程文件校验通过!" + + - name: 6. 部署和运行服务 + uses: appleboy/ssh-action@v1.0.3 + with: + host: ${{ secrets.SERVER_HOST }} + username: ${{ secrets.SERVER_USER }} + key: ${{ secrets.SSH_KEY }} + script: | + echo "===== 开始部署服务 =====" + cd ${{ env.REMOTE_DEPLOY_PATH }} + + # 容错:停止旧容器(不存在则跳过) + echo "停止旧容器..." + docker compose down || true + + # 清理无效镜像(可选,释放空间) + docker system prune -f + + # 构建并启动新容器 + echo "构建Docker镜像..." + docker compose build --no-cache + echo "启动服务..." + docker compose up -d + + # 验证服务状态 + echo "验证容器状态..." + docker compose ps + echo "✅ 部署完成!" \ No newline at end of file