Настройка файла 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 не пройдет.
