如何在CI / CD管道中正确传达不同阶段的信息

时间:2019-07-09 15:33:55

标签: gitlab gitlab-ci

我正在努力使工作成为一个简单的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_DIRreference)的相对子代。

所以我现在正在尝试对其进行一些修改,但是我觉得我不太了解那里发生了什么。我最终尝试将已编译(APP)的文件作为工件附加到存储库目录中(不使用make install),并调用该二进制文件进行测试(例如./APP而不是APP )。这样,它可以工作,但是我觉得我不得不放弃make install指令,而且可能有一种更好,更直接的方法来实现这一点。

是否有执行此任务的推荐方法?

1 个答案:

答案 0 :(得分:0)

cache也不起作用。它被限制(尽管没有记录)与工件具有相同的限制。

这两个都是安全措施,因为否则它可以提供对安装gitlab-ci-runner的整个文件系统的访问。

解决方案是将二进制文件安装在相对于您的构建目录的路径中,而不是安装/usr/local/bin/app并使用artifacts