run-name: ${{ gitea.actor }} 构建镜像并推送(不含JAR依赖上传)🚀 on: push: branches: - master jobs: build-parent-pom: runs-on: ubuntu steps: - name: 拉取代码仓库 uses: http://git.missmoc.top/mocheng/checkout@v4 - name: 配置环境变量(绝对路径) run: | export JAVA_HOME="/java17/java17" export MAVEN_HOME="/maven/apache-maven-3.9.11" if [ ! -f "$JAVA_HOME/bin/java" ]; then echo "错误:JDK可执行文件不存在于 $JAVA_HOME/bin/java" exit 1 fi if [ ! -f "$MAVEN_HOME/bin/mvn" ]; then echo "错误:Maven可执行文件不存在于 $MAVEN_HOME/bin/mvn" exit 1 fi echo "JAVA_HOME=$JAVA_HOME" >> $GITHUB_ENV echo "$JAVA_HOME/bin" >> $GITHUB_PATH echo "MAVEN_HOME=$MAVEN_HOME" >> $GITHUB_ENV echo "$MAVEN_HOME/bin" >> $GITHUB_PATH "$JAVA_HOME/bin/java" -version "$MAVEN_HOME/bin/mvn" -v - name: 配置Maven仓库 run: | mkdir -p ~/.m2 cat > ~/.m2/settings.xml << EOF /root/.m2/repository multi-repo local-repo file:///root/.m2/repository aliyun-public https://maven.aliyun.com/repository/public multi-repo EOF - name: 构建主POM(仅本地安装,不上传) run: | MAIN_POM_ABSOLUTE_PATH="${GITHUB_WORKSPACE}/pom.xml" if [ ! -f "$MAIN_POM_ABSOLUTE_PATH" ]; then echo "错误:主POM文件不存在" exit 1 fi retries=3 count=0 until "$MAVEN_HOME/bin/mvn" clean install -U -DskipTests -f "$MAIN_POM_ABSOLUTE_PATH"; do count=$((count + 1)) if [ $count -ge $retries ]; then echo "错误:主POM构建失败" exit 1 fi sleep 10 done build-common-modules: needs: build-parent-pom runs-on: ubuntu steps: - name: 拉取代码仓库 uses: http://git.missmoc.top/mocheng/checkout@v4 - name: 配置环境变量 run: | export JAVA_HOME="/java17/java17" export MAVEN_HOME="/maven/apache-maven-3.9.11" echo "JAVA_HOME=$JAVA_HOME" >> $GITHUB_ENV echo "$JAVA_HOME/bin" >> $GITHUB_PATH echo "MAVEN_HOME=$MAVEN_HOME" >> $GITHUB_ENV echo "$MAVEN_HOME/bin" >> $GITHUB_PATH - name: 构建通用模块(仅本地使用,不上传) run: | COMMON_MODULES=( "ruoyi-common" "ruoyi-api" "ruoyi-common-bom" "ruoyi-common-alibaba-bom" "ruoyi-api-bom" ) for module in "${COMMON_MODULES[@]}"; do MODULE_POM_ABSOLUTE_PATH="${GITHUB_WORKSPACE}/${module}/pom.xml" if [ ! -f "$MODULE_POM_ABSOLUTE_PATH" ]; then echo "警告:模块 $module 不存在,跳过" continue fi retries=3 count=0 until "$MAVEN_HOME/bin/mvn" clean compile install -U -DskipTests -f "$MODULE_POM_ABSOLUTE_PATH"; do count=$((count + 1)) if [ $count -ge $retries ]; then echo "错误:模块 $module 构建失败" exit 1 fi sleep 10 done done build-and-push-services: needs: build-common-modules runs-on: ubuntu strategy: matrix: service: - ruoyi-auth - ruoyi-gateway - ruoyi-modules/Property - ruoyi-modules/ruoyi-gen - ruoyi-modules/ruoyi-job - ruoyi-modules/ruoyi-resource - ruoyi-modules/ruoyi-system - ruoyi-modules/ruoyi-workflow - ruoyi-modules/Sis - ruoyi-visual/ruoyi-monitor - ruoyi-visual/ruoyi-nacos - ruoyi-seata-server - ruoyi-sentinel-dashboard - ruoyi-snailjob-server steps: - name: 拉取代码仓库 uses: http://git.missmoc.top/mocheng/checkout@v4 - name: 配置环境变量 run: | export JAVA_HOME="/java17/java17" export MAVEN_HOME="/maven/apache-maven-3.9.11" echo "JAVA_HOME=$JAVA_HOME" >> $GITHUB_ENV echo "$JAVA_HOME/bin" >> $GITHUB_PATH echo "MAVEN_HOME=$MAVEN_HOME" >> $GITHUB_ENV echo "$MAVEN_HOME/bin" >> $GITHUB_PATH - name: 构建服务模块 run: | SERVICE_NAME="${{ matrix.service }}" SERVICE_POM_ABSOLUTE_PATH="${GITHUB_WORKSPACE}/${SERVICE_NAME}/pom.xml" if [ ! -f "$SERVICE_POM_ABSOLUTE_PATH" ]; then echo "错误:服务 $SERVICE_NAME 的POM文件不存在" exit 1 fi "$MAVEN_HOME/bin/mvn" clean package -U -DskipTests -f "$SERVICE_POM_ABSOLUTE_PATH" - name: 配置Docker允许HTTP私有仓库 run: | # 配置Docker守护进程接受HTTP私有仓库 sudo mkdir -p /etc/docker echo '{ "insecure-registries": ["172.100.10.45:3000"] }' | sudo tee /etc/docker/daemon.json # 重启Docker使配置生效 sudo systemctl restart docker # 验证配置 docker info | grep -A 10 "Insecure Registries" - name: 登录到私有容器仓库 run: | echo "${{ secrets.REGISTRY_PASS }}" | docker login ${{ secrets.REGISTRY_URL }} -u ${{ secrets.REGISTRY_USER }} --password-stdin - name: 构建Docker镜像 run: | SERVICE_NAME="${{ matrix.service }}" # 替换路径中的斜杠为连字符,避免镜像标签中的路径问题 SANITIZED_SERVICE_NAME=$(echo "$SERVICE_NAME" | tr '/' '-') IMAGE_TAG="172.100.10.45:3000/by2025/smartparks/${SANITIZED_SERVICE_NAME}:latest" # 确定Dockerfile路径 if [ -f "${GITHUB_WORKSPACE}/${SERVICE_NAME}/Dockerfile" ]; then DOCKERFILE_PATH="${GITHUB_WORKSPACE}/${SERVICE_NAME}/Dockerfile" else DOCKERFILE_PATH="${GITHUB_WORKSPACE}/Dockerfile" fi # 使用原生docker build命令构建镜像 docker build -t "$IMAGE_TAG" -f "$DOCKERFILE_PATH" "${GITHUB_WORKSPACE}" # 保存镜像标签供后续步骤使用 echo "IMAGE_TAG=$IMAGE_TAG" >> $GITHUB_ENV - name: 推送Docker镜像到私有仓库 run: | # 推送镜像 docker push "$IMAGE_TAG" # 登出仓库 docker logout ${{ secrets.REGISTRY_URL }}