步骤

后台- background 分享链接

作者:赵红梅 最后编辑:赵红梅 于 2024-10-29 14:44:04 浏览量:227

后台类型步骤

后台类型的步骤 用于在一个阶段中运行依赖服务。

说明

  • 后台执行的步骤退出码会被忽略,也就是说,如果后台任务执行失败,也不会影响总体流水线的运行。
  • 后台运行的容器,基本上返回码都是非零,这是因为流水线执行完成后,会强制清理相关的容器。

通讯

后台容器会设置一个可达的主机名,来标记容器名称。

下面的示例,有一个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种方式来解决:

  1. 添加 健康检查 (首选)
  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 
返回顶部
刘淋淋
高级客户经理
18823460126
1624360250
统一服务热线 4006-8899-23
我要提问提问有任何问题,您都可以在这里提问。 问题反馈反馈点击这里,让我们聆听您的建议与反馈。