在GitLab环境变量中不能使用`$$`字符

时间:2019-04-25 19:59:14

标签: environment-variables gitlab gitlab-ci envsubst

在GitLab CI的环境变量中不能使用$$字符。

我将我的secret存储在GitLab CI环境变量中,其中我的密码字符串中的一个末尾带有$$字符(例如:Ab1ab $$)。当我将其回显或使用envsubst时,输出将为Ab1ab $,最后去除多余的$。

我尝试使用将字符串括在'',“”中,但都没有帮助。有人在gitlab社区上看到了一些关于在env变量中使用$字符的问题,但找不到确切的解决方法。

https://gitlab.com/gitlab-org/gitlab-ce/issues/27436

export VAR ='Ab1ab $$' echo $ VAR = Ab1ab $

1 个答案:

答案 0 :(得分:0)

在CI中设置环境变量是一个非常普遍的问题!我在CircleCI中也遇到过很多次。通常,我已经在反斜杠上找到了很大的成功,但是我猜您已经尝试过了。

我找到了一个讨论我认为可能与之息息相关的问题的话题: https://gitlab.com/gitlab-org/gitlab-ce/issues/27436

关键要点是,至少在那个版本的GitLab产品中,他们还没有找到好的答案。我决定开始做一些实验:

https://gitlab.com/mattbornski/gitlab-ci-exploration

我设置了许多不同格式的环境变量,以查看导致美元符号的结果。

$ python3 audit_environment.py
DOLLA_DOUBLE_MIDSTRING = 1$234
DOLLA_QUAD_MIDSTRING = 1$$234
DOLLA_SINGLE_MIDSTRING_BACKSLASHED = 1\34
DOLLA_DOUBLE_MIDSTRING_BACKSLASHED = 1\\34
DOLLA_DOUBLE_MIDSTRING_LEADING_BACKSLASHED = 1\$234
DOLLA_QUAD_ENDSTRING = 1234$$
DOLLA_SINGLE_MIDSTRING_BACKSLASHED_DOUBLE_QUOTED = "1\34"
DOLLA_SINGLE_MIDSTRING_DOUBLE_QUOTED = "134"
DOLLA_SINGLE_MIDSTRING_BACKSLASHED_SINGLE_QUOTED = '1\34'
DOLLA_SINGLE_MIDSTRING = 134
Job succeeded

所以,在这里外卖:

  • 双美元符号导致在环境变量中出现一个美元符号,您在GitLab CI中的代码可以访问该变量。这可以重复。
  • 报价通过但不影响美元符号的扩展/删除
  • 反斜杠通过但不影响美元符号的扩展/删除

因此,您的选择如下所示:

  • 将四个美元符号放入您设置的变量中,以便在运行环境中获得两个美元符号
  • 重新生成密钥,以使它们中没有问题字符(这是我非常肯定地选择了很多非常真实的选择,以避免出现兔子洞)

为进一步探索,请尝试以下更多有趣的选择:https://unix.stackexchange.com/a/309791