Я изо всех сил пытаюсь сделать работу простым конвейером CI / CD с зависимостями между этапами. Это мой .gitlab-ci.yml
файл:
image: gcc
stages:
- build
- test
build_app:
stage: build
script:
- make
- make install
test_app:
stage: test
script:
- run app ...
dependencies:
- build_app
Таким образом, этап сборки скомпилирует приложение и установит его в / usr / local / bin /. В приведенном выше примере произойдет сбой, поскольку на этапе тестирования исполняемый файл не будет найден, даже если он находится в состоянии в зависимости от на этапе сборки (кажется, что он не подключен по умолчанию).
Если я определю /usr/local/bin/app
как артефакт , он также потерпит неудачу, поскольку он должен быть относительным и дочерним по отношению к $CI_PROJECT_DIR
( ссылка ).
Так что я сейчас пытаюсь внести в него некоторые изменения, но чувствую, что не очень понимаю, что там происходит. Наконец, я попытался прикрепить скомпилированный файл (APP
) в каталог репозитория как артефакт (без использования make install) и вызвал этот двоичный файл для тестирования (например, ./APP
вместо APP
). Таким образом, это работает, но я чувствую, что мне пришлось отказаться от инструкции make install, а также, что, вероятно, есть гораздо лучший и простой способ реализовать это.
Есть ли рекомендуемый способ выполнения этой задачи?