步骤
手册分类
- 1. 禅道DevOps解决方案介绍
- 1.1 关于禅道DevOps解决方案
- 2. 安装与升级
- 2.1 快速安装
- 3. 服务
- 3.1 管理服务
- 4. 代码库
- 5. 流水线
- 6. 制品库
- 6.1 管理制品库
- 7. 部署
- 8. DevOps设置
- 9. 命令行工具
- 9.1 安装及升级
- 9.2 status子命令说明
后台- background 分享链接
作者:赵红梅
最后编辑:赵红梅 于 2024-10-29 14:44:04
浏览量:263
本篇目录
后台类型步骤
后台类型的步骤 用于在一个阶段中运行依赖服务。
说明
- 后台执行的步骤退出码会被忽略,也就是说,如果后台任务执行失败,也不会影响总体流水线的运行。
- 后台运行的容器,基本上返回码都是非零,这是因为流水线执行完成后,会强制清理相关的容器。
通讯
后台容器会设置一个可达的主机名,来标记容器名称。
下面的示例,有一个ping
步骤,与后台一个名称为cache
的Redis步骤通信:
kind: pipeline
spec:
stages:
- type: ci
spec:
steps:
- name: cache
type: background
spec:
container: redis
- name: ping
type: run
spec:
container: redis
script: |-
redis-cli -h cache ping
有个关键点需要注意,当前容器运行后,内部的服务需要一些时间来进行初始化操作,然后才能接受连接。
这对这种情况,通常有2种方式来解决:
- 添加 健康检查 (首选)
- 添加 sleep
健康检查
使用命令行工具,检查服务是否启动或运行。
下面的示例,流水线运行了MySQL服务作为后台步骤,然后再运行步骤中,通过 mysqladmin
命令来检查MySQL服务是否可用。一旦数据库就绪,再运行数据库运行命令:
kind: pipeline
spec:
stages:
- type: ci
spec:
steps:
- name: database
type: background
spec:
image: mysql:8.0
envs:
MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
MYSQL_DATABASE: gitfox_db
MYSQL_PASSWORD: gitfox
MYSQL_USER: gitfox
- name: healthcheck
type: script
spec:
image: mysql:8.0
run: |-
while ! mysqladmin ping -h database -u gitfox -pgitfox --silent; do sleep 1; done
mysql -h database -u gitfox -pgitfox -e "CREATE TABLE IF NOT EXISTS gitfox_db.pipelines (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) NOT NULL);"
等待
在后台服务初始化时,可以给它一个合适的等待时间,然后再尝试连接。
下面的示例,通过 sleep
命令来实现:
kind: pipeline
spec:
stages:
- type: ci
spec:
steps:
- name: cache
type: background
spec:
container: redis
- name: ping
type: run
spec:
container: redis
script: |-
sleep 5
redis-cli -h cache ping