Package jetbrains.buildServer.agent.impl
Class BuildAgentImpl
- java.lang.Object
-
- jetbrains.buildServer.agent.impl.BuildAgentImpl
-
- All Implemented Interfaces:
Agent
,BuildAgent
,BuildAgentEx
,Agent
,AgentLogListener
public class BuildAgentImpl extends Object implements BuildAgentEx, Agent
- Author:
- Kir
-
-
Field Summary
Fields Modifier and Type Field Description static int
POST_PROCESSING_TASK_TIMEOUT
static String
TEAMCITY_AGENT_DUMP_ON_OOM
-
Fields inherited from interface jetbrains.buildServer.agentServer.Agent
AGENT_PLUGIN_NAME_FILTER, AGENT_PLUGIN_NAMES_FILTER, AGENT_PLUGIN_PART_NAME, AGENT_PLUGINS_DIR, AGENT_UPDATE_CONTENTS_PATH, AGENT_UPDATE_CONTENTS_PATH_NEW, AGENT_UPDATE_CONTENTS_XML, BUILD_AGENT, DISTRIBUTION_ARCH_NAME, FULL_AGENT_FILE_NAME, UPDATE_PATH
-
-
Constructor Summary
Constructors Constructor Description BuildAgentImpl(BuildAgentConfigurationEx configuration, EventDispatcher<AgentLifeCycleListener> agentLifeCycleDispatcher, ExtensionHolder agentExtensionsLocator, BuildRunnerRegistryEx runnersRegistry, AgentDetailsFactory detailsFactory, IServerCommunicationProtocolResolver serverCommunicationProtocolResolver, SSLTrustStoreProvider sslTrustStoreProvider, AgentConfigurationStatePersistenceManager agentConfigurationStatePersistence, AgentOperationModeHolder agentOperationModeHolder)
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description AgentLogProxy
_getLogProxy()
void
_setId(Integer id)
void
_setRunBuildCommandListener(Action<AgentBuild> action)
void
applyConfigurationToAgent()
Applies provided parameters to the agent configuration (see {@link {@link BuildAgentConfiguration }}), including configuration parameters, system properties, environment variables.void
applyConfigurationToAgent(Map<String,String> configuration)
Loads the configuration parameters from plugins intoBuildAgentConfiguration
void
awaitUpgradeFinished()
boolean
buildDetachedFromAgent(String buildId, String lastStepId)
Indicates that the build tasks are finished on the agent but the build itself should continue until some external process finishes itboolean
buildFinished(String buildId, Date finishDate, boolean buildFailed)
Method is synchronized to disallow situations when server receives buildFinished event and sends run build on this agent before method releaseBuildData is called.boolean
buildInterrupted(String buildId)
Same asAgentLogListener.buildInterrupted(String, String, boolean)
with parameters: build, "", trueboolean
buildInterrupted(String buildId, String comment, boolean needRequeue)
void
checkPropertiesChanged()
boolean
doUpgrade()
void
ensureIdle()
Blocks until currently running build finishes and all build messages are sent to the servervoid
ensureIdleAndShutdown()
AgentConfigurationStatePersistenceManager
getAgentConfigurationStatePersistence()
String
getAgentKindInLowerCase()
String
getBuildId()
Current build idBuildAgentConfigurationEx
getConfiguration()
Returns agent configurationInteger
getId()
Agent id.BuildProgressLogger
getLogger()
String
getOperatingSystemName()
String
getOwnAddress()
String
getPluginsSignature()
CommunicationProtocol
getProtocol()
Returns the protocol using for server-to-agent communication, null if agent is not registered on serverCollection<AgentBuildRunner>
getRunners()
Returns array of registered runnersBuildRunnerRegistry
getRunnersRegistry()
BuildRunAgentState
getRunningState()
ServerMonitor
getServerMonitor()
Server
getServerProxy()
String
getVersion()
XmlRpcHandlerManager
getXmlRpcHandlerManager()
XML-RPC handler manager to manage XML-RPC handlersvoid
init(String[] args)
Deprecated.void
init(AgentCommandlineArguments args)
boolean
isAgentWebServerRunning()
boolean
isAtLeastOneUpgradeStarted()
boolean
isBuildFailing(String buildId)
Checks for build status on the build server.boolean
isRegistered()
boolean
isRegisterInProgress()
boolean
isRunning()
This method will take lock inAgentLogProxyImpl.PENDING_COMMANDS_LOCK
boolean
isShutdownFinished()
boolean
isShutdownScheduled()
AgentUpdateInfo
loadAgentUpdateInfo()
boolean
log(String buildId, Vector messagesXml)
Called from running subprocesses via xmlrpc.void
parseCommandLineAndFillConfiguration(AgentCommandlineArguments args)
boolean
ping(int agentId)
Deprecated.is called only by old servers, new servers callping2()
String
ping2()
void
preInit(AgentCommandlineArguments args)
boolean
registerOnBuildServer(String buildId)
Register on servervoid
restart()
Restarts build agent process.void
restartOnError(String logMessage, Throwable error)
Restarts build agent process due to critical error.String
runBuild(String serializedAgentBuild)
Starts a build on agentAgentBuildResult
runBuild(AgentBuild agentBuild)
Starts a build on agentvoid
runWithDisabledFileWatcher(Runnable action)
void
setLogProxy(AgentLogProxy logProxy)
void
setServerCommunicationProtocolResolver(IServerCommunicationProtocolResolver serverCommunicationProtocolResolver)
boolean
shutdown()
immediate shutdown, running build will be terminatedvoid
shutdownAgentWebServer()
void
shutdownAndWait()
void
shutdownInternal(boolean killBuild, boolean callSystemExit, AgentExitCode exitCode)
boolean
shutdownWaitForBuild()
shutdown after build has finishedvoid
start()
starts agentvoid
startAgentWebServer()
boolean
stopBuild()
Notifies currently running build to stopboolean
stopBuild(BuildInterruptReason reason)
Notifies currently running build to stop with the specified reasonvoid
unregisterFromBuildServer()
Disconnect build agent from servervoid
updateBuildAgentParametersOnServer()
boolean
upgrade(Vector pluginNames)
Initiates build agent upgrade.void
waitForRegistrationToFinish()
-
-
-
Field Detail
-
TEAMCITY_AGENT_DUMP_ON_OOM
public static final String TEAMCITY_AGENT_DUMP_ON_OOM
- See Also:
- Constant Field Values
-
POST_PROCESSING_TASK_TIMEOUT
public static final int POST_PROCESSING_TASK_TIMEOUT
-
-
Constructor Detail
-
BuildAgentImpl
public BuildAgentImpl(@NotNull BuildAgentConfigurationEx configuration, @NotNull EventDispatcher<AgentLifeCycleListener> agentLifeCycleDispatcher, @NotNull ExtensionHolder agentExtensionsLocator, @NotNull BuildRunnerRegistryEx runnersRegistry, @NotNull AgentDetailsFactory detailsFactory, @NotNull IServerCommunicationProtocolResolver serverCommunicationProtocolResolver, @NotNull SSLTrustStoreProvider sslTrustStoreProvider, @NotNull AgentConfigurationStatePersistenceManager agentConfigurationStatePersistence, @NotNull AgentOperationModeHolder agentOperationModeHolder)
-
-
Method Detail
-
setLogProxy
public void setLogProxy(@NotNull AgentLogProxy logProxy)
-
getAgentKindInLowerCase
@NotNull public String getAgentKindInLowerCase()
- Specified by:
getAgentKindInLowerCase
in interfaceAgent
-
stopBuild
public boolean stopBuild()
Description copied from interface:Agent
Notifies currently running build to stop
-
stopBuild
public boolean stopBuild(@NotNull BuildInterruptReason reason)
Description copied from interface:BuildAgentEx
Notifies currently running build to stop with the specified reason- Specified by:
stopBuild
in interfaceBuildAgentEx
-
upgrade
public boolean upgrade(Vector pluginNames)
Description copied from interface:Agent
Initiates build agent upgrade.
-
doUpgrade
public boolean doUpgrade()
-
awaitUpgradeFinished
@TestOnly public void awaitUpgradeFinished() throws InterruptedException
- Throws:
InterruptedException
-
isAtLeastOneUpgradeStarted
@TestOnly public boolean isAtLeastOneUpgradeStarted()
-
isRegistered
public boolean isRegistered()
- Specified by:
isRegistered
in interfaceBuildAgentEx
-
ping
@Deprecated public boolean ping(int agentId)
Deprecated.is called only by old servers, new servers callping2()
-
getRunnersRegistry
@NotNull public BuildRunnerRegistry getRunnersRegistry()
-
runBuild
public String runBuild(@NotNull String serializedAgentBuild)
Description copied from interface:Agent
Starts a build on agent
-
runBuild
@NotNull public AgentBuildResult runBuild(@NotNull AgentBuild agentBuild)
Description copied from interface:BuildAgent
Starts a build on agent- Specified by:
runBuild
in interfaceBuildAgent
-
isBuildFailing
public boolean isBuildFailing(String buildId) throws InterruptedException
Description copied from interface:AgentLogListener
Checks for build status on the build server. The call is synchronous, it makes sure that previous logged messages are sent to the server.- Specified by:
isBuildFailing
in interfaceAgentLogListener
- Returns:
- true if build status on the server is failing
- Throws:
InterruptedException
- if action was removed from the queue for some reason, and could not be completed (for instance, build is obsolete)
-
buildInterrupted
public boolean buildInterrupted(String buildId)
Description copied from interface:AgentLogListener
Same asAgentLogListener.buildInterrupted(String, String, boolean)
with parameters: build, "", true- Specified by:
buildInterrupted
in interfaceAgentLogListener
- Parameters:
buildId
- - build id- Returns:
- - fake return type to conform XML-RPC requirements
-
buildInterrupted
public boolean buildInterrupted(String buildId, String comment, boolean needRequeue)
- Specified by:
buildInterrupted
in interfaceAgentLogListener
comment
- a comment to interrupt the build withneedRequeue
- if true, build should be re-added to the build queue- Returns:
- fake value, to conform XML-RPC requirements
-
buildFinished
public boolean buildFinished(String buildId, Date finishDate, boolean buildFailed)
Method is synchronized to disallow situations when server receives buildFinished event and sends run build on this agent before method releaseBuildData is called.- Specified by:
buildFinished
in interfaceAgentLogListener
- Parameters:
buildId
- - build idfinishDate
- - finish datebuildFailed
- - build failed sign- Returns:
- - fake return type to conform XML-RPC requirements
-
buildDetachedFromAgent
public boolean buildDetachedFromAgent(String buildId, String lastStepId)
Description copied from interface:AgentLogListener
Indicates that the build tasks are finished on the agent but the build itself should continue until some external process finishes it- Specified by:
buildDetachedFromAgent
in interfaceAgentLogListener
- Parameters:
buildId
- - build idlastStepId
- - id of last step- Returns:
- - fake return type to conform XML-RPC requirements
-
log
public boolean log(String buildId, Vector messagesXml)
Called from running subprocesses via xmlrpc. We should deserialize, run through BuildMessagesTranslators, serialize and send to server using AgentLogProxy- Specified by:
log
in interfaceAgentLogListener
- Parameters:
buildId
- - build idmessagesXml
- - message in XML format- Returns:
- - returns value which indicates, whether this message was accepted by server; if false, no other messages with given buildId should be sent for corresponding buildId
-
getLogger
@NotNull public BuildProgressLogger getLogger()
-
start
public void start()
Description copied from interface:BuildAgent
starts agent- Specified by:
start
in interfaceBuildAgent
-
applyConfigurationToAgent
public void applyConfigurationToAgent()
Description copied from interface:BuildAgentEx
Applies provided parameters to the agent configuration (see {@link {@link BuildAgentConfiguration }}), including configuration parameters, system properties, environment variables. Existing parameters with the same names are not overwritten The method may reuse the previously probed parameters, or it will call plugins to provide their parameters.- Specified by:
applyConfigurationToAgent
in interfaceBuildAgentEx
-
applyConfigurationToAgent
public void applyConfigurationToAgent(Map<String,String> configuration)
Description copied from interface:BuildAgentEx
Loads the configuration parameters from plugins intoBuildAgentConfiguration
- Specified by:
applyConfigurationToAgent
in interfaceBuildAgentEx
- Parameters:
configuration
- configuration parameters to load
-
getId
public Integer getId()
Description copied from interface:BuildAgent
Agent id.- Specified by:
getId
in interfaceBuildAgent
- Returns:
- Agent id
-
getBuildId
@Nullable public String getBuildId()
Description copied from interface:BuildAgent
Current build id- Specified by:
getBuildId
in interfaceAgent
- Specified by:
getBuildId
in interfaceBuildAgent
- Returns:
- Current build id
-
getRunningState
@Nullable public BuildRunAgentState getRunningState()
- Specified by:
getRunningState
in interfaceBuildAgentEx
-
getVersion
@NotNull public String getVersion()
- Specified by:
getVersion
in interfaceBuildAgentEx
-
getPluginsSignature
@NotNull public String getPluginsSignature()
- Specified by:
getPluginsSignature
in interfaceBuildAgentEx
-
loadAgentUpdateInfo
@Nullable public AgentUpdateInfo loadAgentUpdateInfo()
-
getOperatingSystemName
@NotNull public String getOperatingSystemName()
- Specified by:
getOperatingSystemName
in interfaceBuildAgentEx
-
shutdown
public boolean shutdown()
Description copied from interface:BuildAgent
immediate shutdown, running build will be terminated- Specified by:
shutdown
in interfaceBuildAgent
- Returns:
- true
-
shutdownWaitForBuild
public boolean shutdownWaitForBuild()
Description copied from interface:BuildAgent
shutdown after build has finished- Specified by:
shutdownWaitForBuild
in interfaceBuildAgent
- Returns:
- true
-
shutdownAndWait
public void shutdownAndWait()
-
isShutdownScheduled
public boolean isShutdownScheduled()
-
isShutdownFinished
public boolean isShutdownFinished()
-
shutdownInternal
public void shutdownInternal(boolean killBuild, boolean callSystemExit, @NotNull AgentExitCode exitCode)
-
shutdownAgentWebServer
public void shutdownAgentWebServer()
-
isAgentWebServerRunning
public boolean isAgentWebServerRunning()
-
init
@Deprecated public void init(String[] args)
Deprecated.- Specified by:
init
in interfaceBuildAgent
-
preInit
public void preInit(@NotNull AgentCommandlineArguments args)
- Specified by:
preInit
in interfaceBuildAgentEx
-
init
public void init(@NotNull AgentCommandlineArguments args)
- Specified by:
init
in interfaceBuildAgentEx
-
parseCommandLineAndFillConfiguration
public void parseCommandLineAndFillConfiguration(AgentCommandlineArguments args)
-
getServerProxy
@Nullable public Server getServerProxy()
- Specified by:
getServerProxy
in interfaceBuildAgent
- Returns:
- remote server proxy
-
getConfiguration
public BuildAgentConfigurationEx getConfiguration()
Description copied from interface:BuildAgentEx
Returns agent configuration- Specified by:
getConfiguration
in interfaceBuildAgent
- Specified by:
getConfiguration
in interfaceBuildAgentEx
- Returns:
- agent configuration
-
getRunners
public Collection<AgentBuildRunner> getRunners()
Description copied from interface:BuildAgent
Returns array of registered runners- Specified by:
getRunners
in interfaceBuildAgent
- Returns:
- array of registered runners
-
startAgentWebServer
public void startAgentWebServer()
-
getXmlRpcHandlerManager
public XmlRpcHandlerManager getXmlRpcHandlerManager()
Description copied from interface:BuildAgent
XML-RPC handler manager to manage XML-RPC handlers- Specified by:
getXmlRpcHandlerManager
in interfaceBuildAgent
- Returns:
- XML-RPC handler manager to register/unregister handlers
-
updateBuildAgentParametersOnServer
public void updateBuildAgentParametersOnServer()
- Specified by:
updateBuildAgentParametersOnServer
in interfaceBuildAgentEx
-
getProtocol
@Nullable public CommunicationProtocol getProtocol()
Description copied from interface:BuildAgentEx
Returns the protocol using for server-to-agent communication, null if agent is not registered on server- Specified by:
getProtocol
in interfaceBuildAgentEx
-
registerOnBuildServer
public boolean registerOnBuildServer(String buildId)
Description copied from interface:BuildAgent
Register on server- Specified by:
registerOnBuildServer
in interfaceAgent
- Specified by:
registerOnBuildServer
in interfaceBuildAgent
- Parameters:
buildId
- running build id- Returns:
- success flag
-
isRegisterInProgress
public boolean isRegisterInProgress()
-
waitForRegistrationToFinish
public void waitForRegistrationToFinish() throws InterruptedException
- Specified by:
waitForRegistrationToFinish
in interfaceAgent
- Throws:
InterruptedException
-
runWithDisabledFileWatcher
public void runWithDisabledFileWatcher(@NotNull Runnable action)
-
getOwnAddress
@Nullable public String getOwnAddress()
- Specified by:
getOwnAddress
in interfaceBuildAgentEx
-
getAgentConfigurationStatePersistence
public AgentConfigurationStatePersistenceManager getAgentConfigurationStatePersistence()
-
unregisterFromBuildServer
public void unregisterFromBuildServer()
Description copied from interface:BuildAgent
Disconnect build agent from server- Specified by:
unregisterFromBuildServer
in interfaceBuildAgent
-
isRunning
public boolean isRunning()
This method will take lock inAgentLogProxyImpl.PENDING_COMMANDS_LOCK
- Specified by:
isRunning
in interfaceBuildAgent
- Returns:
- true if build is running
-
ensureIdle
public void ensureIdle()
Description copied from interface:BuildAgent
Blocks until currently running build finishes and all build messages are sent to the server- Specified by:
ensureIdle
in interfaceAgent
- Specified by:
ensureIdle
in interfaceBuildAgent
-
ensureIdleAndShutdown
public void ensureIdleAndShutdown()
- Specified by:
ensureIdleAndShutdown
in interfaceAgent
-
_getLogProxy
public AgentLogProxy _getLogProxy()
-
_setId
public void _setId(@Nullable Integer id)
-
_setRunBuildCommandListener
@TestOnly public void _setRunBuildCommandListener(Action<AgentBuild> action)
-
getServerMonitor
public ServerMonitor getServerMonitor()
- Specified by:
getServerMonitor
in interfaceBuildAgentEx
-
restart
public void restart()
Description copied from interface:BuildAgentEx
Restarts build agent process.- Specified by:
restart
in interfaceBuildAgentEx
-
restartOnError
@Contract("_ -> exit") public void restartOnError(@NotNull String logMessage, @NotNull Throwable error)
Description copied from interface:BuildAgentEx
Restarts build agent process due to critical error.- Specified by:
restartOnError
in interfaceBuildAgentEx
-
checkPropertiesChanged
public void checkPropertiesChanged()
-
setServerCommunicationProtocolResolver
public void setServerCommunicationProtocolResolver(IServerCommunicationProtocolResolver serverCommunicationProtocolResolver)
-
-