6 comments
Comment actions Permalink

I've hooked using BuildServerAdapater and registered for callbacks through SBuildServer passed in through the constructor.

I've hooked into the buildStarted event, except I've run into an issue where the user can override this value by customizing the build properties for a run.  Is there anyplace to hook into to prevent this action, or later in the process after the user has passed in build properties?


@Override
    public void buildStarted(SRunningBuild build)
    {
       
       
   
        TriggeredBy trigger = build.getTriggeredBy();
        String triggerString = trigger.getAsString();
       
        if(trigger.isTriggeredByUser())
        {
            triggerString = "User:" + trigger.getUser().getUsername();
        }
       
        SimpleParameter param = new SimpleParameter("system.<corp>.TriggeredBy",triggerString);
       
        build.getBuildType().addBuildParameter(param);
       
       
        super.buildStarted(build);
    }

0
Comment actions Permalink

There is a special extension point for tasks like these: jetbrains.buildServer.serverSide.ParametersPreprocessor
This extension is called before build parameters are sent to an agent. You should create your own implementation of this interface and register as Spring bean.

0
Comment actions Permalink

I can't get a ParametersPreprocessor to be registered correctly using Spring and the extenstions documentation references ExtentionsHolder which isn't in the JavaDoc's, so I can't figure out the correct arguments to pass to registerExtentions to do it manually myself.

Below is the current code.


package com.vesta.TeamCity.Extensions;

import java.util.Map;

import jetbrains.buildServer.serverSide.ParametersPreprocessor;
import jetbrains.buildServer.serverSide.SRunningBuild;

public class VestaParametersPreprocessor implements ParametersPreprocessor
{
    @Override
    public void fixRunBuildParameters(SRunningBuild arg0,
            Map<String, String> arg1, Map<String, String> arg2)
    {
        arg2.put(VestaParameters.paramName, VestaParameters.convertToTriggeredByName(arg0.getTriggeredBy()));       
    }
}




<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

<beans default-autowire="constructor">
    <bean     id="VestaParameters"
            
            init-method="register"/>   
    <bean id="VestaParametersPreprocessor"
            />   
</beans>

0
Comment actions Permalink

This is strange, this code should work just fine. Moreover our own extensions are loaded the same way. What version of TeamCity do you use?

0
Comment actions Permalink

Could you please send source code of your plugin to teamcity-feedback [at] jetbrains.com?

0

Please sign in to leave a comment.