【问题标题】:Gitlab: Concat file based variablesGitlab:基于 Concat 文件的变量
【发布时间】:2022-01-16 18:08:16
【问题描述】:

我需要替换基于文件的 gitlab 变量中的变量值,如下所示。

基于文件的变量:

  • 名称:app_service_dev_env
  • 值:
    iam_role_name="xxxx"
    lambda_s3_bucket_name = "xxxxx"
    lambda_s3_key="xxxxx"

变量:

  • 名称:ENV
  • 值:开发

下面是我想要实现的

before_script:
-cat ${app_service_${ENV}_env} > dev.txt

收到错误:错误:作业失败:退出代码 2

谁能告诉我如何解决这个问题?

我该如何解决这个问题?

【问题讨论】:

    标签: gitlab gitlab-ci


    【解决方案1】:

    文件 variable type 创建一个文件。它们不是环境变量。关键是文件的路径。

    before_script:
      - cat app_service_dev_env > dev.txt
    

    不过,您可以简单地将文件变量的名称设为 dev.txt

    至于您的 ENV 变量,使用您当前的设置,您可以执行以下操作:

    before_script:
      - cat "app_service_${ENV}_env"
    

    【讨论】:

    • 谢谢!我将验证并检查它是否解决了问题
    • 是否有可能有 cat ${$service_name}_${ENV}_env} > dev.txt 之类的东西,或者如果我们能做到这一点的话?
    • @GiridharMarri 当然。从 GitLab 14.3 开始,您可以利用 nested variable expansion -- variables: FOO: "${SERVICE_NAME}_${ENV}_env" 这通常在 Bash 或您首选的 shell 中也受支持。
    • 抱歉之前没有说清楚。我正在尝试参数化 gitlab 文件变量,例如 ${Service_Name}_${ENV}_env 并像这样使用它:cat ${$Service_Name}_${ENV}_env} > dev_env.txt。这可能吗?
    • 对不起,我也不确定我是否完全理解......但如果我正确理解你的意思 - 你想动态命名文件类型变量。我不相信这是可能的。文件类型变量只能设置为Project/group/instance CI/CD变量,这些变量不能参数化,key不支持变量扩展。您可能会通过查看工件和 dotenv 报告来找到您需要的东西......但我并不完全清楚您需要这个特定解决方案的原因。听起来像一个XY问题。 @GiridharMarri
    猜你喜欢
    • 2017-06-03
    • 1970-01-01
    • 1970-01-01
    • 2020-11-04
    • 1970-01-01
    • 2021-12-08
    • 1970-01-01
    • 1970-01-01
    • 2018-01-11
    相关资源
    最近更新 更多