5. Настройка файла gitlab-ci.yml

Настройка файла gitlab-ci.yml

переходим в pipeline editor

будет создан шаблон файла .gitlab-ci.yml

перепишем его под нужды нашего проекта, попутно добавив пару упрощений т.к. в этом файле крайне важны отступы (табуляция) то файл представлен в виде отдельного документа (Pipeline.txt) в проекте на github

Рассмотрим основные моменты:

Комментарии — пишутся как в bash через символ #
Вывод в консоль — через команду - echo "text..."
Теги/tags — используются для распределения задач между раннерами (не равны тегам в git)
Артефакты – данные, что будут сохранены/перезаписаны и выданы архивом в gitlab
их крайне удобно использовать для выдачи исполняемых файлов или промежуточных в различные папки для тестов
Переменные
— обычно в них прописывают пути к наиболее используемым скриптам/исполняемым файлам

variables:
  prj_buildPath: ./build_scr.sh
  #main file
  main_file_build: ./build/BasePrj
  main_file_run: ./temp/BasePrj
  #tests
  unit_tests_build: ./build/tests/unit_tests/tests
  unit_tests_run: ./temp/tests

Стадии/stages — приписываются все стадии проверки

stages:          # List of stages for jobs, and their order of execution
 - build
 - test
 - deploy

Рассмотрим 1 из стадий (build)

build-job:       # This job runs in the build stage, which runs first.
  stage: build
  tags:
    - build
  script:
    - echo "Compiling the code..."
    - $prj_buildPath
    - echo "Compile complete."
    #copy all necessary files
    - mkdir temp
    - cp $main_file_build temp/
    - cp $unit_tests_build temp/
  artifacts:
    paths:
      - ./temp/

Мы объявили стадию — build и тег build, далее работает скрипт
— выводим в консоль «Compiling the code…»
— по переменной пути ($prj_buildPath) пытаемся собрать проект
— по окончанию пишем в консоль «Compile complete.»

так как между запусками стадий происходит очистка директории с проектом надо сохранить необходимые файлы, в частности исполняемый файл проекта и файл с тестами, для этого создаем папку temp ( т.к. тесты еще не запускались) и копируем в нее необходимые файлы, по окончанию сказываем, что эта папка является артефактами.
По хорошему было бы неплохо прописывать удаление этой папки при новых копированиях, но gitlab делает это и сам/ перезаписывает файлы.

После сохранения файла gitlab-ci.yml (создания коммита) автоматически будет сделана попытка проверить проект
и она вероятно завершится неудачей т.к. не установлено необходимое ПО для сборки и тестирования
переходим в view pipeline и видим
./build_scr.sh: line 7: cmake: command not found
./build_scr.sh: line 8: make: command not found

установим:

sudo apt install cmake           //cmake version 3.11+
sudo apt install build-essential // компилятор gcc

после проект должен собраться и провериться.
Если сымитировать ошибку в unit тестах — проверка в GitLab CICD не пройдет.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *