在gitlab-ci.yml上动态设置工件路径/文件夹结构

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在gitlab-ci.yml上动态设置工件路径/文件夹结构相关的知识,希望对你有一定的参考价值。

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

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
答案

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

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

也就是说,在您的脚本部分中没有设置变量可以使用该作业。

以上是关于在gitlab-ci.yml上动态设置工件路径/文件夹结构的主要内容,如果未能解决你的问题,请参考以下文章

如何创建一个工件,以便它可以在 .gitlab-ci.yml 中下载

gitlab-ci.yml、before_script 和 artifact

如何将工件传递到另一个阶段?

多个分支中的.gitlab-ci.yml的多个版本

Gitlab CI 中缓存/工件的正确用法是啥?

如何在 gitlab-ci.yml 文件中通过 ssh 设置变量值