Невозможно использовать символ `$$` в переменных среды GitLab - PullRequest
4 голосов
/ 25 апреля 2019

Невозможно использовать символ $$ в переменных среды GitLab CI.

Я храню свои секреты в переменных среды GitLab CI, из которых в конце строки моего пароля есть символы $$ (например, Ab1ab $$).Когда я выводю его или использую envsubst, вывод будет Ab1ab $, лишая $ конца в конце.

Я пытался использовать строку в '', "", ни один из которых не помог.Видел некоторые опасения в сообществе gitlab относительно использования символа $ в переменных env, но не смог найти обходных путей для моей конкретной проблемы.

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

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

1 Ответ

0 голосов
/ 26 апреля 2019

Это довольно распространенная проблема с установкой переменных env в 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

...