我正在开发一个带有标准服务器和代理端的Teamcity插件。 在服务器端,我有一个管理页面,用户输入一些参数,然后用
保存CustomSettingsManager.getCustomSettings(pluginDescriptor).setValue(ATT,value)
我的问题是如何在插件端获取这些已保存的值?
我使用的是AgentLifeCycleAdapter
,因此我有AgentRunningBuild
和BuildRunnerContext
等对象,但我找不到任何内容来获取插件保存的参数。
答案 0 :(得分:1)
我找到的解决方案是创建一个AbstractBuildParametersProvider
,用于从CustomSettingsManager
收集信息,并将提供作为参数添加到构建中。
public class SettingsParameterProvider extends AbstractBuildParametersProvider {
private final CustomSettingsManager customSettingsManager;
private final PluginDescriptor pluginDescriptor;
public SettingsParameterProvider(@NotNull CustomSettingsManager settingsManager,
@NotNull PluginDescriptor descriptor) {
this.customSettingsManager = settingsManager;
this.pluginDescriptor = descriptor;
}
@Override
public Map<String, String> getParameters(SBuild build, boolean emulationMode) {
return ServerSettingsManager
.loadAsMap(customSettingsManager.getCustomSettings(pluginDescriptor));
}
}
答案 1 :(得分:0)
之前对我有用的是致电((AgentRunningBuild) build).getBuildFeaturesOfType(MY_PLUGIN)
。这将返回AgentBuildFeature
个对象的集合,您可以在每个对象上调用feature.getParameters()
。
示例here。