新工作流
This commit is contained in:
@@ -4,7 +4,8 @@ on:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build_and_deploy:
|
build_and_deploy:
|
||||||
runs-on: ubuntu-latest
|
runs-on: java21
|
||||||
|
|
||||||
outputs:
|
outputs:
|
||||||
build_status: ${{ job.status }}
|
build_status: ${{ job.status }}
|
||||||
build_url: ${{ gitea.server_url }}/${{ gitea.repository.owner.name }}/${{ gitea.repository.name }}/actions/runs/${{ gitea.run_id }}
|
build_url: ${{ gitea.server_url }}/${{ gitea.repository.owner.name }}/${{ gitea.repository.name }}/actions/runs/${{ gitea.run_id }}
|
||||||
@@ -26,52 +27,20 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
ref: master
|
ref: master
|
||||||
|
|
||||||
- name: 2.Set up JDK 21
|
|
||||||
uses: actions/setup-java@v5
|
- name: 3.缓存 Maven 依赖
|
||||||
|
uses: actions/cache@v5
|
||||||
with:
|
with:
|
||||||
java-version: '21'
|
path: ~/.m2/repository
|
||||||
distribution: 'temurin'
|
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
|
||||||
|
restore-keys: |
|
||||||
|
${{ runner.os }}-maven-
|
||||||
|
|
||||||
- name: 3.设置JAVA Maven 环境
|
- name: 4.构建项目
|
||||||
run: |
|
run: |
|
||||||
# 适配root/普通用户
|
java -version
|
||||||
SUDO=""
|
mvn -v
|
||||||
[ "$(id -u)" != "0" ] && SUDO="sudo"
|
mvn clean package -DskipTests
|
||||||
|
|
||||||
# 安装依赖
|
|
||||||
$SUDO apt update && $SUDO apt install -y wget tar --no-install-recommends
|
|
||||||
|
|
||||||
# 下载Maven
|
|
||||||
MAVEN_VERSION="3.9.11"
|
|
||||||
MAVEN_TAR="apache-maven-${MAVEN_VERSION}-bin.tar.gz"
|
|
||||||
MAVEN_URL="https://archive.apache.org/dist/maven/maven-3/${MAVEN_VERSION}/binaries/${MAVEN_TAR}"
|
|
||||||
wget --no-verbose -O /tmp/${MAVEN_TAR} ${MAVEN_URL}
|
|
||||||
|
|
||||||
# 解压+软链接
|
|
||||||
$SUDO tar -xzf /tmp/${MAVEN_TAR} -C /usr/local/
|
|
||||||
$SUDO ln -sf /usr/local/apache-maven-${MAVEN_VERSION} /usr/local/maven
|
|
||||||
|
|
||||||
# 配置PATH
|
|
||||||
echo "/usr/local/maven/bin" >> $GITHUB_PATH
|
|
||||||
export PATH="/usr/local/maven/bin:$PATH"
|
|
||||||
|
|
||||||
# 验证
|
|
||||||
mvn -v
|
|
||||||
|
|
||||||
- name: 4.构建jar包
|
|
||||||
run: |
|
|
||||||
echo "===== 开始构建JAR包 ====="
|
|
||||||
# 新增:打印当前构建分支(两种方式双重确认)
|
|
||||||
echo "当前工作目录分支:$(git branch --show-current)"
|
|
||||||
echo "Gitea检出分支:${{ github.ref_name }}"
|
|
||||||
echo "预期构建分支: master"
|
|
||||||
echo "========================"
|
|
||||||
mvn -B clean install -DskipTests -Pdev 2>&1
|
|
||||||
# 检查构建是否成功
|
|
||||||
if [ $? -ne 0 ]; then
|
|
||||||
echo "JAR包构建失败!"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
- name: 5.生成Dockerfile
|
- name: 5.生成Dockerfile
|
||||||
run: |
|
run: |
|
||||||
@@ -103,49 +72,40 @@ jobs:
|
|||||||
- ./uploads:/temp/uploads
|
- ./uploads:/temp/uploads
|
||||||
ports:
|
ports:
|
||||||
- '10094:10094'
|
- '10094:10094'
|
||||||
networks:
|
|
||||||
- aida_java_net
|
|
||||||
restart: always
|
restart: always
|
||||||
networks:
|
|
||||||
aida_java_net:
|
|
||||||
external: true
|
|
||||||
name: aida_java_net
|
|
||||||
EOF
|
EOF
|
||||||
# 验证docker-compose.yml生成
|
# 验证docker-compose.yml生成
|
||||||
echo "docker-compose.yml内容:"
|
echo "docker-compose.yml内容:"
|
||||||
cat docker-compose.yml
|
cat docker-compose.yml
|
||||||
|
|
||||||
- name: 7.安装SSH工具
|
- name: 7.上传jar到远程服务器
|
||||||
run: |
|
uses: appleboy/scp-action@master
|
||||||
$SUDO apt install -y sshpass openssh-client --no-install-recommends
|
with:
|
||||||
# 配置SSH免密
|
host: ${{ secrets.SERVER_HOST }}
|
||||||
mkdir -p ~/.ssh
|
port: 22
|
||||||
echo "${{ secrets.SSH_KEY }}" > ~/.ssh/id_rsa
|
username: ${{ secrets.SERVER_USER }}
|
||||||
chmod 600 ~/.ssh/id_rsa
|
key: ${{ secrets.SSH_KEY }}
|
||||||
ssh-keyscan -H ${{ secrets.SERVER_HOST }} >> ~/.ssh/known_hosts
|
source: "target/*.jar,Dockerfile,docker-compose.yml"
|
||||||
|
target: ${{ env.REMOTE_DEPLOY_PATH }}
|
||||||
|
preserve_host_directory_structure: false
|
||||||
|
|
||||||
- name: 8.同步文件到远程服务器
|
- name: 8. 重启 Docker 服务
|
||||||
run: |
|
uses: appleboy/ssh-action@master # 👈 专门执行命令的 action
|
||||||
echo "===== 同步文件到远程服务器 ====="
|
with:
|
||||||
# 使用scp同步文件
|
host: ${{ secrets.SERVER_HOST }}
|
||||||
scp -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null \
|
username: ${{ secrets.SERVER_USER }}
|
||||||
./target/*.jar ./Dockerfile ./docker-compose.yml \
|
key: ${{ secrets.SSH_KEY }}
|
||||||
${{ secrets.SERVER_USER }}@${{ secrets.SERVER_HOST }}:${{ env.REMOTE_DEPLOY_PATH }} 2>&1
|
key_base64: true
|
||||||
|
script: |
|
||||||
- name: 9.部署和运行服务
|
echo "========= 进入部署目录 ========="
|
||||||
run: |
|
|
||||||
echo "===== 开始部署服务 ====="
|
|
||||||
# SSH执行部署命令
|
|
||||||
ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null \
|
|
||||||
${{ secrets.SERVER_USER }}@${{ secrets.SERVER_HOST }} << 'EOF_SSH'
|
|
||||||
cd ${{ env.REMOTE_DEPLOY_PATH }}
|
cd ${{ env.REMOTE_DEPLOY_PATH }}
|
||||||
echo "停止旧容器..."
|
ls -l
|
||||||
docker compose down || true
|
|
||||||
echo "构建镜像..."
|
echo "========= 停止旧服务 ========="
|
||||||
docker compose build --no-cache
|
docker compose down
|
||||||
echo "启动服务..."
|
|
||||||
docker compose up -d
|
echo "========= 启动新服务 ========="
|
||||||
echo "验证容器状态..."
|
docker compose up -d --build
|
||||||
docker compose ps
|
|
||||||
echo "部署完成!"
|
echo "========= 查看运行状态 ========="
|
||||||
EOF_SSH
|
docker compose ps
|
||||||
@@ -29,8 +29,7 @@ spring:
|
|||||||
- DedupeResponseHeader=Access-Control-Allow-Origin Access-Control-Allow-Credentials
|
- DedupeResponseHeader=Access-Control-Allow-Origin Access-Control-Allow-Credentials
|
||||||
# ---------- 路由配置 ----------
|
# ---------- 路由配置 ----------
|
||||||
routes:
|
routes:
|
||||||
# WebSocket 路由:直接透传到后端 /notification/{id}
|
# 多实例部署时推送会失效,升级多实例要注意ws改造
|
||||||
# 注意:必须放在 aida-back 之前,确保优先匹配
|
|
||||||
- id: aida-back-websocket
|
- id: aida-back-websocket
|
||||||
uri: lb://aida-back
|
uri: lb://aida-back
|
||||||
predicates:
|
predicates:
|
||||||
|
|||||||
Reference in New Issue
Block a user