Files
mqtt_power/.onedev-buildspec.yml
2025-05-23 15:51:16 +08:00

76 lines
4.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.

version: 8
jobs:
- name: Build and Deploy mqtt_power on myagent
agentMatcher: name_is("myagent") # 确保 "myagent" 是您 OneDev 中 agent 的确切名称
# 如果 myagent 是通过标签选择的,请使用类似 agentMatcher: has_tag("your-agent-tag") 的形式
jobSecrets: # <-- 添加此部分以声明 Job 需要的 Secrets
- name: DB_ROOT_PASSWORD
- name: DB_NAME
- name: DB_USER
- name: DB_PASSWORD
- name: MQTT_USER
- name: MQTT_PASSWORD
steps:
- checkout # OneDev 会自动检出与触发事件相关的代码
- group: "Prepare Environment and Build"
steps:
- shell: "sh" # 或者 powershell -Command取决于您的 agent 环境
# 如果 agent 是 Windows并且您希望使用 PowerShell请将 shell 改为 "powershell"
# 并在下面的 commands 中使用 PowerShell 语法
commands: |
echo "Running on agent: $ONEDEV_AGENT_NAME"
echo "Workspace: $ONEDEV_WORKSPACE"
echo "Generating .env file for Docker Compose..."
# 使用 @secret:SECRET_NAME@ 语法从 OneDev Job Secrets 获取值
# 确保在 OneDev 项目的 Job Secrets 中定义了这些 secret并且名称与此处一致
echo "MYSQL_ROOT_PASSWORD=@secret:DB_ROOT_PASSWORD@" > .env
echo "MYSQL_DATABASE=@secret:DB_NAME@" >> .env
echo "MYSQL_USER=@secret:DB_USER@" >> .env
echo "MYSQL_PASSWORD=@secret:DB_PASSWORD@" >> .env
echo "SPRING_DATASOURCE_URL=jdbc:mysql://mysql-db:3306/@secret:DB_NAME@?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&useSSL=false" >> .env
echo "SPRING_DATASOURCE_USERNAME=@secret:DB_USER@" >> .env
echo "SPRING_DATASOURCE_PASSWORD=@secret:DB_PASSWORD@" >> .env
echo "SPRING_MQTT_BROKER_HOST=emqx-broker" >> .env # docker-compose 服务名
echo "SPRING_MQTT_BROKER_PORT=1883" >> .env
echo "SPRING_MQTT_USERNAME=@secret:MQTT_USER@" >> .env
echo "SPRING_MQTT_PASSWORD=@secret:MQTT_PASSWORD@" >> .env
# 使用 $ONEDEV_BUILD_NUMBER 保证客户端 ID 唯一性
echo "SPRING_MQTT_CLIENT_ID_BACKEND=springboot-mqtt-client-backend-$ONEDEV_BUILD_NUMBER" >> .env
echo "SPRING_MQTT_LOG_CLIENT_ID=springboot-mqtt-log-client-$ONEDEV_BUILD_NUMBER" >> .env
echo ".env file generated."
# cat .env # 可选: 在构建日志中打印 .env 内容以供调试
echo "Ensuring docker-compose.yml is present..."
if [ ! -f docker-compose.yml ]; then
echo "ERROR: docker-compose.yml not found in workspace root ($ONEDEV_WORKSPACE/docker-compose.yml)!"
exit 1
fi
echo "Stopping existing services (if any)..."
docker-compose -f docker-compose.yml down --remove-orphans || echo "No services were running or an error occurred during down, continuing..."
echo "Building Docker images locally for springboot-app and nextjs-app..."
# 确保 docker-compose.yml 中的 build context 指向正确
# 例如: springboot-init-main 和 charging_web_app
# 并且服务名称 'springboot-app' 和 'nextjs-app' 与 docker-compose.yml 中的定义一致
docker-compose -f docker-compose.yml build --no-cache springboot-app nextjs-app
echo "Starting all services via Docker Compose..."
docker-compose -f docker-compose.yml up -d
echo "Deployment process finished."
docker-compose -f docker-compose.yml ps # 显示正在运行的服务状态
triggers:
- type: "BRANCH_UPDATE" # 当分支有代码推送时触发
params:
branches: "main,master" # 监听的分支,请根据您的实际主分支名称修改
# paths: # 可选:仅当特定路径下的文件发生变化时才触发
# includes:
# - "springboot-init-main/**"
# - "charging_web_app/**"
# - "docker-compose.yml"
# - ".onedev-buildspec.yml"