Files
aida_back/.gitea/workflows/research_build_manual.yaml

97 lines
3.2 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
name: 手动 AiDA back-java 开发分支构建部署
on:
workflow_dispatch:
jobs:
build_and_deploy:
# 注意:如果你的 Runner 是直接装在宿主机上的二进制文件,这里通常用自建的标签,如 'self-hosted'
# 如果是 Docker 形式的 Runner请确保它挂载了宿主机的目录
runs-on: ubuntu-latest
env:
# 宿主机存放代码和运行容器的物理路径
LOCAL_DEPLOY_PATH: /mnt/process/A6000_Server/AiDA_Workspace/Java_Server_workspace
JAR_NAME: aida-0.0.1-SNAPSHOT.jar
steps:
- name: 0.记录开始时间
id: build_start_time
run: echo "current_time=$(TZ='Asia/Hong_Kong' date '+%Y-%m-%d %H:%M:%S %Z')" >> $GITHUB_OUTPUT
- name: 1.检出代码
uses: actions/checkout@v4
with:
ref: dev/dev
- name: 2.Set up JDK 21
uses: actions/setup-java@v5
with:
java-version: '21'
distribution: 'temurin'
cache: 'maven'
- name: 3.构建 jar 包
run: |
echo "===== 开始构建 JAR ====="
mvn -B clean package -DskipTests -Pdev
- name: 4.同步文件到宿主机部署目录
run: |
echo "===== 复制文件到目标路径 ====="
# 确保部署目录存在
mkdir -p ${{ env.LOCAL_DEPLOY_PATH }}
# 复制 JAR 包、Dockerfile 和 Compose 文件
cp target/${{ env.JAR_NAME }} ${{ env.LOCAL_DEPLOY_PATH }}/
# 直接在目标位置生成/更新配置文件
cat > ${{ env.LOCAL_DEPLOY_PATH }}/Dockerfile << 'EOF'
FROM openjdk:21-ea-21-jdk-slim
VOLUME /tmp
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo 'Asia/Shanghai' > /etc/timezone
ADD ./${{ env.JAR_NAME }} /app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
EOF
cat > ${{ env.LOCAL_DEPLOY_PATH }}/docker-compose.yml << 'EOF'
version: '3'
services:
aida_back:
container_name: AiDA_Search_Java_Serve
build: .
volumes:
- ./log:/log
ports:
- '1608:5567'
restart: always
EOF
- name: 5.本地触发 Docker 部署
run: |
echo "===== 重启服务 ====="
cd ${{ env.LOCAL_DEPLOY_PATH }}
docker compose down || true
docker compose up -d --build
echo "===== 清理冗余镜像 ====="
docker image prune -f
echo "部署完成!"
docker compose ps
- name: 6.发送通知邮件
if: always()
uses: dawidd6/action-send-mail@v3
with:
server_address: smtp.gmail.com
server_port: 465
username: ${{ secrets.MAIL_USERNAME }}
password: ${{ secrets.MAIL_PASSWORD }}
subject: 'Gitea Actions (Local): ${{ job.status }} - AiDA Java'
to: 'cgzhou@aidlab.hk,zchengrong@yeah.net'
body: |
项目: AiDA back-java search (本地部署)
状态: ${{ job.status }}
路径: ${{ env.LOCAL_DEPLOY_PATH }}
时间: ${{ steps.build_start_time.outputs.current_time }}