Запустите docker контейнер с GOCD CI / CD - PullRequest
1 голос
/ 03 марта 2020

Я собрал CI / CD с gitlab и docker. В моем gitlab-ci.yml я просто пишу команды для сборки и запуска контейнера для запуска теста и все.

Теперь я ищу способ сделать то же самое с сервером GOCD ci / cd. Но официальная документация от gocd напрямую поступает в kubernetees или Docker в Docker или Docker за пределами Docker. Мне это не нужно

У меня есть один GOCD-сервер и два GOCD-агента.

Я хочу собрать и запустить ОДИН контейнер и, возможно, развернуть его. Я не могу найти простой учебник по созданию конвейера с тремя этапами в GOCD:

  1. построить образ;
  2. запустить контейнер и протестировать его;
  3. развертывание.

1 Ответ

1 голос
/ 01 апреля 2020

Наконец, я смог заставить его работать самостоятельно, вот следующие шаги:

Предварительные условия:

  • docker -ce и docker - compose должен быть установлен на каждом агенте
  • go пользователь должен быть в группе docker
  • / var / run / docker .sock должен быть в режиме 666
  • у каждого агента должен быть доступ к вашему концентратору gitlab / github / repository, и хост первого отпечатка должен быть добавлен до первого соединения go пользователь (или не забудьте установить права владельца для файла known_hosts):
      ssh-keyscan -H your.repository.com >> /var/go/.ssh/known_hosts
    

    Затем на пользовательском интерфейсе gocd:

    1. создать конвейер

    2. создать этап

    3. создать работу

    4. создать одну или несколько задач

      -> добавить новое задание -> выбрать «еще», и у вас будет возможность добавить пользовательскую команду

    , в этот момент вы можете добавить в ячейку » команды»

     /usr/bin/docker
    

    или (зависит от вашего варианта использования)

     /usr/local/bin/docker-compose
    

    и в списке аргументов один аргумент за строкой

     build
     .
     -f
     dockerfile
     -t
     yourrepository/tagOfYourImage
    

    После этого Не забудьте очистить до и после каждого запуска ваши контейнеры и созданные изображения. Вы также можете использовать «/ bin / bash» в ячейке «команды», а затем два аргумента

     -c
     "/usr/bin/docker rmi $(/usr/bin/docker image ls|/usr/bin/grep server_php|/usr/bin/awk '{ print $3 }'|/usr/bin/tr '\r' ' ') --force||true"
    

    Советы:

    Если вы хотите, чтобы все ваши задания на каждом агенте были успешными, Не забудьте выбрать опцию «Запускать на всех агентах» на вкладке «Настройки работы».

...