diff --git a/.gitea/workflows/dev.yml b/.gitea/workflows/dev.yml index 1931e454..7947582b 100644 --- a/.gitea/workflows/dev.yml +++ b/.gitea/workflows/dev.yml @@ -1,3 +1,225 @@ +#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 Buildx +# uses: http://git.missmoc.top/mocheng/setup-buildx-action@v3 +# +# - name: 登录到容器仓库 +# uses: http://git.missmoc.top/mocheng/login-action@v3 +# with: +# registry: ${{ secrets.REGISTRY_URL }} +# username: ${{ secrets.REGISTRY_USER }} +# password: ${{ secrets.REGISTRY_PASS }} +# +# - name: 确定Dockerfile路径 +# id: dockerfile-path +# run: | +# SERVICE_NAME="${{ matrix.service }}" +# DOCKERFILE_ABSOLUTE_PATH="${GITHUB_WORKSPACE}/${SERVICE_NAME}/Dockerfile" +# +# if [ -f "$DOCKERFILE_ABSOLUTE_PATH" ]; then +# echo "dockerfile_path=$DOCKERFILE_ABSOLUTE_PATH" >> $GITHUB_OUTPUT +# else +# echo "dockerfile_path=${GITHUB_WORKSPACE}/Dockerfile" >> $GITHUB_OUTPUT +# fi +# +# - name: 构建并推送Docker镜像(仅推送镜像,不上传JAR) +# uses: http://git.missmoc.top/mocheng/build-push-action@v5 +# with: +# context: "${{ github.workspace }}" +# file: "${{ github.workspace }}/${{ matrix.service }}/Dockerfile" +# tags: "172.100.10.45:3000/by2025/smartparks/${{ matrix.service }}:latest" +# push: true +# cache-from: type=gha +# cache-to: type=gha,mode=max +# +# # 关键配置:允许该仓库使用HTTP +# daemon-config: | +# { +# "insecure-registries": ["172.100.10.45:3000"] +# } +# +# # 确保buildx使用正确的网络配置 +# driver-opts: | +# network=host +## context: "${{ github.workspace }}" +## file: ${{ github.workspace }}/${{ matrix.service }}/Dockerfile +## tags: 172.100.10.45:3000/by2025/smartparks/${{ matrix.service }}:latest +## # tags: ${{ secrets.REGISTRY_URL }}/by2025/$(echo ${{ matrix.service }} | tr 'A-Z' 'a-z'):${{ github.sha }} +## # tags: ${{ secrets.REGISTRY_URL }}/by2025/${{ matrix.service }}:2.0.4 +## push: true +## cache-from: type=gha +## cache-to: type=gha,mode=max + + run-name: ${{ gitea.actor }} 构建镜像并推送(不含JAR依赖上传)🚀 on: push: @@ -80,50 +302,50 @@ jobs: sleep 10 done - # build-common-modules: - # needs: build-parent-pom - # runs-on: ubuntu - # steps: - # - name: 拉取代码仓库 - # uses: http://git.missmoc.top/mocheng/checkout@v4 + 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: | + 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" - # ) + - 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 + 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 + 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 @@ -169,8 +391,21 @@ jobs: "$MAVEN_HOME/bin/mvn" clean package -U -DskipTests -f "$SERVICE_POM_ABSOLUTE_PATH" - - name: 配置Docker Buildx + - name: 检查JAR文件是否存在 + run: | + SERVICE_NAME="${{ matrix.service }}" + JAR_PATH="${GITHUB_WORKSPACE}/${SERVICE_NAME}/target/$(basename ${SERVICE_NAME}).jar" + if [ ! -f "$JAR_PATH" ]; then + echo "错误:JAR文件不存在 - $JAR_PATH" + echo "目标目录内容:" + ls -l "${GITHUB_WORKSPACE}/${SERVICE_NAME}/target" + exit 1 + fi + + - name: 配置Docker Buildx(使用原生Docker驱动) uses: http://git.missmoc.top/mocheng/setup-buildx-action@v3 + with: + driver: docker # 避免容器化驱动的网络隔离问题 - name: 登录到容器仓库 uses: http://git.missmoc.top/mocheng/login-action@v3 @@ -194,27 +429,19 @@ jobs: - name: 构建并推送Docker镜像(仅推送镜像,不上传JAR) uses: http://git.missmoc.top/mocheng/build-push-action@v5 with: - context: "${{ github.workspace }}" - file: "${{ github.workspace }}/${{ matrix.service }}/Dockerfile" - tags: "172.100.10.45:3000/by2025/smartparks/${{ matrix.service }}:latest" + # 使用服务模块目录作为构建上下文(确保能找到target/JAR) + context: "${{ github.workspace }}/${{ matrix.service }}" + file: "${{ steps.dockerfile-path.outputs.dockerfile_path }}" + # 处理镜像标签中的斜杠(避免格式错误) + tags: "172.100.10.45:3000/by2025/smartparks/$(echo ${{ matrix.service }} | tr '/' '-'):latest" push: true cache-from: type=gha cache-to: type=gha,mode=max - - # 关键配置:允许该仓库使用HTTP + # 允许HTTP访问私有仓库 daemon-config: | { "insecure-registries": ["172.100.10.45:3000"] } - - # 确保buildx使用正确的网络配置 + # 禁用容器化网络,使用主机网络 driver-opts: | network=host -# context: "${{ github.workspace }}" -# file: ${{ github.workspace }}/${{ matrix.service }}/Dockerfile -# tags: 172.100.10.45:3000/by2025/smartparks/${{ matrix.service }}:latest -# # tags: ${{ secrets.REGISTRY_URL }}/by2025/$(echo ${{ matrix.service }} | tr 'A-Z' 'a-z'):${{ github.sha }} -# # tags: ${{ secrets.REGISTRY_URL }}/by2025/${{ matrix.service }}:2.0.4 -# push: true -# cache-from: type=gha -# cache-to: type=gha,mode=max