Файл .gitlab-ci.yml


Файл .gitlab-ci.yml размещенный в gitlab репозитории позволяет автоматически запускать тесты кода при каждом новом коммите. За счет этого выявляются ошибки.


.gitlab-ci.yml и запуск тестов в Gitlab



Самый простой тест может выглядеть так:

cat file1.txt file2.txt | grep -q "expected string-result"



Открываются два файла и проверяет соответствие их содержимого ожидаемому результату. Если в одном из файлов или в обоих другое содержимое — тест не пройдет.

Эту команду можно вручную выполнить из консоли, ее же можно поместить в файл .gitlab-ci.yml



Любой .gitlab-ci.yml размещенный в корне репозитория автоматически будет выполняться при каждом коммите в репозиторий.


mcedit .gitlab-ci.yml

test: script: cat file1.txt file2.txt | grep -q "expected string-result"


Более сложный файл, который может использоваться в реальной инсталяции при усложнении теста.


Тесты для обеспечения безопасности будут выполняться в изолированных Docker конейнерах.



Первой строкой указывается образ alpine. Он будет использоваться для создания контейнера.


Затем перечисляются stage-и. Заданные для каждого из них блоки кода будут выполняться в приведенном порядке. Сначала сборка — compile, потом тестирование — test. В последнюю очередь package — подготовка артефакта — пакета или файла с результатом.

image: alpine
stages:
    - compile
    - test
    - package

compile:
    stage: compile
    script: cat file1.txt file2.txt > compiled.txt
    artefacts:
       paths:
       - compiled.txt

test:
    stage: test
    script: cat compiled.txt | grep -q "expected string-result"
package:
    stage: package
    script: cat compiled.txt | gzip > package.gz
    artefacts:
       paths:
       - packages.gz





Артефакт в виде текстового файла compiled.txt получается еще на первой стадии. Содержимое тестируется, и если тест проходит, текстовый файл упаковывается в архив, который доступен для скачивания.



Архив можно дополнительно перемещать в какой-то каталог или при помощи rsync копировать на внешний сервер.

Файл с тестами после сохранения размещается в корне проекта.


gitlab-ci.yml


После каждого коммита он будет отрабатывать и результат всегда можно будет посмотреть в интерфейса.


Но чтобы тесты выполнялись нужен предустановленный Docker и runner, который установлен и зарегистрирован в Gitlab.

Сказать спасибо