97 lines
3.2 KiB
YAML
97 lines
3.2 KiB
YAML
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 }} |