更新 .gitea/workflows/dev.yml

This commit is contained in:
bichangxiong 2025-08-14 02:19:06 +08:00
parent 51c6dd2cc1
commit e52ee15f0f

View File

@ -1,134 +1,72 @@
run-name: ${{ gitea.actor }} 构建镜像并推送不含JAR依赖上传🚀 run-name: ${{ gitea.actor }} 构建并推送服务镜像 🚀
on: on:
push: push:
branches: branches: [master]
- master
jobs: jobs:
build-parent-pom: # 阶段1通过主POM统一构建所有模块
build-all:
runs-on: ubuntu runs-on: ubuntu
steps: steps:
- name: 拉取代码仓库 - name: 拉取代码
uses: http://git.missmoc.top/mocheng/checkout@v4 uses: http://git.missmoc.top/mocheng/checkout@v4
- name: 配置环境变量(绝对路径) - name: 配置JDK和Maven
run: | run: |
# 配置环境变量
export JAVA_HOME="/java17/java17" export JAVA_HOME="/java17/java17"
export MAVEN_HOME="/maven/apache-maven-3.9.11" export MAVEN_HOME="/maven/apache-maven-3.9.11"
if [ ! -f "$JAVA_HOME/bin/java" ]; then # 验证环境
echo "错误JDK可执行文件不存在于 $JAVA_HOME/bin/java" [ -d "$JAVA_HOME" ] || { echo "JDK不存在: $JAVA_HOME"; exit 1; }
exit 1 [ -d "$MAVEN_HOME" ] || { echo "Maven不存在: $MAVEN_HOME"; 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=$JAVA_HOME" >> $GITHUB_ENV
echo "$JAVA_HOME/bin" >> $GITHUB_PATH echo "$JAVA_HOME/bin" >> $GITHUB_PATH
echo "MAVEN_HOME=$MAVEN_HOME" >> $GITHUB_ENV echo "MAVEN_HOME=$MAVEN_HOME" >> $GITHUB_ENV
echo "$MAVEN_HOME/bin" >> $GITHUB_PATH echo "$MAVEN_HOME/bin" >> $GITHUB_PATH
"$JAVA_HOME/bin/java" -version
"$MAVEN_HOME/bin/mvn" -v
- name: 配置Maven仓库 - name: 配置Maven仓库
run: | run: |
mkdir -p ~/.m2 mkdir -p ~/.m2
cat > ~/.m2/settings.xml << EOF cat > ~/.m2/settings.xml << 'EOF'
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<settings> <settings>
<localRepository>$HOME/.m2/repository</localRepository> <localRepository>${user.home}/.m2/repository</localRepository>
<profiles> <profiles>
<profile> <profile>
<id>multi-repo</id> <id>aliyun</id>
<repositories> <repositories>
<repository> <repository>
<id>local-repo</id> <id>aliyun</id>
<url>file://$HOME/.m2/repository</url>
</repository>
<repository>
<id>aliyun-public</id>
<url>https://maven.aliyun.com/repository/public</url> <url>https://maven.aliyun.com/repository/public</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</repository> </repository>
</repositories> </repositories>
</profile> </profile>
</profiles> </profiles>
<activeProfiles> <activeProfiles>
<activeProfile>multi-repo</activeProfile> <activeProfile>aliyun</activeProfile>
</activeProfiles> </activeProfiles>
</settings> </settings>
EOF EOF
- name: 构建主POM仅本地安装不上传 - name: 主POM统一打包
run: | run: |
MAIN_POM_ABSOLUTE_PATH="${GITHUB_WORKSPACE}/pom.xml" # 从根目录构建所有模块
if [ ! -f "$MAIN_POM_ABSOLUTE_PATH" ]; then mvn clean package -U -DskipTests -f pom.xml
echo "错误主POM文件不存在"
exit 1
fi
retries=3 # 查看构建产物
count=0 find . -name "*.jar" -path "*/target/*"
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: # 阶段2为每个服务构建并推送镜像
needs: build-parent-pom build-images:
runs-on: ubuntu needs: build-all
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 runs-on: ubuntu
strategy: strategy:
fail-fast: false
matrix: matrix:
service: service:
- ruoyi-auth - ruoyi-auth
@ -146,58 +84,32 @@ jobs:
- ruoyi-sentinel-dashboard - ruoyi-sentinel-dashboard
- ruoyi-snailjob-server - ruoyi-snailjob-server
steps: steps:
- name: 拉取代码仓库 - name: 拉取代码
uses: http://git.missmoc.top/mocheng/checkout@v4 uses: http://git.missmoc.top/mocheng/checkout@v4
- name: 配置环境变量 - name: 配置Docker构建环境
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: 构建服务模块仅用于镜像构建不上传JAR
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 uses: http://git.missmoc.top/mocheng/setup-buildx-action@v3
- name: 登录容器仓库 - name: 登录容器仓库
uses: http://git.missmoc.top/mocheng/login-action@v3 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: 确定Dockerfile路径 - name: 构建并推送镜像
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 uses: http://git.missmoc.top/mocheng/build-push-action@v5
with: with:
context: "${GITHUB_WORKSPACE}" context: .
file: ${{ steps.dockerfile-path.outputs.dockerfile_path }} file: ./${{ matrix.service }}/Dockerfile
tags: ${{ secrets.REGISTRY_URL }}/by2025/${{ matrix.service }}:${{ github.sha }} tags: |
${{ secrets.REGISTRY_URL }}/by2025/${{ matrix.service }}:${{ github.sha }}
${{ secrets.REGISTRY_URL }}/by2025/${{ matrix.service }}:latest
push: true push: true
cache-from: type=gha cache-from: type=gha
cache-to: type=gha,mode=max cache-to: type=gha,mode=max
# 仅当Dockerfile或相关目录变化时构建
paths:
- ${{ matrix.service }}/**
- pom.xml