68 lines
4.0 KiB
YAML
68 lines
4.0 KiB
YAML
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") 的形式
|
||
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..."
|
||
# 使用 get_job_secret 函数从 OneDev Job Secrets 获取值
|
||
# 确保在 OneDev 项目的 Job Secrets 中定义了这些 secret
|
||
echo "MYSQL_ROOT_PASSWORD=${get_job_secret('DB_ROOT_PASSWORD')}" > .env
|
||
echo "MYSQL_DATABASE=${get_job_secret('DB_NAME')}" >> .env
|
||
echo "MYSQL_USER=${get_job_secret('DB_USER')}" >> .env
|
||
echo "MYSQL_PASSWORD=${get_job_secret('DB_PASSWORD')}" >> .env
|
||
|
||
echo "SPRING_DATASOURCE_URL=jdbc:mysql://mysql-db:3306/${get_job_secret('DB_NAME')}?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&useSSL=false" >> .env
|
||
echo "SPRING_DATASOURCE_USERNAME=${get_job_secret('DB_USER')}" >> .env
|
||
echo "SPRING_DATASOURCE_PASSWORD=${get_job_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=${get_job_secret('MQTT_USER')}" >> .env
|
||
echo "SPRING_MQTT_PASSWORD=${get_job_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
|
||
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" |