Skip to content

fix(simulation): 仿真引擎全链路修复 + 定时循环测试任务 #79

fix(simulation): 仿真引擎全链路修复 + 定时循环测试任务

fix(simulation): 仿真引擎全链路修复 + 定时循环测试任务 #79

Workflow file for this run

name: Build and Deploy
on:
push:
branches: [main, master]
pull_request:
branches: [main, master]
env:
JAVA_VERSION: '21'
# 阿里云ACR配置 (使用Secrets)
IMAGE_NAME: opentcs-admin
IMAGE_TAG: latest
jobs:
#=================== 测试 ===================
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up JDK
uses: actions/setup-java@v4
with:
java-version: ${{ env.JAVA_VERSION }}
distribution: 'temurin'
# 显式Maven缓存
- name: Cache Maven packages
uses: actions/cache@v3
with:
path: ~/.m2
key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
restore-keys: ${{ runner.os }}-m2-
- name: Run tests
run: mvn test -Pdev -B
#=================== 构建并部署 ===================
build-deploy:
needs: test
runs-on: ubuntu-latest
if: github.event_name == 'push' && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/master')
steps:
- uses: actions/checkout@v4
- name: Set up JDK
uses: actions/setup-java@v4
with:
java-version: ${{ env.JAVA_VERSION }}
distribution: 'temurin'
# 显式Maven缓存
- name: Cache Maven packages
uses: actions/cache@v3
with:
path: ~/.m2
key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
restore-keys: ${{ runner.os }}-m2-
- name: Build JAR
run: mvn clean package -DskipTests -Pprod
# 构建Docker镜像
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Build Docker image
run: |
docker build -t ${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }} -f opentcs-plus/script/deploy/backend/Dockerfile .
# 登录阿里云ACR
- name: Login to Aliyun ACR
uses: docker/login-action@v3
with:
registry: ${{ secrets.ACR_HOST }}
username: ${{ secrets.ACR_USERNAME }}
password: ${{ secrets.ACR_PASSWORD }}
# 推送到阿里云ACR
- name: Push to Aliyun ACR
run: |
docker tag ${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }} ${{ secrets.ACR_HOST }}/opentcs/${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }}
docker push ${{ secrets.ACR_HOST }}/opentcs/${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }}
# 在服务器上部署
- name: Deploy to Server
uses: appleboy/ssh-action@v1.0.0
with:
host: ${{ secrets.DEPLOY_HOST }}
username: ${{ secrets.DEPLOY_USER }}
key: ${{ secrets.DEPLOY_KEY }}
script: |
# 登录阿里云ACR
docker login --username=${{ secrets.ACR_USERNAME }} --password=${{ secrets.ACR_PASSWORD }} ${{ secrets.ACR_HOST }}
# 拉取最新镜像
docker pull ${{ secrets.ACR_HOST }}/opentcs/${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }}
# 停止并删除旧容器
cd /opt/opentcs-deploy
docker rm -f opentcs-admin 2>/dev/null || true
# 启动新容器
docker run -d --name opentcs-admin --network opentcs-network -p 8088:8088 \
-e SPRING_PROFILES_ACTIVE=prod \
-e TZ=Asia/Shanghai \
-e SPRING_DATASOURCE_DYNAMIC_DATASOURCE_MASTER_URL='jdbc:mysql://opentcs-mysql:3306/opentcs?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true' \
-e SPRING_DATASOURCE_DYNAMIC_DATASOURCE_MASTER_USERNAME=opentcs \
-e SPRING_DATASOURCE_DYNAMIC_DATASOURCE_MASTER_PASSWORD='Opentcs@2024!DB' \
-e SPRING_DATA_REDIS_HOST=opentcs-redis \
-e SPRING_DATA_REDIS_PORT=6379 \
-e SPRING_DATA_REDIS_PASSWORD='Redis@2024!Cache' \
${{ secrets.ACR_HOST }}/opentcs/${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }}
sleep 20
curl -sf http://localhost:8088/actuator/health && echo 'Deployment SUCCESS!' || echo 'Deployment FAILED!'