当将配置作为 Kotlin DSL 存储在 VCS 中时,您不应该硬编码密码和令牌,而应该使用“令牌”。问题是,它没有正确记录。
假设我有一个credentialsJSON:78098495-5f8c-4935-82b5-03eafaf2adde
包含 VCS 密钥密码的令牌。如何在 Kotlin DSL 代码中使用它?
我尝试了以下方法:
params {
password("GitHub-key-passphrase", "credentialsJSON:78098495-5f8c-4935-82b5-03eafaf2adde")
}
但是,TeamCity 会抱怨未指定参数“GitHub-key-passphrase”。如何获取要替换的令牌?
答案1
我的理解是,这是一个多部分的事情。
- 在 TeamCity GUI 中添加令牌(版本设置 > 令牌)
- 在你的 Kotlin 中引用该 Token(你上面已经完成了)
- 在您的构建配置中,使用您在 Kotlin 中定义的参数。
所以如果你做类似的事情:
params{
add {
param("system.myGithubPassword)", "credentialsJSON:78098495-5f8c-4935-82b5-03eafaf2adde")
}
}
然后您应该看到(在 GUI 中)您的项目现在有一个名为 myGithubPassword 的系统参数,其值为(隐藏)。您还应该看到(在 GUI 中)使用该令牌的项目/参数 - 显示在“令牌”页面中。然后您可以%system.mygithubpassword%
在任何可以处理 TeamCity 参数替换的构建位置中引用,并且 TeamCity 应该处理参数 -> 令牌 -> 密码替换。
根据您的描述,您可能正确设置了令牌和参数,但没有在构建配置中按照您想要/期望的方式使用该参数。
我就是这样思考它应该可以工作,但是像你一样,我发现文档有点难以理解......
答案2
尝试命名构造函数参数
params {
password(name = "GitHub-key-passphrase", value "credentialsJSON:78098495-5f8c-4935-82b5-03eafaf2adde")
}