更新 .gitea/workflows/dev.yml
This commit is contained in:
parent
51c6dd2cc1
commit
e52ee15f0f
@ -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
|
||||||
|
|
Loading…
Reference in New Issue
Block a user