在后续阶段如何使用一个GitLab CI管道阶段的输出/工件?

时间:2020-11-09 10:50:46

标签: gitlab gitlab-ci

我有一个做2件主要事情的管道:1)使用来自外部提供程序的内容构建静态站点,以及2)从该静态站点构建docker容器。

目前,我将这些步骤分为2个阶段,并且构建阶段会生成一个工件

ArFragment

虽然我无法进入打包阶段以查看生成的文件-stages: - build - package build: stage: build image: node:12 script: - npm ci - npm run build artifacts: untracked: true paths: - folder/for/project - folder/that/was/not/there/before/build/time package: stage: package image: docker:stable services: - docker:dind needs: - build script: - export DOCKER_HOST=tcp://docker:2375/ - docker build -t my-project . 命令将构建一个存在docker build -t my-project但不存在folder/for/project的版本。在构建步骤完成后下载工件确实会给我两个文件夹,因此很明显,这是从该步骤中导出正确的内容,而不是导入到下一个步骤。

打包阶段的CI日志确实表明它正在下载某物,但我无法确定它的去向或访问方式(someID和令牌,此处为匹配上传值中的值)构建步骤)

folder/that/was/not/there/before/build/time

如何将这些文件从管道的一个阶段传递到下一个阶段?

1 个答案:

答案 0 :(得分:0)

我现在设法解决了这个问题,希望将来对其他人有帮助。问题是我为自己的工作命名了与阶段相同的名称(buildtest等),因此GitLab一定会感到困惑。使用问题中的示例,可行的解决方案将是:

stages:
    - build
    - package
  
build-job:
  stage: build
  image: node:12
  script:
    - npm ci
    - npm run build
  artifacts: 
    untracked: true
    paths: 
      - folder/for/project
      - folder/that/was/not/there/before/build/time

package:
  stage: package
  image: docker:stable
  services:
    - docker:dind
  dependencies: 
    - build-job
  script:
    - export DOCKER_HOST=tcp://docker:2375/
    - docker build -t my-project . 

注意,我已将build作业更改为build-job,并更新了依赖项名称,并且阶段名称保持不变。