TeamCity无法将credentialsJSON密码传入commitStatusPublisher(Bitbucket Server)
解决旧版commitStatusPublisher无法解析credentialsJSON参数的问题
针对旧版commitStatusPublisher插件无法自动转换credentialsJSON格式密码参数的问题,你可以尝试以下几种适配方案:
方案1:直接传入credentialsJSON原始令牌值
既然插件无法自动解析参数转换后的内容,你可以直接将credentialsJSON:xxxx格式的令牌字符串赋值给password字段,TeamCity运行时会自动识别并解析这个令牌:
import jetbrains.buildServer.configs.kotlin.v2019_2.* import jetbrains.buildServer.configs.kotlin.v2019_2.buildFeatures.commitStatusPublisher params { password("env.mypass", "credentialsJSON:8420d5dc-1d32-4f9e-a74d-c9444be05c23", display = ParameterDisplay.HIDDEN) } features { commitStatusPublisher { publisher = bitbucketServer { url = "https://bitbucket.domain.com/" userName = "user" // 直接使用credentialsJSON令牌字符串 password = "credentialsJSON:8420d5dc-1d32-4f9e-a74d-c9444be05c23" } } }
方案2:用参数引用语法传递
如果想复用已定义的参数,避免重复编写令牌字符串,可以使用TeamCity的参数引用语法%env.mypass%,旧版插件通常支持这种方式:
import jetbrains.buildServer.configs.kotlin.v2019_2.* import jetbrains.buildServer.configs.kotlin.v2019_2.buildFeatures.commitStatusPublisher params { password("env.mypass", "credentialsJSON:8420d5dc-1d32-4f9e-a74d-c9444be05c23", display = ParameterDisplay.HIDDEN) } features { commitStatusPublisher { publisher = bitbucketServer { url = "https://bitbucket.domain.com/" userName = "user" // 使用参数引用语法 password = "%env.mypass%" } } }
方案3:提取参数值到独立变量
如果需要将密码提取为单独变量,有两种实现方式:
方式一:直接定义变量存储令牌
import jetbrains.buildServer.configs.kotlin.v2019_2.* import jetbrains.buildServer.configs.kotlin.v2019_2.buildFeatures.commitStatusPublisher // 定义变量存储credentialsJSON令牌 val pass = "credentialsJSON:8420d5dc-1d32-4f9e-a74d-c9444be05c23" params { password("env.mypass", pass, display = ParameterDisplay.HIDDEN) } features { commitStatusPublisher { publisher = bitbucketServer { url = "https://bitbucket.domain.com/" userName = "user" password = pass } } }
方式二:从参数对象中获取原始值
import jetbrains.buildServer.configs.kotlin.v2019_2.* import jetbrains.buildServer.configs.kotlin.v2019_2.buildFeatures.commitStatusPublisher // 先定义参数对象 val myPassParam = password("env.mypass", "credentialsJSON:8420d5dc-1d32-4f9e-a74d-c9444be05c23", display = ParameterDisplay.HIDDEN) params { add(myPassParam) } features { commitStatusPublisher { publisher = bitbucketServer { url = "https://bitbucket.domain.com/" userName = "user" // 从参数对象中获取原始令牌值 password = myPassParam.value } } }
以上方法均能保留TeamCity令牌格式,同时适配旧版commitStatusPublisher插件的参数解析逻辑。
内容的提问来源于stack exchange,提问作者Sandzhaj
相关产品推荐
相关产品推荐

