这是在 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 中的代码可访问的环境变量中。这可以重复。
- 报价通过但不影响美元符号的扩展/省略
- 反斜杠通过但不影响美元符号的扩展/省略
所以你的选择看起来像:
- 在您设置的 var 中放置四个美元符号,以便在您运行的环境中获得两个
- 重新生成您的密钥,使其中没有有问题的字符(这是一个非常真实的选择,我已经多次利用自己来避免这个兔子洞)
为了进一步探索,这里有一些更有趣的选择:https ://unix.stackexchange.com/a/309791