gitlab-ci.yml,before_script和工件

时间:2018-10-10 00:13:32

标签: gitlab artifact

gitlab-ci.yml documentation中,

  

before_script用于定义应在所有命令之前运行的命令   作业,包括部署作业,但是在还原工件之后。

这告诉我工件开始运行之前就产生了人工产物

但是artifact documentation表示

  

工件是附加到文件的文件和目录的列表   工作成功完成后

这告诉我工件运行完成后会产生伪像。

这是一个矛盾。有人可以解释一下这不是矛盾吗?

我想他们正在谈论上一份工作中的工件?但是我不知道人工制品和工作是如何工作的,而且可能是错误的。

1 个答案:

答案 0 :(得分:1)

工件可以由一个阶段的构建作业生成,而可以由下一阶段的构建作业消耗。因此,在将前一阶段产生的工件还原到当前阶段之后,再运行before_script。

所以下面的.gitlab-ci.yml

stages:
  - build
  - test

before_script:
  - echo "before_script"
  - ls

build_artifacts:
  stage: build
  tags:
    - docker
  script:
    - echo "build_artifacts"
    - touch build_output
  artifacts:
    paths:
      - build_output

test_artifacts:
  stage: test
  tags:
    - docker
  script:
    - echo "test_artifacts"

将提供以下输出:

# build_artifacts job
$ echo "before_script"
before_script
$ ls
README.md
$ echo "build_artifacts"
build_artifacts
$ touch build_output
Uploading artifacts...
build_output: found 1 matching files               
Uploading artifacts to coordinator... ok            id=56026 responseStatus=201 Created token=xxxxzzzz
Job succeeded



# test_artifacts job
Downloading artifacts for build_artifacts (56026)...
Downloading artifacts from coordinator... ok        id=56026 responseStatus=200 OK token=xxxxzzzz
$ echo "before_script"
before_script
$ ls
README.md
build_output
$ echo "test_artifacts"
test_artifacts
Job succeeded

您可以看到test_artifacts作业在before_script运行之前就下载了工件。