Gitlab 在工件路径中使用脚本变量

Gitlab 在工件路径中使用脚本变量,gitlab,gitlab-ci,gitlab-ci-runner,Gitlab,Gitlab Ci,Gitlab Ci Runner,在工件路径中使用TEST_VAR变量是否有任何改变 inject: stage: inject script: - echo "testDownload.zip" > varName.txt - export TEST_VAR=$(cat varName.txt) - echo $TEST_VAR #This is working - wget http://some.url.com/download/testDownload.z

在工件路径中使用TEST_VAR变量是否有任何改变

inject:
  stage: inject
  script:
    - echo "testDownload.zip" > varName.txt
    - export TEST_VAR=$(cat varName.txt)
    - echo $TEST_VAR #This is working
    - wget http://some.url.com/download/testDownload.zip
  artifacts:
    name: 
    paths:
    - $TEST_VAR
    expire_in: 1h
在生产环境中,testDownload.zip文件将有一个变量名(-.zip),我希望以后的所有阶段都可以使用它的原始名称

多谢各位

Andrew是正确的(不幸的是)-在某个地方我发现了以下“变通方法”(不太好,也不可怕):


这将使$INJECTION\u PATH文件夹及其contant在每个阶段都可用,而与文件夹中的文件名无关。

很遗憾,这是不可能的,请参阅:

GitLab Runner内部变量扩展机制

  • 支持:项目/组变量、.gitlab-ci.yml变量、config.toml变量以及触发器、管道中的变量 明细表和手动管线
  • 不支持:在中定义的变量 脚本(例如,导出MY_VARIABLE=“test”)
导出的变量仅在“*script”部分可用,对于脚本后的
有一些限制,请参阅

我的理解是,当作业启动时,
*脚本
部分之外的所有内容都会初始化,并且不能在运行时重新定义。在您的情况下,您可以设置一个预定义的路径(即下载的_artifact.zip),然后wget应该将下载的内容保存到该文件中。要保留文件名,您可以在下载的_artifact.txt中回显文件名,并将其传递到下一阶段。这很有黑客性,但不幸的是,您不能在任何其他文件(或一些共享数据库,这可能是一个更黑客的解决方案)中的阶段之间传递上下文

相关机票:

variables:
  INJECTION_PATH: "./Test/"


inject:
  stage: inject
  before_script:
    - sudo apt-get -qq install unzip
  script:
    - wget hhttp://some.url.com/download/7d8e6751-2ca3-477c-9185-7097932c3043.zip
    - unzip ./7d8e6751-2ca3-477c-9185-7097932c3043.zip -d $INJECTION_PATH
  artifacts:
    paths:
      - $INJECTION_PATH
    expire_in: "600"