chemtech
@chemtech
Линуксойд, DevOps

Как отладить before_script в gitlab-ci?

Добрый день!
Есть конфигурация gitlab-ci, которая использует docker registry, который предоставлен самим gitlab
build:
      stage: build
      image: "$build_img"
      artifacts:
        paths:
        - assembly/target
      script:
        - 'mvn clean package'

    .test_template: &test_template
      before_script:
        - docker login -u "$CI_REGISTRY_USER" -p $CI_JOB_TOKEN $CI_REGISTRY
        - docker build --pull -t "$CI_REGISTRY_IMAGE/$CI_PROJECT_NAME/$CI_JOB_NAME:$CI_COMMIT_REF_SLUG" .
        - docker run --name "$CI_PROJECT_NAME"-db-"$CI_PIPELINE_ID"-"$CI_JOB_NAME" -d "$pgsql_img"
        - docker run --name "$CI_PROJECT_NAME"-"$CI_PIPELINE_ID"-"$CI_JOB_NAME" --link "$CI_PROJECT_NAME"-db-"$CI_PIPELINE_ID"-"$CI_JOB_NAME":db -d "$CI_REGISTRY_IMAGE/$CI_PROJECT_NAME/$CI_JOB_NAME:$CI_COMMIT_REF_SLUG" java -jar main.jar

    it_unit_test:
      stage: test
      image: "$build_img"
      dependencies:
        - build
      services:
        - name: "$pgsql_img"
          alias: db
      script:
        - mvn test -P intTests

Конфигурация работает.

Я переписываю конфигурацию для использования nexus docker registry
build:
      stage: build
      image: "$build_img"
      artifacts:
        paths:
        - assembly/target
      script:
        - 'mvn clean package -Dmaven.test.skip=true'

    .test_template: &test_template
      before_script:
        - docker login -u login1111 -p password11111 docker-registry.11111.local:5000
        - docker build --pull -t "$CI_PROJECT_NAME:$CI_COMMIT_TAG" .
        - docker run --name "$CI_PROJECT_NAME"-db-"$CI_PIPELINE_ID"-"$CI_JOB_NAME" -d "$pgsql_img"
        - docker run --name "$CI_PROJECT_NAME"-"$CI_PIPELINE_ID"-"$CI_JOB_NAME" --link "$CI_PROJECT_NAME"-db-"$CI_PIPELINE_ID"-"$CI_JOB_NAME":db -d "$CI_REGISTRY_IMAGE/$CI_PROJECT_NAME/$CI_JOB_NAME:$CI_COMMIT_REF_SLUG" java -jar main.jar

    test_containers:
      stage: test
      <<: *test_template
      script:
        - TEST=`docker exec --tty "$CI_PROJECT_NAME"-"$CI_PIPELINE_ID"-"$CI_JOB_NAME" wget -qO /dev/stdout http://localhost:8088/monitoring/selftest`
        - echo $TEST
        - if [[ -z `echo $TEST | grep OK` ]]; then echo "Error - $TEST" && exit 254; else echo OK; exit 0; fi

    it_unit_test:
      stage: test
      image: "$build_img"
      dependencies:
        - build
      services:
        - name: "$pgsql_img"
          alias: db
      script:
        - mvn test -P intTests


Появляется ошибка
SEVERE: Connection error: 
    org.postgresql.util.PSQLException: The connection attempt failed.


После добавления echo и id в gitlab-ci.yml
echo pgsql_img $pgsql_img
pgsql_img docker-registry.XXXXXXXXXX:10443/postgres:9.6
$ id
uid=502(gitlab-runner) gid=501(gitlab-runner) groups=501(gitlab-runner),502(docker)
$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
$ ping db
ping: db: Name or service not known
ERROR: Job failed: exit status 1


Я думаю, проблема в before_script
Как отладить before_script?
Я не вижу вывода before_script
  • Вопрос задан
  • 871 просмотр
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы