【发布时间】:2019-11-19 05:13:10
【问题描述】:
我正在努力使工作成为一个在阶段之间具有依赖关系的简单 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/ 下。上面的例子会失败,因为测试阶段没有找到可执行文件,即使它在构建步骤中声明为dependent(默认情况下似乎没有附加)。
如果我将/usr/local/bin/app 定义为artifact,它也会失败,因为它们必须是$CI_PROJECT_DIR (reference) 的相对子级。
所以我现在正在尝试对其进行一些修改,但我觉得我并不真正了解那里发生了什么。我终于尝试将在存储库目录中编译的文件(APP)附加为工件(不使用 make install),并调用该二进制文件进行测试(例如,./APP 而不是APP)。这样就可以了,但我觉得我不得不放弃 make install 指令,而且可能有更好更直接的方法来实现它。
是否有推荐的方法来执行此任务?
【问题讨论】:
-
您尝试使用
cache吗?这是 nodejs 的example