Teamcity Build не будет работать, пока агенты сборки не настроены с Docker? - PullRequest
0 голосов
/ 11 апреля 2019

Я создал новую сборку для своего конвейера Teamcity.Впервые я использую Docker buildstep.После того, как я все установил, я понял, что агент сборки, похоже, не готов к этому.

enter image description here

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

Может кто-нибудь сказать мне, что я должен сделать, чтобы заставить его работать?

РЕДАКТИРОВАТЬ

@ Старший Помидор помог мне приблизиться на один шаг.Я добавил его первый пример в команду запуска docker

docker run -it -e SERVER_URL="<url to TeamCity server>"  \
    --privileged -e DOCKER_IN_DOCKER=start \    
    jetbrains/teamcity-agent 

После этого я избавился от упомянутых сообщений на скриншоте.Конфигурация моих агентов теперь имеет следующее значение:

docker.server.osType     linux
docker.server.version    18.06.1
docker.version   18.06.1

Но все-таки Teamcity жалуется на это сообщение:

enter image description here

Что еще раз делает меня невежественным.

Окончательное решение : Предстоящая проблема EDIT2 может быть решена путем простого перезапуска экземпляра сервера teamcity.Агент действительно смог запустить сборку, но teamcity не смог этого понять без перезагрузки.

EDIT2

Запрос информации:

MyОС сервера CI:

PRETTY_NAME="Debian GNU/Linux 9 (stretch)"
NAME="Debian GNU/Linux"
VERSION_ID="9"
VERSION="9 (stretch)"

Рабочий контейнер:

CONTAINER ID        IMAGE                       COMMAND              CREATED             STATUS              PORTS                  NAMES
0f8e0b04d6a6        jetbrains/teamcity-agent    "/run-services.sh"   19 hours ago        Up 19 hours         9090/tcp               teamcity-agent
20964c22b2d9        jetbrains/teamcity-server   "/run-services.sh"   37 hours ago        Up 37 hours         0.0.0.0:80->8111/tcp   teamcity-server-instance

Контейнер, запущенный:

## Server
docker run -dit --name teamcity-server-instance  -v /data/teamcity:/data/teamcity_server/datadir -v /var/log/teamcity:/opt/teamcity/logs  -p 80:8111 jetbrains/teamcity-server

## Agent
docker run -itd --name teamcity-agent -e SERVER_URL="XXX.XXX.XXX.XXX:80"  --privileged -e DOCKER_IN_DOCKER=start -v /etc/teamcity/agent/conf:/data/teamcity_agent/conf jetbrains/teamcity-agent

Информация о шаге сборки:

enter image description here enter image description here enter image description here

1 Ответ

1 голос
/ 11 апреля 2019

TC ограничил конфигурацию, поскольку TA не запускает демон Docker.

Вы должны передать -e DOCKER_IN_DOCKER=start для автоматического запуска демона docker в контейнере. Кроме того, демону докера требуется сокет докера. В контейнере Linux, если вам нужен демон Docker, доступный внутри ваших сборок, у вас есть два варианта:

  • --privileged флаг. Новый демон Docker работает в вашем контейнере
  • -v docker_volumes:/var/lib/docker Docker с хоста (в этом случае вы извлечете выгоду из кэшей, разделяемых между хостом и всеми вашими контейнерами, но есть проблема безопасности: ваша сборка может фактически повредить ваш Docker хоста, поэтому используйте ее по своему усмотрению риск)

В контейнере Linux, если вам нужен демон Docker, доступный внутри ваших сборок, у вас есть два варианта:

1) Docker от хоста (в этом случае вы извлечете выгоду из кэшей, разделяемых между хостом и всеми вашими контейнерами, но есть проблема безопасности: ваша сборка может фактически навредить вашему Docker хоста, поэтому используйте ее на свой страх и риск )

примеры

docker run -it -e SERVER_URL="<url to TeamCity server>"  \
    --privileged -e DOCKER_IN_DOCKER=start \    
    jetbrains/teamcity-agent 

docker run -it -e SERVER_URL="<url to TeamCity server>"  \
    -v /var/run/docker.sock:/var/run/docker.sock  \
    jetbrains/teamcity-agent 

UDP

docker.server.osType требуется, потому что на этапе сборки было установлено linux

...