gitlab реализует CI/CD

задняя часть Go сервер GitLab

1 Обзор

Gitlab — один из широко используемых инструментов управления git-кодом с открытым исходным кодом, и вместе с разработкой были запущены решения ci/cd. Как следует из названия, ci/cd в основном выполняет следующие две задачи.

  • ci (непрерывная сборка)
    После того, как код отправлен, он запускает автоматическое модульное тестирование, предварительную компиляцию кода, создание изображения, загрузку изображения и т. д.

  • компакт-диск (непрерывный выпуск)
    Непрерывный выпуск относится к выпуску встроенной программы в различные среды, такие как предварительная среда и формальная среда.

图片描述

2. Особенности

gitlab ci/cd имеет следующие функции

  • Кроссплатформенная поддержка
    Пока платформа, поддерживающая язык go, может выполнять на нем ci, она в основном охватывает большинство операционных систем.
  • Многоязычная поддержка
    Время сборки запускается скриптом, поэтому поддерживаются практически все языки.
  • Pipeline
    Рабочий процесс может быть сформирован через различные этапы
  • поддержка докеров
    Можно создавать образы Docker, а в Kubernetes также поддерживаются триггеры.

Все функции подробно описаны в:Ссылка на сайт

3. Структура

图片描述

gitlab ci/cd дополняется независимой программой запуска.Программа запуска написана на языке go, поэтому она может быть хорошо кросс-платформенной.Обычно программу запуска можно развернуть на любом сервере, отличном от сервера gitlab, чтобы избежать влияние на сервер gitlab.

См. проект бегуна по адресу:Ссылка на сайт

4. Процесс gitlab ci/cd

gitlab запускает конвейер, помещая файл .gitlab-ci.yml в корневой каталог проекта, а запись файла следует синтаксису yml, поэтому в целом gitlab ci/cd требуется всего два шага:

  • Напишите файл .gitlab-ci.yml и поместите его в корневой каталог проекта.
  • Настройте бегун gitlab. После завершения соответствующий этап будет автоматически выполнен согласно условиям триггера gitlab-ci.yml при отправке кода.

4.1 файл gitlab-ci.yml

stages:
  - test
  - build
  - deploy

test:
  stage: test
  script: echo "Running tests"
  only:
  - tags

build:
  stage: build
  script: echo "Building the app"
  only:
  - tags

deploy_staging:
  stage: deploy
  script:
    - echo "Deploy to staging server"
  environment:
    name: staging
    url: https://staging.example.com
  only:
  - tags

deploy_prod:
  stage: deploy
  script:
    - echo "Deploy to production server"
  environment:
    name: production
    url: https://example.com
  when: manual
  only:
  - tags

Как и выше, это метод записи файла .gitlab-ci.yml с функцией ci/cd,

Для конкретного написания .gitlab-ci.yml и значения ключевых слов см.:Ссылка на сайт

Чтобы узнать, почему gitlab использует .gitlab-ci.yml, см.:Ссылка на сайт

4.2 конфигурация бегунка

Конфигурация бегуна в основном делится на три этапа:

5. Резюме

В целом, gitlab-ci может в принципе выполнить полную сборку и выпуск, но есть и некоторые недостатки:
1. В публикующей части, какой сервер нужно развернуть в файл .gitlab-ci, кроме того, если раннер развернут напрямую, машина, на которой находится раннер, должна иметь прямой или косвенный доступ ко всем опубликованным машинам, которые существует здесь Определенные проблемы безопасности.
2. Нет аудита для выпуска программы.Для небольших компаний эта проблема может быть не заметной, но когда команда НИОКР расширяется и бизнес компании увеличивается, управление полномочиями и аудит процесса выпуска очень важны.