Gitlab 在工件路径中使用脚本变量
在工件路径中使用TEST_VAR变量是否有任何改变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
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”)
有一些限制,请参阅
我的理解是,当作业启动时,*脚本
部分之外的所有内容都会初始化,并且不能在运行时重新定义。在您的情况下,您可以设置一个预定义的路径(即下载的_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"