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 intPOST_PROCESSING_TASK_TIMEOUTstatic StringTEAMCITY_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)voidapplyConfigurationToAgent()Applies provided parameters to the agent configuration (see {@link {@link BuildAgentConfiguration }}), including configuration parameters, system properties, environment variables.voidapplyConfigurationToAgent(Map<String,String> configuration)Loads the configuration parameters from plugins intoBuildAgentConfigurationvoidawaitUpgradeFinished()booleanbuildDetachedFromAgent(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 itbooleanbuildFinished(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.booleanbuildInterrupted(String buildId)Same asAgentLogListener.buildInterrupted(String, String, boolean)with parameters: build, "", truebooleanbuildInterrupted(String buildId, String comment, boolean needRequeue)voidcheckPropertiesChanged()booleandoUpgrade()voidensureIdle()Blocks until currently running build finishes and all build messages are sent to the servervoidensureIdleAndShutdown()AgentConfigurationStatePersistenceManagergetAgentConfigurationStatePersistence()StringgetAgentKindInLowerCase()StringgetBuildId()Current build idBuildAgentConfigurationExgetConfiguration()Returns agent configurationIntegergetId()Agent id.BuildProgressLoggergetLogger()StringgetOperatingSystemName()StringgetOwnAddress()StringgetPluginsSignature()CommunicationProtocolgetProtocol()Returns the protocol using for server-to-agent communication, null if agent is not registered on serverCollection<AgentBuildRunner>getRunners()Returns array of registered runnersBuildRunnerRegistrygetRunnersRegistry()BuildRunAgentStategetRunningState()ServerMonitorgetServerMonitor()ServergetServerProxy()StringgetVersion()XmlRpcHandlerManagergetXmlRpcHandlerManager()XML-RPC handler manager to manage XML-RPC handlersvoidinit(String[] args)Deprecated.voidinit(AgentCommandlineArguments args)booleanisAgentWebServerRunning()booleanisAtLeastOneUpgradeStarted()booleanisBuildFailing(String buildId)Checks for build status on the build server.booleanisRegistered()booleanisRegisterInProgress()booleanisRunning()This method will take lock inAgentLogProxyImpl.PENDING_COMMANDS_LOCKbooleanisShutdownFinished()booleanisShutdownScheduled()AgentUpdateInfoloadAgentUpdateInfo()booleanlog(String buildId, Vector messagesXml)Called from running subprocesses via xmlrpc.voidparseCommandLineAndFillConfiguration(AgentCommandlineArguments args)booleanping(int agentId)Deprecated.is called only by old servers, new servers callping2()Stringping2()voidpreInit(AgentCommandlineArguments args)booleanregisterOnBuildServer(String buildId)Register on servervoidrestart()Restarts build agent process.voidrestartOnError(String logMessage, Throwable error)Restarts build agent process due to critical error.StringrunBuild(String serializedAgentBuild)Starts a build on agentAgentBuildResultrunBuild(AgentBuild agentBuild)Starts a build on agentvoidrunWithDisabledFileWatcher(Runnable action)voidsetLogProxy(AgentLogProxy logProxy)voidsetServerCommunicationProtocolResolver(IServerCommunicationProtocolResolver serverCommunicationProtocolResolver)booleanshutdown()immediate shutdown, running build will be terminatedvoidshutdownAgentWebServer()voidshutdownAndWait()voidshutdownInternal(boolean killBuild, boolean callSystemExit, AgentExitCode exitCode)booleanshutdownWaitForBuild()shutdown after build has finishedvoidstart()starts agentvoidstartAgentWebServer()booleanstopBuild()Notifies currently running build to stopbooleanstopBuild(BuildInterruptReason reason)Notifies currently running build to stop with the specified reasonvoidunregisterFromBuildServer()Disconnect build agent from servervoidupdateBuildAgentParametersOnServer()booleanupgrade(Vector pluginNames)Initiates build agent upgrade.voidwaitForRegistrationToFinish()
-
-
-
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:
getAgentKindInLowerCasein interfaceAgent
-
stopBuild
public boolean stopBuild()
Description copied from interface:AgentNotifies currently running build to stop
-
stopBuild
public boolean stopBuild(@NotNull BuildInterruptReason reason)Description copied from interface:BuildAgentExNotifies currently running build to stop with the specified reason- Specified by:
stopBuildin interfaceBuildAgentEx
-
upgrade
public boolean upgrade(Vector pluginNames)
Description copied from interface:AgentInitiates 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:
isRegisteredin 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:AgentStarts a build on agent
-
runBuild
@NotNull public AgentBuildResult runBuild(@NotNull AgentBuild agentBuild)
Description copied from interface:BuildAgentStarts a build on agent- Specified by:
runBuildin interfaceBuildAgent
-
isBuildFailing
public boolean isBuildFailing(String buildId) throws InterruptedException
Description copied from interface:AgentLogListenerChecks 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:
isBuildFailingin 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:AgentLogListenerSame asAgentLogListener.buildInterrupted(String, String, boolean)with parameters: build, "", true- Specified by:
buildInterruptedin 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:
buildInterruptedin interfaceAgentLogListenercomment- 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:
buildFinishedin 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:AgentLogListenerIndicates that the build tasks are finished on the agent but the build itself should continue until some external process finishes it- Specified by:
buildDetachedFromAgentin 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:
login 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:BuildAgentstarts agent- Specified by:
startin interfaceBuildAgent
-
applyConfigurationToAgent
public void applyConfigurationToAgent()
Description copied from interface:BuildAgentExApplies 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:
applyConfigurationToAgentin interfaceBuildAgentEx
-
applyConfigurationToAgent
public void applyConfigurationToAgent(Map<String,String> configuration)
Description copied from interface:BuildAgentExLoads the configuration parameters from plugins intoBuildAgentConfiguration- Specified by:
applyConfigurationToAgentin interfaceBuildAgentEx- Parameters:
configuration- configuration parameters to load
-
getId
public Integer getId()
Description copied from interface:BuildAgentAgent id.- Specified by:
getIdin interfaceBuildAgent- Returns:
- Agent id
-
getBuildId
@Nullable public String getBuildId()
Description copied from interface:BuildAgentCurrent build id- Specified by:
getBuildIdin interfaceAgent- Specified by:
getBuildIdin interfaceBuildAgent- Returns:
- Current build id
-
getRunningState
@Nullable public BuildRunAgentState getRunningState()
- Specified by:
getRunningStatein interfaceBuildAgentEx
-
getVersion
@NotNull public String getVersion()
- Specified by:
getVersionin interfaceBuildAgentEx
-
getPluginsSignature
@NotNull public String getPluginsSignature()
- Specified by:
getPluginsSignaturein interfaceBuildAgentEx
-
loadAgentUpdateInfo
@Nullable public AgentUpdateInfo loadAgentUpdateInfo()
-
getOperatingSystemName
@NotNull public String getOperatingSystemName()
- Specified by:
getOperatingSystemNamein interfaceBuildAgentEx
-
shutdown
public boolean shutdown()
Description copied from interface:BuildAgentimmediate shutdown, running build will be terminated- Specified by:
shutdownin interfaceBuildAgent- Returns:
- true
-
shutdownWaitForBuild
public boolean shutdownWaitForBuild()
Description copied from interface:BuildAgentshutdown after build has finished- Specified by:
shutdownWaitForBuildin 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:
initin interfaceBuildAgent
-
preInit
public void preInit(@NotNull AgentCommandlineArguments args)- Specified by:
preInitin interfaceBuildAgentEx
-
init
public void init(@NotNull AgentCommandlineArguments args)- Specified by:
initin interfaceBuildAgentEx
-
parseCommandLineAndFillConfiguration
public void parseCommandLineAndFillConfiguration(AgentCommandlineArguments args)
-
getServerProxy
@Nullable public Server getServerProxy()
- Specified by:
getServerProxyin interfaceBuildAgent- Returns:
- remote server proxy
-
getConfiguration
public BuildAgentConfigurationEx getConfiguration()
Description copied from interface:BuildAgentExReturns agent configuration- Specified by:
getConfigurationin interfaceBuildAgent- Specified by:
getConfigurationin interfaceBuildAgentEx- Returns:
- agent configuration
-
getRunners
public Collection<AgentBuildRunner> getRunners()
Description copied from interface:BuildAgentReturns array of registered runners- Specified by:
getRunnersin interfaceBuildAgent- Returns:
- array of registered runners
-
startAgentWebServer
public void startAgentWebServer()
-
getXmlRpcHandlerManager
public XmlRpcHandlerManager getXmlRpcHandlerManager()
Description copied from interface:BuildAgentXML-RPC handler manager to manage XML-RPC handlers- Specified by:
getXmlRpcHandlerManagerin interfaceBuildAgent- Returns:
- XML-RPC handler manager to register/unregister handlers
-
updateBuildAgentParametersOnServer
public void updateBuildAgentParametersOnServer()
- Specified by:
updateBuildAgentParametersOnServerin interfaceBuildAgentEx
-
getProtocol
@Nullable public CommunicationProtocol getProtocol()
Description copied from interface:BuildAgentExReturns the protocol using for server-to-agent communication, null if agent is not registered on server- Specified by:
getProtocolin interfaceBuildAgentEx
-
registerOnBuildServer
public boolean registerOnBuildServer(String buildId)
Description copied from interface:BuildAgentRegister on server- Specified by:
registerOnBuildServerin interfaceAgent- Specified by:
registerOnBuildServerin interfaceBuildAgent- Parameters:
buildId- running build id- Returns:
- success flag
-
isRegisterInProgress
public boolean isRegisterInProgress()
-
waitForRegistrationToFinish
public void waitForRegistrationToFinish() throws InterruptedException- Specified by:
waitForRegistrationToFinishin interfaceAgent- Throws:
InterruptedException
-
runWithDisabledFileWatcher
public void runWithDisabledFileWatcher(@NotNull Runnable action)
-
getOwnAddress
@Nullable public String getOwnAddress()
- Specified by:
getOwnAddressin interfaceBuildAgentEx
-
getAgentConfigurationStatePersistence
public AgentConfigurationStatePersistenceManager getAgentConfigurationStatePersistence()
-
unregisterFromBuildServer
public void unregisterFromBuildServer()
Description copied from interface:BuildAgentDisconnect build agent from server- Specified by:
unregisterFromBuildServerin interfaceBuildAgent
-
isRunning
public boolean isRunning()
This method will take lock inAgentLogProxyImpl.PENDING_COMMANDS_LOCK- Specified by:
isRunningin interfaceBuildAgent- Returns:
- true if build is running
-
ensureIdle
public void ensureIdle()
Description copied from interface:BuildAgentBlocks until currently running build finishes and all build messages are sent to the server- Specified by:
ensureIdlein interfaceAgent- Specified by:
ensureIdlein interfaceBuildAgent
-
ensureIdleAndShutdown
public void ensureIdleAndShutdown()
- Specified by:
ensureIdleAndShutdownin 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:
getServerMonitorin interfaceBuildAgentEx
-
restart
public void restart()
Description copied from interface:BuildAgentExRestarts build agent process.- Specified by:
restartin interfaceBuildAgentEx
-
restartOnError
@Contract("_ -> exit") public void restartOnError(@NotNull String logMessage, @NotNull Throwable error)Description copied from interface:BuildAgentExRestarts build agent process due to critical error.- Specified by:
restartOnErrorin interfaceBuildAgentEx
-
checkPropertiesChanged
public void checkPropertiesChanged()
-
setServerCommunicationProtocolResolver
public void setServerCommunicationProtocolResolver(IServerCommunicationProtocolResolver serverCommunicationProtocolResolver)
-
-