2017-02-20 24 views
0

Я хочу автоматизировать процесс развертывания с помощью gitlab-ci. Я делаю это вручную через ssh в данный момент. Шаги:Использование gitlab-ci для создания проектов .NET Core в докере

Сложение:

  • DotNet восстановления
  • DotNet публиковать

Это оставляет меня с каталогом полный .dlls. Я хочу, чтобы развернуть их в Докер контейнер, так я бегу:

  • докер построить
  • докер остановить
  • докер гт
  • докер пробег

Однако, я с трудно найти правильный способ сделать оба в том же файле .gitlab.ci.yml.

Мне нужна дотнетная оснастка от microsoft/dotnet:latest и инструменты докеры cli от docker:latest.

Я пробовал иметь два этапа на основе каждого из этих изображений, но выход не используется. Чтобы решить эту проблему, я попытался использовать artifact, но это не удается загрузить.

Я не могу найти примеры этого онлайн, поэтому я задаюсь вопросом, не делаю ли я что-то, чего не следует делать.

ответ

1

Не совсем уверен, почему вы делаете docker run в своем строительном трубопроводе, а не почему artifact не работает. Мы делаем это точно на этапах с artifact и dependencies.

В любом случае вполне нормально настраивать изображения сборки, чтобы они соответствовали вашим потребностям. Для вашего изображения сборки вам кажется, что вам нужно docker рядом с dotnet. Создайте Dockerfile, который вы будете использовать в качестве изображения сборки, и пусть он наследует от microsoft/dotnet. Затем установите docker на этом изображении. Не забудьте установить в /var/run/docker.sock, чтобы контейнер мог использовать демон докеров.

Ваш новый Dockerfile будет выглядеть следующим образом:

FROM microsoft/dotnet 

RUN echo deb http://apt.dockerproject.org/repo debian-jessie main > /etc/apt/sources.list.d/docker.list && \ 
apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D && \ 
apt-get update && \ 
apt-get install -y docker-engine 

Чтобы запустить изображение на вашем компьютере вы используете

docker run -it --rm -v /var/run/docker.sock:/var/run/docker.sock yournewimage 

конфигурируются GitLab для монтирования /var/run/docker.sock в конфигурационном файле бегуна, то вы можете используйте новое изображение в своем gitlab-ci.yml.

+0

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

+0

Спасибо за файл Dockerfile. Эта часть работала как шарм. Мне пришлось изменить конфигурацию, как описано здесь: https: // gitlab.com/gitlab-org/gitlab-ci-multi-runner/issues/1905 Я поднял вопрос с артефактами. Я ошибочно думал, что каждый шаг может продолжаться, когда последний остановился, пока это был один и тот же образ. –

+0

Просто вернемся к этому. Я более подробно решил проблему, поскольку нашел решение. Однако я подозреваю, что gitlab за nginx - проблема с артефактами, и что увеличение предела запроса nginx может решить эту проблему. –