Что такое непрерывная интеграция?
Непрерывная интеграция (CI) означает частую интеграцию кода в магистраль (несколько раз в день).
GitLab CI
Что такое GitLab CI?
GitLab CI
даGitLab Continuous Integration
(Непрерывная интеграция Gitlab) для краткости. отGitLab
Начиная с версии 8.0,GitLab
полностью интегрированныйGitlab-CI
и включен по умолчанию для всех проектов. Просто добавьте в корневой каталог репозитория проекта.gitlab-ci.yml
файл и настроитьRunner
(раннер), затем каждый запрос на слияние (MR) илиpush
вызоветCI pipeline
.
Если все работает нормально, вы получите тег, связанный с фиксацией. Как показано на рисунке:
Что такое трубопровод?
однаждыPipeline
Фактически это эквивалент задачи сборки, которая может содержать несколько процессов, таких как установка зависимостей, выполнение тестов, компиляция, развертывание тестовых серверов и развертывание рабочих серверов.
Любой коммит или мерж-реквест может быть запущенPipeline
,Как показано ниже:
+------------------+ +----------------+
| | trigger | |
| Commit / MR +---------->+ Pipeline |
| | | |
+------------------+ +----------------+
Что такое Этапы?
Stages
Указывает этап строительства, который является процессом, упомянутым выше.
мы можем один разPipeline
определить несколькоStages
,ЭтиStages
Он будет иметь следующие особенности:
- все
Stages
будет выполняться последовательно, т. е. когдаStage
По завершению следующийStage
Начнется - Только
Stages
По завершении задача сборки (Pipeline
) будет успешным - если есть
Stage
не получается, то последнийStages
не будет выполняться, задача сборки (Pipeline
) потерпеть неудачу
следовательно,Stages
а такжеPipeline
Отношения:
+--------------------------------------------------------+
| |
| Pipeline |
| |
| +-----------+ +------------+ +------------+ |
| | Stage 1 |---->| Stage 2 |----->| Stage 3 | |
| +-----------+ +------------+ +------------+ |
| |
+--------------------------------------------------------+
Что такое рабочие места?
Jobs
Представляет строительные работы и представляет работу, выполненную на этапе.
мы можемStages
определить несколькоJobs
,ЭтиJobs
Он будет иметь следующие особенности:
- такой же
Stage
серединаJobs
будет выполняться параллельно - такой же
Stage
серединаJobs
Этап будет успешным только тогда, когда оба будут выполнены успешно - если есть
Job
терпит неудачу, тоStage
терпит неудачу, то есть задача сборки (Pipeline
) потерпеть неудачу
так,Jobs
а такжеStage
Схема отношений такова:
+------------------------------------------+
| |
| Stage 1 |
| |
| +---------+ +---------+ +---------+ |
| | Job 1 | | Job 2 | | Job 3 | |
| +---------+ +---------+ +---------+ |
| |
+------------------------------------------+
Конфигурация установки
Среда установки
Ubuntu 16.04.4 LTS (GNU/Linux 4.4.0-105-generic x86_64)
,docker
ВерсияDocker version 18.03.1-ce, build 9ee9f40
- Установить
gitlab-ci-multi-runner
# For Debian/Ubuntu
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-ci-multi-runner/script.deb.sh | sudo bash
# For RHEL/CentOS
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-ci-multi-runner/script.rpm.sh | sudo bash
- Проверить
docker images
sudo docker images
Как использовать GitLab CI?
- Создан в корневом каталоге проекта
.gitlab-ci.yml
файл, код файла выглядит следующим образом:
stages
определениеStages
, по умолчанию их триStages
, соответственноbuild
,test
,deploy
.Job.only
определить толькоdevelop
Ветки, связанные с триггеромJobs
.
stages:
- build
job1:
# 是否开启 debug 模式
# variables:
# CI_DEBUG_TRACE: "true"
stage: build
tags:
- 新建 runner 的标签
only:
- develop
script:
- cd public
- npm i
- npm run build
- Войти
pipeline
страница конфигурации
- Записывать
URL
а такжеToken
, осталось зарегистрироватьсяrunner
использовать
зарегистрировать бегуна
- регистр
runner
,runner
После успешной регистрации вы окажетесь вpipeline
страницу конфигурации см.specific runners
Ниже приведено больше, чем то, что вы только что добавили.runner
.
sudo gitlab-ci-multi-runner register
# Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com )
你的 URL
# Please enter the gitlab-ci token for this runner
你的 Token
# Please enter the gitlab-ci description for this runner
my-runner
# Please enter the gitlab-ci tags for this runner (comma separated)
my-runner
Whether to run untagged builds [true/false]:
false
Whether to lock Runner to current project [true/false]:
false
# Please enter the executor: shell, docker, docker-ssh, ssh?
docker
# Please enter the Docker image (eg. ruby:2.1):
node:9.4.0
- удалить
runner
sudo gitlab-ci-multi-runner unregister --url url地址 --token tocken值
- Проверить
runner
условие
sudo gitlab-ci-multi-runner status
- Проверить
runner
список
sudo gitlab-ci-multi-runner list
- Проверить
runner
конфигурационный файл
sudo vim /etc/gitlab-runner/config.toml
ты закончил
переключиться на проектPipelines
странице, если обнаружены следующие ситуации, это означает, что вашrunner
Он был настроен, и каждый ваш коммит будет запускатьrunner
.
Примечание
-
При использовании GitLab CI для клонирования частного репозитория вам будет предложено
Host key verification failed
.Необходимо выполнить следующую настройку,
Key
записыватьSSH_PRIVATE_KEY
,Value
Написать серверprivate SSH key
. затем в.gitlab-ci.yml
Напишите следующий код перед файлом и сохраните его.
```powershell
before_script:
- 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )'
# Run ssh-agent (inside the build environment)
- eval $(ssh-agent -s)
# Add the SSH key stored in SSH_PRIVATE_KEY variable to the agent store
- ssh-add <(echo "$SSH_PRIVATE_KEY")
- mkdir -p ~/.ssh
- '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config'
```