From eda8e74b1afd853fc8675a5e500d672554e2fd59 Mon Sep 17 00:00:00 2001 From: admin Date: Fri, 28 Nov 2025 16:10:17 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=20.gitea/workflows/prod?= =?UTF-8?q?=5Fbuild=5Fcommit.yaml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/prod_build_commit.yaml | 148 ++++++++++++++++++++++++ 1 file changed, 148 insertions(+) create mode 100644 .gitea/workflows/prod_build_commit.yaml diff --git a/.gitea/workflows/prod_build_commit.yaml b/.gitea/workflows/prod_build_commit.yaml new file mode 100644 index 0000000..cc2ba03 --- /dev/null +++ b/.gitea/workflows/prod_build_commit.yaml @@ -0,0 +1,148 @@ +name: git commit 控制 AiDA back-java Develop 分支构建部署 +on: + workflow_dispatch: + push: + branches: + - prod/release_1.0 + +jobs: + build_and_deploy: + runs-on: ubuntu-latest + if: "contains(github.event.head_commit.message, '[run build]')" + + + permissions: + contents: read + packages: write + + env: + REMOTE_DEPLOY_PATH: /workspace/workspace_lanecrawford/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 From 8482a88870316babc9fb223e0c040be4f2e06cd5 Mon Sep 17 00:00:00 2001 From: admin Date: Fri, 28 Nov 2025 16:11:34 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20.gitea/workflows/prod?= =?UTF-8?q?=5Fbuild=5Fcommit.yaml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/prod_build_commit.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitea/workflows/prod_build_commit.yaml b/.gitea/workflows/prod_build_commit.yaml index cc2ba03..34c7f4f 100644 --- a/.gitea/workflows/prod_build_commit.yaml +++ b/.gitea/workflows/prod_build_commit.yaml @@ -1,4 +1,4 @@ -name: git commit 控制 AiDA back-java Develop 分支构建部署 +name: git commit 控制 连卡佛 back-java prod 分支构建部署 on: workflow_dispatch: push: @@ -22,7 +22,7 @@ jobs: - name: 1.检出代码 uses: actions/checkout@v4 with: - ref: dev/3.1_release_merge + ref: prod/release_1.0 - name: Set up JDK 8 uses: actions/setup-java@v4 From 316702a8cf5d2105da250f256f4c2be44b852361 Mon Sep 17 00:00:00 2001 From: admin Date: Fri, 28 Nov 2025 16:14:59 +0800 Subject: [PATCH 3/5] =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E8=87=B3=E3=80=8C.gitea/workflows=E3=80=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/prod_build_commit.yaml | 7 +- .gitea/workflows/prod_build_manual.yaml | 143 ++++++++++++++++++++++++ 2 files changed, 146 insertions(+), 4 deletions(-) create mode 100644 .gitea/workflows/prod_build_manual.yaml diff --git a/.gitea/workflows/prod_build_commit.yaml b/.gitea/workflows/prod_build_commit.yaml index 34c7f4f..807c705 100644 --- a/.gitea/workflows/prod_build_commit.yaml +++ b/.gitea/workflows/prod_build_commit.yaml @@ -10,7 +10,6 @@ jobs: runs-on: ubuntu-latest if: "contains(github.event.head_commit.message, '[run build]')" - permissions: contents: read packages: write @@ -24,10 +23,10 @@ jobs: with: ref: prod/release_1.0 - - name: Set up JDK 8 + - name: Set up JDK 21 uses: actions/setup-java@v4 with: - java-version: '8' + java-version: '21' distribution: 'temurin' - name: 2.设置JAVA Maven 环境 @@ -40,7 +39,7 @@ jobs: $SUDO apt update && $SUDO apt install -y wget tar --no-install-recommends # 下载并安装Maven - MAVEN_VERSION="3.9.11" + MAVEN_VERSION="3.6.3" 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} diff --git a/.gitea/workflows/prod_build_manual.yaml b/.gitea/workflows/prod_build_manual.yaml new file mode 100644 index 0000000..6995e83 --- /dev/null +++ b/.gitea/workflows/prod_build_manual.yaml @@ -0,0 +1,143 @@ +name: 手动 连卡佛 back-java prod 分支构建部署 +on: + workflow_dispatch: + +jobs: + build_and_deploy: + runs-on: ubuntu-latest + + permissions: + contents: read + packages: write + + env: + REMOTE_DEPLOY_PATH: /workspace/workspace_lanecrawford/back + + steps: + - name: 1.检出代码 + uses: actions/checkout@v4 + with: + ref: prod/release_1.0 + + - name: Set up JDK 21 + uses: actions/setup-java@v4 + with: + java-version: '21' + 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.6.3" + 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 From b0bf6dc33828f5acf7863e29f9f8ce1e30778de0 Mon Sep 17 00:00:00 2001 From: admin Date: Fri, 28 Nov 2025 16:26:17 +0800 Subject: [PATCH 4/5] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20docker-compose.yml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index b07ff07..82cd672 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -6,4 +6,4 @@ services: # 日志目录映射 - ./log:/log ports: - - '10010:8080' \ No newline at end of file + - '10095:8080' \ No newline at end of file From faa655bc9d9d6af014ad526e7ebd9d19c6f7639e Mon Sep 17 00:00:00 2001 From: admin Date: Fri, 28 Nov 2025 16:40:51 +0800 Subject: [PATCH 5/5] =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E8=87=B3=E3=80=8C.gitea/workflows=E3=80=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/prod_build_schedule.yaml | 146 ++++++++++++++++++++++ 1 file changed, 146 insertions(+) create mode 100644 .gitea/workflows/prod_build_schedule.yaml diff --git a/.gitea/workflows/prod_build_schedule.yaml b/.gitea/workflows/prod_build_schedule.yaml new file mode 100644 index 0000000..e36dd0d --- /dev/null +++ b/.gitea/workflows/prod_build_schedule.yaml @@ -0,0 +1,146 @@ +name: 定时 连卡佛 back-java prod 分支构建部署 +on: + schedule: + # cron为UTC时区,构建时间=部署时间-8小时 {*分 (-8)时 *日 *月 *周} --- + # 示例: 1月1日22点22分触发构建 cron写作 - '22 14 1 1 *' + - cron: '22 14 1 1 *' + +jobs: + build_and_deploy: + runs-on: ubuntu-latest + + permissions: + contents: read + packages: write + + env: + REMOTE_DEPLOY_PATH: /workspace/workspace_lanecrawford/back + + steps: + - name: 1.检出代码 + uses: actions/checkout@v4 + with: + ref: prod/release_1.0 + + - name: Set up JDK 21 + uses: actions/setup-java@v4 + with: + java-version: '21' + 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.6.3" + 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