如何在代理端提供Teamcity插件的服务器管理员级别配置?

时间:2017-02-08 01:17:36

标签: teamcity

我正在开发一个带有标准服务器和代理端的Teamcity插件。 在服务器端,我有一个管理页面,用户输入一些参数,然后用

保存
CustomSettingsManager.getCustomSettings(pluginDescriptor).setValue(ATT,value)

我的问题是如何在插件端获取这些已保存的值?

我使用的是AgentLifeCycleAdapter,因此我有AgentRunningBuildBuildRunnerContext等对象,但我找不到任何内容来获取插件保存的参数。

2 个答案:

答案 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