This commit is contained in:
dy 2025-08-14 09:16:57 +08:00
commit a6b586836d
2 changed files with 165 additions and 28 deletions

View File

@ -1,13 +1,133 @@
name: Build and Push Microservices Images run-name: ${{ gitea.actor }} 构建镜像并推送不含JAR依赖上传🚀
on: on:
push: push:
branches: branches:
- [main] # 替换为要监听的分支 - master
jobs: jobs:
build-and-push: build-parent-pom:
runs-on: ubuntu-latest 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
<?xml version="1.0" encoding="UTF-8"?>
<settings>
<localRepository>$HOME/.m2/repository</localRepository>
<profiles>
<profile>
<id>multi-repo</id>
<repositories>
<repository>
<id>local-repo</id>
<url>file://$HOME/.m2/repository</url>
</repository>
<repository>
<id>aliyun-public</id>
<url>https://maven.aliyun.com/repository/public</url>
</repository>
</repositories>
</profile>
</profiles>
<activeProfiles>
<activeProfile>multi-repo</activeProfile>
</activeProfiles>
</settings>
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 package -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 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: strategy:
matrix: matrix:
service: service:
@ -26,41 +146,58 @@ jobs:
- ruoyi-sentinel-dashboard - ruoyi-sentinel-dashboard
- ruoyi-snailjob-server - ruoyi-snailjob-server
steps: steps:
- name: Checkout Repository - name: 拉取代码仓库
uses: actions/checkout@v3 uses: http://git.missmoc.top/mocheng/checkout@v4
- name: Set Up JDK - name: 配置环境变量
uses: actions/setup-java@v3 run: |
with: export JAVA_HOME="/java17/java17"
java-version: '17' # 按项目实际Java版本调整 export MAVEN_HOME="/maven/apache-maven-3.9.11"
distribution: 'temurin' 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: Build Project with Maven - name: 构建服务模块
run: mvn clean package -DskipTests -f ./${{ matrix.service }}/pom.xml 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
- name: Set Up Docker Buildx "$MAVEN_HOME/bin/mvn" clean package -U -DskipTests -f "$SERVICE_POM_ABSOLUTE_PATH"
uses: docker/setup-buildx-action@v2
- name: Login to Gitea Container Registry - name: 配置Docker Buildx
uses: docker/login-action@v2 uses: http://git.missmoc.top/mocheng/setup-buildx-action@v3
- name: 登录到容器仓库
uses: http://git.missmoc.top/mocheng/login-action@v3
with: with:
registry: ${{ secrets.REGISTRY_URL }} registry: ${{ secrets.REGISTRY_URL }}
username: ${{ secrets.REGISTRY_USER }} username: ${{ secrets.REGISTRY_USER }}
password: ${{ secrets.REGISTRY_PASS }} password: ${{ secrets.REGISTRY_PASS }}
- name: Determine Dockerfile Path - name: 确定Dockerfile路径
id: dockerfile-path id: dockerfile-path
run: | run: |
if [ "${{ matrix.service }}" = "ruoyi-visual/ruoyi-nacos" ]; then SERVICE_NAME="${{ matrix.service }}"
echo "dockerfile_path=./ruoyi-visual/ruoyi-nacos/Dockerfile" >> $GITHUB_OUTPUT DOCKERFILE_ABSOLUTE_PATH="${GITHUB_WORKSPACE}/${SERVICE_NAME}/Dockerfile"
if [ -f "$DOCKERFILE_ABSOLUTE_PATH" ]; then
echo "dockerfile_path=$DOCKERFILE_ABSOLUTE_PATH" >> $GITHUB_OUTPUT
else else
echo "dockerfile_path=./${{ matrix.service }}/Dockerfile" >> $GITHUB_OUTPUT echo "dockerfile_path=${GITHUB_WORKSPACE}/Dockerfile" >> $GITHUB_OUTPUT
fi fi
- name: Build and Push Docker Image - name: 构建并推送Docker镜像仅推送镜像不上传JAR
uses: docker/build-push-action@v4 uses: http://git.missmoc.top/mocheng/build-push-action@v5
with: with:
context: . context: "${GITHUB_WORKSPACE}"
file: ${{ steps.dockerfile-path.outputs.dockerfile_path }} file: ${{ steps.dockerfile-path.outputs.dockerfile_path }}
tags: ${{ secrets.REGISTRY_URL }}/by2025/${{ matrix.service }}:${{ github.sha }} tags: ${{ secrets.REGISTRY_URL }}/by2025/${{ matrix.service }}:${{ github.sha }}
push: true push: true
cache-from: type=gha
cache-to: type=gha,mode=max

View File

@ -14,8 +14,8 @@
<module>ruoyi-job</module> <module>ruoyi-job</module>
<module>ruoyi-resource</module> <module>ruoyi-resource</module>
<module>ruoyi-workflow</module> <module>ruoyi-workflow</module>
<module>Property</module> <!-- <module>Property</module>-->
<module>Sis</module> <!-- <module>Sis</module>-->
</modules> </modules>
<artifactId>ruoyi-modules</artifactId> <artifactId>ruoyi-modules</artifactId>