TeamCity, KotlinDSL: как передать пароль FTP - PullRequest
0 голосов
/ 18 июня 2019

Недавно я столкнулся с ситуацией, когда наши конфигурации сборки TeamCity должны быть составлены с использованием данной бизнес-логики, а не вручную. Kotlin DSL отлично соответствует нашим потребностям, поэтому я довольно быстро написал скрипт .KTS. Единственная проблема, которую я имею до сих пор, это шаг загрузки FTP, а именно параметр пароля. Все мои попытки поставить пароль заканчивались ошибкой FTP 503.

Как это:

param("jetbrains.buildServer.deployer.username", "abc")
param("jetbrains.buildServer.deployer.password", "secret-password")

или что-то в этом роде (как я выяснил, что параметр незащищенного пароля устарел):

param("jetbrains.buildServer.deployer.username", "abc")
param("secure:jetbrains.buildServer.deployer.password", "secret-password")

Если я вручную ввожу пароль в TeamCity и проверяю сгенерированный DSL, я вижу, что пароль каким-то образом защищен:

param("secure:jetbrains.buildServer.deployer.password", "zxx5a3133fc69ef3252") <- "abc" password
param("secure:jetbrains.buildServer.deployer.password", "zxx4469c7c25073dd9f") <- "123" password

Какая кодировка / шифрование используется здесь? Любая подсказка, как передать произвольный пароль (в идеале, через% параметр%) в сценариях Kotlin DSL?

1 Ответ

1 голос
/ 19 июня 2019

Когда вам нужно добавить пароль в версионные настройки, а не через TeamCity UI (например, добавление настроек с помощью DSL на основе Kotlin), вам нужно будет добавить пароль в TeamCity и получите соответствующий токен для использования в настройках. Токен можно сгенерировать с помощью действия «Создать токен для пароля», доступного в Project | Меню действий .

В настоящее время пароли не наследуются иерархией проектов. Если для настройки проекта (корень VCS, соединение OAuth, облачный профиль) требуется пароль, токен, созданный для этого пароля, можно использовать только в этом проекте. Например, невозможно взять сгенерированный токен и использовать его в подобной настройке в подпроекте. В этом случае должен быть создан новый токен. Если вам нужно использовать защищенное значение во вложенных проектах, рассмотрите возможность добавления параметра пароля с защищенным значением и использования ссылки к параметр во вложенных проектах.

Другой способ генерации токена:

mvn -Dtext="mysecret" org.jetbrains.teamcity:teamcity-configs-maven-plugin:scramble
...