Рейтинг:0

Версионные настройки Teamcity: как использовать токены

флаг il

При сохранении конфигурации в VCS как Kotlin DSL вы не должны жестко кодировать пароли и токены, вместо этого следует использовать «токены». Проблема в том, что это не задокументировано должным образом.

Представим, что у меня есть токен учетные данныеJSON:78098495-5f8c-4935-82b5-03eafaf2adde содержащий парольную фразу ключа VCS. Как использовать его в коде Kotlin DSL?

Я пробовал следующее:

параметры {
    пароль («GitHub-key-passphrase», «credentialsJSON: 78098495-5f8c-4935-82b5-03eafaf2adde»)
}

Но TeamCity будет жаловаться, что параметр «GitHub-key-passphrase» не указан. Как заставить токены заменить?

Рейтинг:0
флаг aq

Я так понимаю, что это многокомпонентное дело.

  1. Добавьте токен в графический интерфейс TeamCity (Настройки версий > Токены)
  2. Ссылка на этот токен в вашем Kotlin (что вы сделали выше)
  3. В конфигурации сборки используйте параметр, который вы определили в файле Kotlin.

Итак, если вы сделаете что-то вроде:

параметры {
    Добавлять {
        param ("system.myGithubPassword)", "credentialsJSON: 78098495-5f8c-4935-82b5-03eafaf2adde")
    }
}

Затем вы должны увидеть (в графическом интерфейсе), что ваш проект теперь имеет системный параметр с именем myGithubPassword со (скрытым) значением. Вы также должны увидеть (в графическом интерфейсе) проекты/параметры, для которых используется этот токен, показанные на странице «Токены». Затем вы можете обратиться к %system.mygithubpassword% в любых местах сборки, которые могут обрабатывать подстановку параметров TeamCity, а TeamCity должен обрабатывать параметр -> токен -> подстановку пароля.

Судя по вашему описанию, вы можете правильно установить токен и параметр, но затем не использовать параметр так, как вы хотите/ожидаете в конфигурации сборки.

Вот как я считать что это должно работать, но, как и вы, я нашел документы немного сложными, чтобы следовать этому...

https://www.jetbrains.com/help/teamcity/storing-project-settings-in-version-control.html#Managing+Tokens

флаг il
Проблема в том, что у меня нет локаций, которые могут обрабатывать подстановку параметров, все мои локации — это код Kotlin. Главный из них: когда я объявляю параметр, подобный этому (не следует ли мне использовать пароль?), TeamCity жалуется, что он не определен, несмотря на то, что он объявлен со значением токена.
GnomeDePlume avatar
флаг aq
Правильно, поэтому ваши настройки (настроенные/выраженные в Kotlin) могут установить значение параметра, а затем ваша конфигурация сборки сможет его использовать. Мы используем Kotlin, чтобы сказать, что параметр будет иметь значение а затем во время сборки TC обрабатывает замену для нас.
GnomeDePlume avatar
флаг aq
Что может быть полезно (что я и делал сегодня), так это использование графического интерфейса для настройки желаемой конфигурации, а затем проверка сгенерированного Kotlin DSL. Я обнаружил, что когда я создавал запись пароля, TC автоматически создавал новый токен для его обработки, и полученный DSL содержал имя токена. Я тоже новичок в этом - использование графического интерфейса для создания некоторых примеров конфигурации Kotlin оказывается полезным костылем прямо сейчас.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.