You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 10:30:52