gpt4 book ai didi

gitlab - 如何将值传递给来自文件的gitlab管道变量

转载 作者:行者123 更新时间:2023-12-02 02:00:21 25 4
gpt4 key购买 nike

例如我的文件是test.env

test.env has the content

export SAMPLE="true"

我希望在运行管道之前将变量 SAMPLE 设置为管道变量

我正在尝试下面提到的解决方案,但它并没有真正帮助

before_script:
- git clone test.env
- source test.env

stages:
- publish

test:
stage: publish
trigger:
project: test_pipeline
branch: master
strategy: depend
only:
variables:
- $SAMPLE == 'True'

有没有什么方法可以预先获取变量,然后设置管道变量,以便可以根据这些管道变量执行

最佳答案

目前,Gitlab CI 无法提供用作环境变量的文件,至少不能像您所说的那样。然而,还有其他几个选项。

首先是获取您在 test.env 文件中拥有的所有单独变量,并将它们存储为单独的 secret 变量。您可以通过转到项目的设置,-> CI/CD,-> 变量来设置这些。此处定义的环境变量将在该项目的每个管道作业中自动可用(尽管您可以选择 Protect Variable 复选框,这只会使变量可用于 protected 分支上的管道)。

下一个选项是复制整个 test.env 文件内容,返回到项目的 Secret Variables(如上所述),但这次将 Variable Type 更改为“File”,并且粘贴文件内容作为值。当您使用"file"类型变量时,Gitlab 将在您的每个管道作业中创建一个临时文件(同样,除非您选中“保护变量”选项)。然后,该文件的路径将存储为带有您选择的 key 的环境变量。这将允许您执行诸如 cat $my_file_variable 之类的操作,它的计算结果为 cat/path/to/temporary/file,然后 cat 内容。

最后一个最接近您原始请求的选项是在所有其他需要 test.env 文件的作业之前添加一个作业,如下所示:

stage: env_setup # or whatever
script:
- : # this is the bash Null Command that does nothing and always succeeds
artifacts:
reports:
dotenv: test.env

对于这项工作,唯一的目的是将您的 test.env 文件转换为环境变量。我们不需要用它做任何其他事情,所以我们对脚本部分使用 Null 命令(因为至少没有 script 部分的作业将失败)。 artifacts 部分是这里的重要内容。 Gitlab 支持一种名为 dotenv 的特殊报告类型,它接受一个参数:文件路径。该文件将像其他任何工件一样作为工件上传,但对于后续作业(或那些使用 dependencies 关键字和 this 作业名称的作业)而不是将工件作为一个文件,test.env中的每一项都会变成一个环境变量,所以你可以像$SAMPLE等一样使用它。

我个人更喜欢前两个选项而不是第三个选项,在前两个选项中,第二个选项最简单,因为您只需将现在拥有的文件复制并粘贴到一个变量中即可。第三个选项不理想的原因是它仍然允许您在 git 存储库中拥有敏感变量(如密码),从安全角度来看这并不理想。前两个选项中的任何一个都可以消除该问题。

关于gitlab - 如何将值传递给来自文件的gitlab管道变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69045140/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com