Как проверить работоспособность сервиса в Github?

Пытаюсь настроить проверку работоспособности в рабочих процессах Github.

Контейнер jboss/keycloak:12.0.4.

Рабочий процесс таков:

jobs:
  test:
    name: Test
    runs-on: ubuntu-latest

    services:
      keycloak:
        image: jboss/keycloak:12.0.4
        options: --name keycloak

    steps:
      ...

Контейнеру нужно около 30-40 секунд, чтобы стать здоровым. Я пробовал два подхода без успеха.

  1. Варианты услуг:
options: --health-cmd curl "http://localhost:8080/auth/realms/master" --health-interval 30s

Это работало локально, но в рабочем процессе кажется, что Github дает сбой до того, как докер завершил проверку работоспособности. Независимо от того, какие значения я установил для health-interval, Github пытается 4 раза (не в том интервале, который я пропустил), а затем терпит неудачу.

  1. Взломайте шаг проверки работоспособности:
steps:
  - name: Healthcheck
    continue-on-error: true
    run: |
      echo "HEALTHCHECK, BECAUSE"
      docker exec keycloak curl -s --fail "http://localhost:8080/auth/realms/master" 1>/dev/null
      while [ "$?" != "0" ]; do
        docker exec keycloak curl -s --fail "http://localhost:8080/auth/realms/master" 1>/dev/null
        sleep 10s
      done

Это выглядит плохо и тоже не работает. Шаг установлен как continue-on-error, но это не означает, что сам шаг идет дальше первого оператора docker exec.

Итак, есть идеи, как это решить?


person Moritz Schmitz v. Hülst    schedule 23.03.2021    source источник


Ответы (1)


То же самое здесь: я пытаюсь следовать аналогичному подходу, настраивая параметры для запуска контейнера докеров, например:

        options: >-
          --health-cmd "curl -f http://localhost:8080/auth/realms/master"
          --health-interval 30s
          --health-timeout 10s
          --health-retries 5
          --health-start-period 30s

Но безуспешно, по-видимому, Github не следует этой настройке, потому что я вижу в журнале, что, по-видимому, только 1 раз пытались инициализировать контейнер:

Waiting for all services to be ready
  /usr/bin/docker inspect --format="{{if .Config.Healthcheck}}{{print .State.Health.Status}}{{end}}" 3cb1....
  healthy
  postgres service is healthy.
  /usr/bin/docker inspect --format="{{if .Config.Healthcheck}}{{print .State.Health.Status}}{{end}}" d77a4....
  starting
  keycloak service is starting, waiting 2 seconds before checking again.
  /usr/bin/docker inspect --format="{{if .Config.Healthcheck}}{{print .State.Health.Status}}{{end}}" d77a4....
  unhealthy
  Error: Failed to initialize, keycloak service is unhealthy.
person Nacho Cougil    schedule 11.04.2021