diff --git a/.gitea/workflows/master_sellrt_build_manual.yaml b/.gitea/workflows/master_sellrt_build_manual.yaml index e2962fd..9d50316 100644 --- a/.gitea/workflows/master_sellrt_build_manual.yaml +++ b/.gitea/workflows/master_sellrt_build_manual.yaml @@ -4,7 +4,8 @@ on: jobs: build_and_deploy: - runs-on: ubuntu-latest + runs-on: java21 + outputs: build_status: ${{ job.status }} build_url: ${{ gitea.server_url }}/${{ gitea.repository.owner.name }}/${{ gitea.repository.name }}/actions/runs/${{ gitea.run_id }} @@ -26,52 +27,20 @@ jobs: with: ref: master - - name: 2.Set up JDK 21 - uses: actions/setup-java@v5 + + - name: 3.缓存 Maven 依赖 + uses: actions/cache@v5 with: - java-version: '21' - distribution: 'temurin' + path: ~/.m2/repository + key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} + restore-keys: | + ${{ runner.os }}-maven- - - name: 3.设置JAVA Maven 环境 + - name: 4.构建项目 run: | - # 适配root/普通用户 - 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: 4.构建jar包 - run: | - echo "===== 开始构建JAR包 =====" - # 新增:打印当前构建分支(两种方式双重确认) - echo "当前工作目录分支:$(git branch --show-current)" - echo "Gitea检出分支:${{ github.ref_name }}" - echo "预期构建分支: master" - echo "========================" - mvn -B clean install -DskipTests -Pdev 2>&1 - # 检查构建是否成功 - if [ $? -ne 0 ]; then - echo "JAR包构建失败!" - exit 1 - fi + java -version + mvn -v + mvn clean package -DskipTests - name: 5.生成Dockerfile run: | @@ -103,49 +72,40 @@ jobs: - ./uploads:/temp/uploads ports: - '10093:10093' - networks: - - aida_java_net restart: always - networks: - aida_java_net: - external: true - name: aida_java_net EOF # 验证docker-compose.yml生成 echo "docker-compose.yml内容:" cat docker-compose.yml - - name: 7.安装SSH工具 - run: | - $SUDO apt install -y sshpass openssh-client --no-install-recommends - # 配置SSH免密 - mkdir -p ~/.ssh - echo "${{ secrets.SSH_KEY }}" > ~/.ssh/id_rsa - chmod 600 ~/.ssh/id_rsa - ssh-keyscan -H ${{ secrets.SERVER_HOST }} >> ~/.ssh/known_hosts + - name: 7.上传jar到远程服务器 + uses: appleboy/scp-action@master + with: + host: ${{ secrets.SERVER_HOST }} + port: 22 + username: ${{ secrets.SERVER_USER }} + key: ${{ secrets.SSH_KEY }} + source: "target/*.jar,Dockerfile,docker-compose.yml" + target: ${{ env.REMOTE_DEPLOY_PATH }} + preserve_host_directory_structure: false - - name: 8.同步文件到远程服务器 - run: | - echo "===== 同步文件到远程服务器 =====" - # 使用scp同步文件 - scp -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null \ - ./target/*.jar ./Dockerfile ./docker-compose.yml \ - ${{ secrets.SERVER_USER }}@${{ secrets.SERVER_HOST }}:${{ env.REMOTE_DEPLOY_PATH }} 2>&1 - - - name: 9.部署和运行服务 - run: | - echo "===== 开始部署服务 =====" - # SSH执行部署命令 - ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null \ - ${{ secrets.SERVER_USER }}@${{ secrets.SERVER_HOST }} << 'EOF_SSH' + - name: 8. 重启 Docker 服务 + uses: appleboy/ssh-action@master # 👈 专门执行命令的 action + with: + host: ${{ secrets.SERVER_HOST }} + username: ${{ secrets.SERVER_USER }} + key: ${{ secrets.SSH_KEY }} + key_base64: true + script: | + echo "========= 进入部署目录 =========" cd ${{ env.REMOTE_DEPLOY_PATH }} - echo "停止旧容器..." - docker compose down || true - echo "构建镜像..." - docker compose build --no-cache - echo "启动服务..." - docker compose up -d - echo "验证容器状态..." - docker compose ps - echo "部署完成!" - EOF_SSH \ No newline at end of file + ls -l + + echo "========= 停止旧服务 =========" + docker compose down + + echo "========= 启动新服务 =========" + docker compose up -d --build + + echo "========= 查看运行状态 =========" + docker compose ps \ No newline at end of file