在gitlab-ci.yml

时间:2018-04-04 01:00:42

标签: gitlab gitlab-ci gitlab-ci-runner

我有以下gitlab-ci.yml文件,使用jq处理器读取package.json以动态设置工件文件夹的变量名称,类似于

image: node:latest

stages:
 - build

before_script:
    ## steps ignored for purpose of question
    - export NAME_OF_ARTIFACT_FOLDER=$(cat package.json | jq -r .name)"_"$(cat package.json | jq -r .version)".zip"
    - echo $NAME_OF_ARTIFACT_FOLDER ##prints the expected name here eg. myApp_1.0.0.zip

prod_build:
  stage: build
  script:
   - echo $NAME_OF_ARTIFACT_FOLDER ##prints the expected name here eg. myApp_1.0.0.zip
   - yarn run build
  artifacts:
    paths:
    - dist/$NAME_OF_ARTIFACT_FOLDER ## this does not work
    expire_in: 2 hrs

这里的问题是- dist/$NAME_OF_ARTIFACT_FOLDER不起作用,不确定我是否遗漏了这些内容。

修改

在对预期路径进行硬编码时,如下所示,它工作正常,这意味着文件夹名称有效,并且工件确实被正确识别,但在来自$NAME_OF_ARTIFACT_FOLDER时不起作用

 artifacts:
    paths:
    - dist/myApp_1.0.0.zip ##hardcoding the expected works just fine
    expire_in: 2 hrs

2 个答案:

答案 0 :(得分:2)

嗯,目前这是不可能的。 Manual说如下:

  

工件:name变量可以使用任何预定义的变量。

即可在作业的脚本部分设置任何变量。

答案 1 :(得分:2)

这是 GitLab 的一个未决问题

Artifacts Filename Cannot Be Set with Dynamic Variables

我有一个项目变量定义了一个脚本中的 zip 文件的路径,我在 artifacts:paths 级别重用了该脚本。如果 artifacts:paths 实例完全无法分配,则链接问题会更加明显,但在我的情况下,它继承了与我工作中仅上面两行的值不同的值!