TeamCity,KotlinDSL:如何传递FTP密码
最近,我遇到了这样一种情况,我们的TeamCity构建配置应该由给定的业务逻辑组成,而不是手工组成。Kotlin DSL确实非常符合我们的需要,所以我很快就编写了一个.KTS脚本。到目前为止,我唯一的问题是FTP上传步骤,即密码参数。我所有输入密码的尝试都以FTP 503错误结束 像这样:TeamCity,KotlinDSL:如何传递FTP密码,kotlin,ftp,passwords,teamcity,Kotlin,Ftp,Passwords,Teamcity,最近,我遇到了这样一种情况,我们的TeamCity构建配置应该由给定的业务逻辑组成,而不是手工组成。Kotlin DSL确实非常符合我们的需要,所以我很快就编写了一个.KTS脚本。到目前为止,我唯一的问题是FTP上传步骤,即密码参数。我所有输入密码的尝试都以FTP 503错误结束 像这样: param("jetbrains.buildServer.deployer.username", "abc") param("jetbrains.buildServer.deployer.password",
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脚本中的%parameter%传递任意密码?当您需要将密码添加到版本化设置中而不是通过TeamCity UI时(例如,使用基于Kotlin的DSL添加设置),您需要将密码添加到TeamCity,并获取相应的令牌以在设置中使用。可以通过Project | Actions菜单中的Generate token for password action生成令牌 此时,项目层次结构无法继承密码。如果项目中的设置VCS根、OAuth连接、云配置文件需要密码,则为该密码生成的令牌只能在此项目中使用。例如,不可能获取生成的令牌并在子项目中使用类似的设置。在这种情况下应该生成一个新的令牌。如果需要在嵌套项目中使用一个安全值,请考虑将一个带有安全值的A添加到嵌套项目中的参数中。 另一种生成令牌的方法是
mvn -Dtext="mysecret" org.jetbrains.teamcity:teamcity-configs-maven-plugin:scramble