Выполнить docker команды из gitlab-ci - PullRequest
0 голосов
/ 17 марта 2020

У меня есть этот файл gitlab-ci:

services:
  - docker:18.09.7-dind
variables:
  SONAR_TOKEN: "$PROJECT_SONAR_TOKEN"
  GIT_DEPTH: 0
  MAVEN_CLI_OPTS: "-s .m2/settings.xml --batch-mode"
  MAVEN_OPTS: "-Dmaven.repo.local=.m2/repository"

  DOCKER_HOST: "tcp://docker:2375"
  DOCKER_DRIVER: overlay2

sonarqube-check:
  image: maven:latest
  stage: test
  before_script:
    - "docker version"
    - "mkdir $PWD/.m2"
    - "cp -f /cache/settings.xml $PWD/.m2/settings.xml"
  script:
    - mvn $MAVEN_CLI_OPTS clean verify sonar:sonar -Dsonar.qualitygate.wait=true -Dsonar.login=$SONAR_TOKEN -Dsonar.projectKey="project-key"
  after_script:
    - "rm -rf $PWD/.m2"
  allow_failure: false
  only:
    - merge_requests

По какой-то причине docker в docker служба не находит двоичные файлы для docker (версия docker * Команда 1005 *, строка 16):

/bin/bash: line 111: docker: command not found

Мне интересно, есть ли способ сделать это внутри файла gitlab-ci, потому что мне нужно запустить docker для тестов, если есть является изображением, которое содержит двоичные файлы maven и docker или, если мне придется создать собственное изображение docker.

Это должно быть все в один этап, я не могу разделить его на два этапа (или, по крайней мере, я не знаю, как скомпилировать в maven на одном этапе и запустить тесты с изображением docker на другом этап)

Спасибо!

1 Ответ

0 голосов
/ 19 марта 2020

Как вы правильно указали. Вам нужны mvn и docker двоичные файлы в образе, который вы используете для этого задания GitLab-CI.

Самый быстрый выигрыш, вероятно, заключается в установке docker в вашем maven:latest образе сборки во время выполнения в разделе before_script.

before_script:
    - apt-get update && apt-get install -y docker.io
    - docker version

Если это слишком сильно замедляет вашу работу Возможно, вы захотите создать свой собственный docker образ, содержащий как Maven, так и Docker.

Также посмотрите статью о dind на Gitlab , если вы в итоге получите переезд на Docker 19.03+

...