我正在努力使工作成为一个简单的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指令,而且可能有一种更好,更直接的方法来实现这一点。
是否有执行此任务的推荐方法?
答案 0 :(得分:0)
cache
也不起作用。它被限制(尽管没有记录)与工件具有相同的限制。
这两个都是安全措施,因为否则它可以提供对安装gitlab-ci-runner的整个文件系统的访问。
解决方案是将二进制文件安装在相对于您的构建目录的路径中,而不是安装/usr/local/bin/app
并使用artifacts
。