Реализация CI / CD в приложении C / C ++ (Linux) с использованием Shell и Docker Executor на GitLab

Опубликовано: 30 Ноября, 2021

Для реализации CI / CD с GitLab Runner доступно множество исполнителей. Однако среди них более популярны Shell и Docker, и мы можем легко настроить репозиторий с этими бегунами. Эти бегуны могут быть выбраны в зависимости от требований и доступности ресурсов. Эта статья в основном посвящена исполнителю Shell и Docker для приложения C / C ++ Linux, а код написан на сценарии bash. Приложение можно собрать и протестировать с помощью сценария bash.

Shell Executor: Shell Executor - очень простой исполнитель, который помогает создавать решение локально на машине, где установлен GitLab Runner. В этом случае GitLab Runner установлен на Linux Machine, поэтому необходимо установить необходимое программное обеспечение в той же системе.

Docker Executor: это мощный инструмент, который включает в себя много программного обеспечения, и к нему можно получить доступ с помощью образа. Преимущество этого исполнителя в том, что нам не нужно устанавливать какое-либо программное обеспечение вручную, обо всем позаботятся через докер, а необходимый образ будет загружен из концентратора докеров. Однако недостатком является то, что этот обмен данными заблокирован в некоторых организациях из соображений безопасности. Итак, если это так, Shell Executor - лучшая альтернатива.

Реализация C / C ++ на Shell Executor

Требования : это базовое программное обеспечение, которое необходимо установить на машине Linux. Однако его можно изменить на основе сценария компиляции, и при необходимости потребуется загрузить другое программное обеспечение.

Программное обеспечение

Описание

Git Это первое требование для фиксации изменений в GitLab. Это программное обеспечение для контроля версий, которое отслеживает изменяющийся набор файлов.
cmake Чтобы создать автоматизацию, тестирование и упаковку приложения c / c ++, необходимо установить cmake на машине Linux.
gcc Это компилятор, который должен компилировать программы c / c ++.
g ++ Это также компилятор, который должен компилировать программы c / c ++. Его можно выбрать на основе написанного сценария.
grep Установите его, если программа ищет простой текст.

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

Переменная / Файл

Дорожка

G ++ экспорт GCC = / usr / bin / g ++
CC экспорт CC = / usr / bin / gcc
GREP экспорт GREP = / usr / bin / grep
Разрешение Разрешите скрипту перед его запуском: chmod -R 777 *
.gitlab-ci.yml Этот файл должен находиться в корневом каталоге проекта, который содержит всю конфигурацию CI / CD, включая программное обеспечение и путь к сценарию. Здесь вы можете указать, как должен работать этот репозиторий. Перед добавлением этого файла в корневой каталог следует проверить, является ли он допустимым файлом yml или нет.

Настройка GitLab Runner : выполните следующие шаги, чтобы загрузить и настроить GitLab Runner.

1. Загрузите GitLab Runner на Linux Machine, используя следующую команду

 sudo curl -L --output / usr / local / bin / gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64

2. Дайте ему разрешение на выполнение, используя следующую команду

 sudo chmod + x / usr / local / bin / gitlab-runner

3. Создайте GitLab CI, используя следующую команду

sudo useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell / bin / bash

4. Установите и запустите как службу, используя следующую команду

 sudo gitlab-runner install --user = gitlab-runner --working-directory = / home / gitlab-runner

5. Запустите GitLab Runner, используя следующую команду.

 запуск sudo gitlab-runner

6. Остановите GitLab Runner перед регистрацией репозитория.

 остановка sudo gitlab-runner

7. После успешной остановки GitLab Runner введите следующую команду в терминале для регистрации репозитория.

 sudo gitlab-runner регистрация

8. Когда вы регистрируете репозиторий с помощью GitLab Runner, вам необходимо ответить на следующие вопросы.

  • Введите URL-адрес вашего экземпляра GitLab : он может быть разным для каждой организации, а формат будет иметь вид http://gitlab.example.com.
  • Путь : перейдите в учетную запись GitLab → Выберите репозиторий, который вы хотите зарегистрировать в runner → Настройки → CI / CD → Развернуть Runner
  • Введите токен gitlab-ci для этого бегуна : это будет уникальный токен каждого проекта, который потребуется при регистрации, и его можно найти. Путь: перейдите в учетную запись GitLab → Выберите репозиторий, который вы хотите зарегистрировать в средстве выполнения → Настройки → CI / CD → Развернуть Runner
  • Введите описание gitlab-ci для этого бегуна : Введите имя бегуна (любое имя), которое поможет вам запомнить, какой бегун 'запущен
  • Введите теги gitlab-ci для этого бегуна : это необязательно, если вы хотите запустить бегун GitLab, когда определенный тег доступен в файле yml.
  • Введите исполнителя: будет список из нескольких исполнителей и введите оболочку (поскольку GitLab Runner будет запускать нашу систему)

9. После успешной регистрации запустите GitLab Runner, используя следующую команду.

 запуск sudo gitlab-runner

10. Чтобы убедиться, что GitLab Runner зарегистрировал соответствующий репозиторий и запущен ли раннер. Перейдите в учетную запись GitLab → Выберите репозиторий, который вы хотите зарегистрировать в runner → Settings → CI / CD → Expand Runner, будет доступен зеленый цветной кружок, и отобразится сообщение, что Runners активированы для этого проекта. Примечание. Если круг серый, это означает, что бегун не запустился и запускается снова.

Команды запуска Linux GitLab

Следуйте еще нескольким командам GitLab Runner, чтобы ознакомиться.

Командование

Описание

sudo gitlab-runner регистрация Зарегистрируйте проект в GitLab Runner
запуск sudo gitlab-runner Запустить бегуна
остановка sudo gitlab-runner Останови бегуна
sudo gitlab-runner статус Чтобы узнать статус gitlab-runner
sudo gitlab-runner unregister –name test-runner Отмените регистрацию Runner проекта и замените test-runner своим именем runner, и это имя можно найти в файле config.toml (где доступен ваш gitlab-runner).
sudo gitlab-runner unregister –url http://gitlab.example.com/ –token t0k3n Удалить Runner по URL-адресу и токену
sudo gitlab-runner unregister –all-runners Чтобы отменить регистрацию всех бегунов
sudo gitlab-runner перезапуск Эта команда останавливает, а затем запускает службу GitLab Runner.
sudo gitlab-runner удалить Эта команда останавливает и удаляет запуск GitLab Runner как службы.
sudo gitlab-runner exec Чтобы увидеть список доступных исполнителей, запустите
sudo gitlab-runner –help Проверьте список последних команд, выполнив
sudo gitlab-runner run –help Можно увидеть имя переменной окружения
sudo gitlab-runner –debug Чтобы запустить команду в режиме отладки
sudo gitlab-runner exec оболочка Чтобы увидеть список всех доступных параметров для исполнителя оболочки, запустите

.gitlab-ci.yml_ Исполнитель оболочки:

Ниже показано содержимое файла .gitlab-ci.yml в режиме исполнителя оболочки. Однако при необходимости измените его.

 этапы:
 - строить
 - контрольная работа

build_job:
 этап: сборка
 Только:
   - владелец
 сценарий:  
    - исходный код cd
    - экспорт G ++ = / usr / bin / g ++ // если не установлен вручную путь g ++
    - экспорт GCC = / usr / bin / gcc // если не установлен вручную путь gcc
    - chmod -R 777 *
    - ./BuildPackage.sh
    - pwd  
     
 артефакты:
   expire_in: 365 days // сохраняем двоичный файл, который нужен для тестирования приложения, и его можно скачать с GitLab
   пути:
      - sourcecode / binaryfolder_name // сохраняем двоичный файл  
       
     
test_job:
 этап: тест
 Только:
   - владелец
 сценарий:
    - pwd  
    - cd testdir // перейти в каталог test для запуска сценария тестового примера  
    - chmod -R 777 *
    - ./tests.sh
   
 зависимости:
   - build_job
   - build_job

Реализация C / C ++ на Docker Executor: нет необходимости устанавливать какое-либо программное обеспечение вручную, все будет взято из контейнера докера. Однако вы можете установить необходимое программное обеспечение, указав имя в файле yml, а также можете экспортировать путь. Чтобы запустить gitlab runner в режиме исполнителя docker, перейдите в GitLab Runner Set-Up (см. Выше) и выберите docker вместо оболочки.

.gitlab-ci.yml_ Исполнитель Docker :

Ниже приведено содержимое .gitlab-ci.yml в режиме исполнителя докеров. Однако при необходимости измените его.

 изображение: ubuntu: последний
 
этапы:
 - строить
 - контрольная работа
 
before_script:
 - echo "Перед установкой скрипта в образ ubuntu"
 - apt-get update && apt-get -y install cmake && apt-get -y install gcc && apt-get -y install g ++
 

build_job:
 этап: сборка
 Только:
   - владелец
 сценарий:  
    - исходный код cd
    - экспорт G ++ = / usr / bin / g ++ // если не установлен вручную путь g ++
    - экспорт GCC = / usr / bin / gcc // если не установлен вручную путь gcc
    - chmod -R 777 *
    - ./BuildPackage.sh
    - pwd  
     
 артефакты:
   expire_in: 365 days // сохраняем двоичный файл, который нужен для тестирования приложения, и его можно скачать с GitLab
   пути:
      - sourcecode / binaryfolder_name // сохраняем двоичный файл  
       
     
test_job:
 этап: тест
 Только:
   - владелец
 сценарий:
    - pwd  
    - cd testdir // перейти в каталог test для запуска сценария тестового примера  
    - chmod -R 777 *
    - ./tests.sh
   
 зависимости:
   - build_job
Хотите узнать о лучших видео и практических задачах, ознакомьтесь с базовым курсом C ++ для базового и продвинутого уровня C ++ и курсом C ++ STL для базового уровня плюс STL. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию .