Gitlab Job 服务:如何让一项服务接连运行

问题描述 投票:0回答:1

我有一个像这样的测试作业 yml 文件:

test-integration:
  extends:
    - .some_tnner
  image: $SOME_IMAGE
  variables:
    FF_NETWORK_PER_BUILD: 'true' 
  services:
    - name: $FIRST_SERVICE
      alias: first-service
    - name: $SECOND_SERVICE
      alias: second-service
  script:
    - 'some_script'

现在我有一个问题,第二个服务依赖于第一个服务。但现在第二个服务在第一个服务的中间开始了

如何让第一个服务先完成,然后再启动第二个服务。

尝试使用


- name: $SECOND_SERVICE
      alias: second-service
      depends_on: first-service

但是 gitlab 抛出错误说

unknown key: depends_on

gitlab-ci gitlab-ci-runner cicd
1个回答
0
投票

我在

GitLab-CI 语法
中没有看到 depends_on,仅在 docker-compose 中看到。

理想情况下,尝试在第一个服务的启动脚本中实现健康检查机制。这样,脚本可以定期尝试连接到第一个服务或检查指示第一个服务准备就绪的特定文件/端点:只有在运行状况检查(来自第一个服务)成功后,第二个服务才会继续执行其主要任务。

test-integration:
  extends:
    - .some_tnner
  image: $SOME_IMAGE
  variables:
    FF_NETWORK_PER_BUILD: 'true' 
  services:
    - name: $FIRST_SERVICE
      alias: first-service
    - name: $SECOND_SERVICE
      alias: second-service
  script:
    - 'some_script'  # first service
    - './second_service_startup.sh'

second_service_startup.sh

#!/bin/bash

while ! curl -s http://first-service:1234/healthcheck | grep "OK"; do
  echo "Waiting for first-service to be ready..."
  sleep 5
done

echo "first-service is ready! Starting second service tasks..."

# ...

这是一个简化版本:您应该在运行状况检查或等待循环中实现超时,以防止第一个服务无法正确启动时无限期挂起。

© www.soinside.com 2019 - 2024. All rights reserved.