Создание образа Docker для приложения Node.js в GitLab CI - PullRequest
0 голосов
/ 20 января 2019

Я работаю над приложением Node.js, для которого мой текущий Dockerfile выглядит так:

# Stage 0
# =======
FROM node:10-alpine as build-stage

WORKDIR /app

COPY package.json yarn.lock ./
RUN yarn install

COPY . ./
RUN yarn build

# Stage 1
# =======
FROM nginx:mainline-alpine

COPY --from=build-stage /app/build /usr/share/nginx/html

Я хотел бы интегрировать это в конвейер GitLab CI, но я не уверен, что понял основную идею. На данный момент я знаю, что мне нужно создать файл .gitlab-ci.yml, который позже будет загружен GitLab.

Моя основная идея:

  1. Я отправляю свои изменения кода в GitLab.
  2. GitLab создает новый образ Docker на основе моего Dockerfile.
  3. GitLab отправляет этот новый созданный образ на «производственный» сервер (позже).

Итак, мой вопрос:
Мой .gitlab-ci.yml должен содержать что-то вроде build задания, которое вызывает ... что? Команда docker build? Или мне нужно "скопировать" содержимое Dockerfile в файл CI?

Ответы [ 2 ]

0 голосов
/ 21 января 2019

GitLab CI выполняет конвейер в Runners , которые необходимо зарегистрировать в проекте с использованием сгенерированных токенов (Settings / CI CD / Runners). Вы также можете использовать Shared Runners для нескольких проектов. Конвейер конфигурируется с помощью файла .gitlab-ci.yml, и вы можете создавать, тестировать, передавать и развертывать образы докера , используя файл yaml, когда что-то делается в репозитории (передача в филиал, запрос на слияние и т. Д.) .

Это также полезно, когда в вашем приложении уже есть Dockerfile, который может использоваться для создания и тестирования изображения

Таким образом, в основном вам нужно установить бегунок, зарегистрировать его с токеном вашего проекта (или использовать Shared Runners) и настроить файл yaml CI. Рекомендуемый подход: докер в докере , но решать вам. Вы также можете проверить этот базовый пример . Наконец, вы можете развернуть свой контейнер непосредственно в Kubernetes, Heroku или Rancher. Не забудьте безопасно настроить свои учетные данные и секреты в Настройках / Переменных.

Заключение

GitLab CI великолепен, но я рекомендую вам сначала подумать о том, какой рабочий процесс git использовать для установки этапов в файле .gitlab-ci.yml. Это позволит вам сконфигурировать ваш проект узла как конвейер, и тогда будет легко экспортировать его в другие инструменты, такие как, например, конвейеры Jenkins или Travis.

0 голосов
/ 20 января 2019

триггер задания сборки:

опция 1: добавьте when: manual в задание, и вы можете запустить задание вручную в CI / CD> Конвейеры

вариант 2:

only:
    - <branchname>

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

вариант 3: не добавляйте ничего, и задание будет запускаться каждый раз, когда вы нажимаете код

Конечно, вы можете комбинировать перечисленные выше параметры.

Кроме того, можно запускать задание с веб-запросом, используя маркер задания..

docker build команда будет работать в конвейере.Я думаю, в разделе сценария.Механизм докера требований на gitlab-runner, который выбирает задание.

Или мне нужно «скопировать» содержимое файла Dockerfile в файл CI?

нет

...