Как запустить Keycloak в качестве службы Gitlab CI - PullRequest
0 голосов
/ 15 апреля 2020

Описание

Я создаю приложение, которое использует Keycloak для управления пользователями. Я хочу настроить тестовое задание в Gitlab CI для запуска моих регрессионных тестов при каждом коммите. Для выполнения моих тестовых сценариев требуются две службы: postgres и keycloak. Я могу успешно подключиться к базе данных postrgres, и все тесты, которые не требуют keycloak, успешно выполняются; но те, которые требуют keycloak, терпят неудачу.

Настройка

Вот часть тестового задания моего .gitlab-ci файла:

test:
  image: node:12-alpine
  stage: test
  services:
    - name: postgres
    - name: postgres
      alias: keycloak-postgres
    - name: jboss/keycloak:9.0.2
      alias: keycloak
  variables:
    NODE_ENV: test-ci
    POSTGRES_DB: admin-db
    POSTGRES_USER: db-admin
    POSTGRES_PASSWORD: db-admin-password
    KEYCLOAK_USER: kc-admin
    KEYCLOAK_PASSWORD: kc-admin-password
    DB_VENDOR: POSTGRES
    DB_ADDR: keycloak-postgres
    DB_DATABASE: admin-db
    DB_USER: db-admin
    DB_SCHEMA: public
    DB_PASSWORD: db-admin-password
  except:
    refs:
      - tags
    variables:
      - $CI_COMMIT_MESSAGE =~ /\[ci-release\]/
  script:
    - yarn test

Я знаю, что может также проблема с тем, как я использую два postgres экземпляра здесь. У меня были проблемы с получением одного postgres экземпляра для запуска с двумя базами данных, поэтому я просто добавил новую службу (две службы postgres используют одни и те же переменные среды).

Сообщение об ошибке

Ошибка при сбое задания CI:

enter image description here

Эта ошибка заставляет меня думать, что служба keycloak запускается, но по умолчанию Пользователь admin неправильно инициализируется. Это может быть потому, что запуск службы с простым dokcer run не сделает этого пользователя по умолчанию. Есть некоторые аргументы, которые необходимо передать. Однако при запуске этой службы через docker-compose не нужно передавать никаких аргументов, достаточно лишь установки переменных KEYCLOAK_USER и KEYCLOAK_PASSWORD для инициализации пользователя. Я не уверен, насколько это отличается в Gitlab CI.

Ранее, прежде чем я добавил вторую службу базы данных, я только что получил Error: connect ECONNREFUSED 127.0.0.1:8080 (мой код API указывает на https://keycloak:8080, так как хост службы gitlab ci я полагаю, это должно быть имя службы; я не уверен, что это правильный способ доступа к экземпляру keycloak). И это опять-таки заставляет меня думать, что теперь, с двумя экземплярами базы данных, сервис действительно запускается правильно.

Буду признателен за любую информацию или помощь, которую вы можете предоставить, и я обязательно отвечу своевременно на любые вопросы или комментарии. Спасибо!

...