ci/cd: 新增测试环境部署工作流
- 移除旧的 .env 文件 - 添加新的应用配置文件 - 更新 Docker Compose 文件 - 新增 Gitea CI/CD 工作流 - 修改 Nacos 配置 - 修正文件名大小写
This commit is contained in:
parent
8b17f6cb84
commit
73eeaa19c1
128
.gitea/workflow/deploy.test.yml
Normal file
128
.gitea/workflow/deploy.test.yml
Normal file
@ -0,0 +1,128 @@
|
||||
name: CI/CD Pipeline
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- test # 触发构建的分支
|
||||
|
||||
env:
|
||||
# ========== 环境变量配置 ==========
|
||||
REGISTRY_URL: ${{vars.REGISTRY_URL}} # 私有Docker镜像仓库地址
|
||||
PROJECT_NAME: llmx # 项目名称
|
||||
COMPOSE_FILE: docker-compose.test.yml # Docker compose文件路径
|
||||
LUKE_SERVER_DOCKER_REGISTRY_PASSWORD: ${{ secrets.SERVER_PASSWORD }} # 仓库密码
|
||||
JCNC_GITEA_URL: ${{vars.SERVER_GITEA_URL}} # Gitea地址
|
||||
RUNNER_TOOL_CACHE: /opt/tools-cache # 工具缓存目录
|
||||
GRADLE_CACHE_KEY: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
|
||||
SPRING_PROFILES_ACTIVE: test
|
||||
|
||||
jobs:
|
||||
build-and-deploy:
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: jcnc/act-runner:latest # 使用自定义Runner镜像
|
||||
options: --user root # 以root用户运行(需要docker权限)
|
||||
|
||||
steps:
|
||||
# ========== 1. 代码检出 ==========
|
||||
- name: 🛒 Checkout source code
|
||||
uses: ${{env.JCNC_GITEA_URL}}/actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0 # 获取完整git历史(某些插件需要)
|
||||
|
||||
# ========== 2. Docker环境准备 ==========
|
||||
- name: 🐳 Install Docker Environment
|
||||
run: |
|
||||
echo "=== 检查Docker安装状态 ==="
|
||||
if ! command -v docker >/dev/null; then
|
||||
echo "❌ Docker未安装,开始安装..."
|
||||
curl -fsSL https://get.docker.com | sh | tee docker-install.log
|
||||
echo "✅ Docker安装完成"
|
||||
echo "✅ Docker Compose安装完成"
|
||||
else
|
||||
echo "ℹ️ Docker已安装,版本: $(docker -v)"
|
||||
echo "ℹ️ Docker Compose已安装,版本: $(docker compose version)"
|
||||
fi
|
||||
|
||||
# ========== 3. Gradle环境准备 ==========
|
||||
- name: 🔧 Prepare Gradle Environment
|
||||
run: |
|
||||
echo "赋予gradlew执行权限..."
|
||||
chmod +x gradlew
|
||||
echo "当前目录结构:"
|
||||
ls -al
|
||||
# ========== 4. 恢复缓存 ==========
|
||||
- name: 📦 Use Cache
|
||||
id: cache
|
||||
uses: ${{env.JCNC_GITEA_URL}}/actions/cache/restore@v4
|
||||
with:
|
||||
path: |
|
||||
~/.gradle/caches
|
||||
~/.gradle/wrapper
|
||||
~/.cache
|
||||
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-gradle-
|
||||
${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
|
||||
env:
|
||||
ACTIONS_RUNNER_DEBUG: true # 启用缓存调试输出
|
||||
|
||||
- name: ⚙️ Setup Gradle
|
||||
uses: ${{env.JCNC_GITEA_URL}}/gradle/actions/setup-gradle@v4
|
||||
with:
|
||||
gradle-version: wrapper # 使用项目自带的gradle-wrapper
|
||||
|
||||
# ========== 5. 构建阶段 ==========
|
||||
- name: 🏗️ Build with Jib
|
||||
run: |
|
||||
echo "开始构建Docker镜像..."
|
||||
./gradlew jib --stacktrace --build-cache --info -Dorg.gradle.caching=true -Dorg.gradle.jvmargs="-Xmx2g -Xms2g -XX:MaxMetaspaceSize=1g" | tee build.log
|
||||
|
||||
echo "=== 镜像构建结果 ==="
|
||||
docker images | grep ${{env.PROJECT_NAME}}
|
||||
- name: 🛑 Stop Gradle Daemon
|
||||
run: |
|
||||
echo "停止Gradle守护进程..."
|
||||
./gradlew --stop
|
||||
echo "剩余Java进程:"
|
||||
ps aux | grep java || true
|
||||
# ========== 6. 保存缓存 ==========
|
||||
- name: 📦 Save Cache
|
||||
id: cache
|
||||
uses: ${{env.JCNC_GITEA_URL}}/actions/cache/save@v4
|
||||
with:
|
||||
path: |
|
||||
~/.gradle/caches
|
||||
~/.gradle/wrapper
|
||||
~/.cache
|
||||
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-gradle-
|
||||
${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
|
||||
env:
|
||||
ACTIONS_RUNNER_DEBUG: true # 启用缓存调试输出
|
||||
# ========== 7. 部署阶段 ==========
|
||||
- name: 🔧 Prepare Deployment
|
||||
run: |
|
||||
echo "准备部署环境..."
|
||||
chmod +x ${COMPOSE_FILE}
|
||||
echo "当前Docker状态:"
|
||||
docker ps -a
|
||||
|
||||
- name: 🧹 Clean Old Containers
|
||||
run: |
|
||||
echo "清理旧容器..."
|
||||
docker compose -f ${COMPOSE_FILE} down --remove-orphans
|
||||
echo "清理后Docker状态:"
|
||||
docker ps -a
|
||||
|
||||
- name: 🚀 Deploy New Version
|
||||
run: |
|
||||
echo "拉取最新镜像..."
|
||||
docker compose -f ${COMPOSE_FILE} pull
|
||||
|
||||
echo "启动新服务..."
|
||||
docker compose -f ${COMPOSE_FILE} up -d
|
||||
|
||||
echo "=== 服务状态检查 ==="
|
||||
docker compose -f ${COMPOSE_FILE} ps
|
||||
1
.gitignore
vendored
1
.gitignore
vendored
@ -27,7 +27,6 @@ out/
|
||||
!**/src/main/**/out/
|
||||
!**/src/test/**/out/
|
||||
gradle.properties
|
||||
docker/.env.dev
|
||||
### NetBeans ###
|
||||
/nbproject/private/
|
||||
/nbbuild/
|
||||
|
||||
@ -1,3 +0,0 @@
|
||||
Docker_REGISTRY_URL=49.235.96.75:5000
|
||||
SERVER_PASSWORD=L4s6f9y3
|
||||
SPRING_PROFILES_ACTIVE=prod
|
||||
@ -1,3 +0,0 @@
|
||||
Docker_REGISTRY_URL=49.235.96.75:5000
|
||||
SERVER_PASSWORD=L4s6f9y3
|
||||
SPRING_PROFILES_ACTIVE=test
|
||||
@ -1,25 +1,27 @@
|
||||
services:
|
||||
llmx-core-database:
|
||||
image: postgres:16-alpine # 长期支持版本推荐用 16
|
||||
container_name: llmx-core-database
|
||||
llmx-nacos:
|
||||
image: nacos/nacos-server:v2.3.2
|
||||
container_name: llmx-nacos
|
||||
restart: always
|
||||
ports:
|
||||
- "5432:9052"
|
||||
- "8848:9001"
|
||||
- "9848:9053"
|
||||
- "9849:9054"
|
||||
networks:
|
||||
- llmx-net
|
||||
- llmx-net-test
|
||||
environment:
|
||||
POSTGRES_DB: llmx_core
|
||||
POSTGRES_USER: llmx
|
||||
POSTGRES_PASSWORD: L4s6f9y3,
|
||||
MODE: standalone # 显式指定为单体模式
|
||||
volumes:
|
||||
- llmx-core-db-volume:/var/lib/postgresql/data
|
||||
- llmx-nacos-volume:/nacos/data
|
||||
llmx-core-service:
|
||||
image: ${Docker_REGISTRY_URL}/llmx-core-service
|
||||
container_name: llmx-core-service
|
||||
ports:
|
||||
- "9002:9002"
|
||||
networks:
|
||||
- llmx-net
|
||||
- llmx-net-test
|
||||
environment:
|
||||
SPRING_PROFILES_ACTIVE: ${SPRING_PROFILES_ACTIVE}
|
||||
volumes:
|
||||
- llmx-core-service-volume:/app/volume
|
||||
restart: always
|
||||
@ -29,14 +31,32 @@ services:
|
||||
ports:
|
||||
- "9003:9003"
|
||||
networks:
|
||||
- llmx-net
|
||||
- llmx-net-test
|
||||
environment:
|
||||
SPRING_PROFILES_ACTIVE: ${SPRING_PROFILES_ACTIVE}
|
||||
volumes:
|
||||
- llmx-impl-baiLian-volume:/app/volume
|
||||
restart: always
|
||||
llmx-core-database:
|
||||
image: postgres:16-alpine # 长期支持版本推荐用 16
|
||||
container_name: llmx-core-database
|
||||
restart: always
|
||||
ports:
|
||||
- "5432:9052"
|
||||
networks:
|
||||
- llmx-net-test
|
||||
environment:
|
||||
POSTGRES_DB: llmx_core
|
||||
POSTGRES_USER: llmx
|
||||
POSTGRES_PASSWORD: L4s6f9y3,
|
||||
volumes:
|
||||
- llmx-core-db-volume:/var/lib/postgresql/data
|
||||
|
||||
networks:
|
||||
llmx-net-dev:
|
||||
llmx-net-test:
|
||||
driver: bridge
|
||||
volumes:
|
||||
llmx-core-service-volume:
|
||||
llmx-impl-baiLian-volume:
|
||||
llmx-core-db-volume:
|
||||
llmx-nacos-volume:
|
||||
2
gradle/wrapper/gradle-wrapper.properties
vendored
2
gradle/wrapper/gradle-wrapper.properties
vendored
@ -1,6 +1,6 @@
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.12-bin.zip
|
||||
distributionUrl=https://mirrors.cloud.tencent.com/gradle/gradle-8.12-bin.zip
|
||||
networkTimeout=10000
|
||||
validateDistributionUrl=true
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
|
||||
@ -0,0 +1,13 @@
|
||||
server:
|
||||
port: 9002
|
||||
spring:
|
||||
config:
|
||||
import: classpath:bootstrap-test.yml
|
||||
llmx:
|
||||
model-route:
|
||||
modelServiceMap:
|
||||
qwen-turbo: llmx-impl-baiLian
|
||||
qwen-max: llmx-impl-baiLian
|
||||
qwen-plus: llmx-impl-baiLian
|
||||
|
||||
|
||||
@ -0,0 +1,10 @@
|
||||
spring:
|
||||
cloud:
|
||||
nacos:
|
||||
username: nacos
|
||||
password: L4s6f9y3
|
||||
server-addr: 49.235.96.75:9001
|
||||
discovery:
|
||||
server-addr: ${spring.cloud.nacos.server-addr}
|
||||
username: ${spring.cloud.nacos.username}
|
||||
password: ${spring.cloud.nacos.password}
|
||||
@ -47,7 +47,7 @@ class BaiLianModelServiceImpl(
|
||||
// 构造输入参数,主要包括用户的prompt
|
||||
val inputMap = mutableMapOf("prompt" to request.prompt)
|
||||
// 获取会话ID,如果存在,则添加到输入参数中
|
||||
val sessionId = (request.options["session_id"] ?: "").toString()
|
||||
val sessionId = (request.options["session_id"] ?: "")
|
||||
if (StringUtils.hasText(sessionId)) {
|
||||
inputMap["session_id"] = sessionId
|
||||
}
|
||||
@ -0,0 +1,20 @@
|
||||
server:
|
||||
port: 8082
|
||||
spring:
|
||||
config:
|
||||
import: classpath:bootstrap-test.yml
|
||||
application:
|
||||
name: llmx-impl-bailian
|
||||
# 阿里云配置
|
||||
aliyun:
|
||||
# DashScope服务配置
|
||||
dash:
|
||||
# 访问凭证配置
|
||||
scope:
|
||||
access-key-id: LTAI5tHiA2Ry3XTAfoSEJW6z # 阿里云访问密钥ID
|
||||
access-key-secret: K5sf4FxZZuUgLEFnyfepBfMqFGmDcD # 阿里云访问密钥密钥
|
||||
endpoint: bailian.cn-beijing.aliyuncs.com # 阿里云服务端点
|
||||
workspace-id: llm-axfkuqft05uzbjpi # 工作区ID
|
||||
api-key: sk-78af4dd964a94f4cb373851064dbdc12 # API密钥
|
||||
app-id: 3fae0bbab2e54a90a37aa02cd12dd62c # 应用ID
|
||||
base-url: https://dashscope.aliyuncs.com/api/v1/apps/ # 基础API URL
|
||||
@ -0,0 +1,10 @@
|
||||
spring:
|
||||
cloud:
|
||||
nacos:
|
||||
username: nacos
|
||||
password: L4s6f9y3
|
||||
server-addr: 49.235.96.75:9001
|
||||
discovery:
|
||||
server-addr: ${spring.cloud.nacos.server-addr}
|
||||
username: ${spring.cloud.nacos.username}
|
||||
password: ${spring.cloud.nacos.password}
|
||||
Loading…
x
Reference in New Issue
Block a user