【问题标题】:gitlab-ci.yml, before_script and artifactgitlab-ci.yml、before_script 和 artifact
【发布时间】:2019-03-14 19:34:55
【问题描述】:

gitlab-ci.yml documentation 中,它说

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

这告诉我工件是在作业开始运行之前产生的

但是artifact documentation 这么说

Artifacts 是附加到一个文件和目录的列表 成功完成后的作业

这告诉我在作业完成运行后会产生工件。

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

我想他们是在谈论上一份工作中的神器?但我不知道神器和工作是如何工作的,并且可能是错误的。

【问题讨论】:

    标签: gitlab artifact


    【解决方案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 运行之前下载工件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-14
      • 1970-01-01
      • 1970-01-01
      • 2021-05-06
      • 2019-02-08
      • 1970-01-01
      • 1970-01-01
      • 2021-03-21
      相关资源
      最近更新 更多