in teamcity-kubernetes-plugin-agent/src/main/java/jetbrains/buildServer/clouds/kubernetes/KubeAgentConfigurationProvider.java [19:84]
public KubeAgentConfigurationProvider(@NotNull EventDispatcher<AgentLifeCycleListener> agentEvents,
@NotNull final BuildAgentConfigurationEx agentConfigurationEx) {
LOG.info("Initializing Kube Provider...");
agentEvents.addListener(new AgentLifeCycleAdapter() {
@Override
public void afterAgentConfigurationLoaded(@NotNull BuildAgent agent) {
super.afterAgentConfigurationLoaded(agent);
final Map<String, String> env = System.getenv();
final String providedServerUrl = env.get(KubeContainerEnvironment.SERVER_URL);
if (StringUtil.isNotEmpty(providedServerUrl)) {
LOG.info("Provided TeamCity Server URL: " + providedServerUrl);
agentConfigurationEx.setServerUrl(providedServerUrl);
} else {
LOG.info("TeamCity Server URL was not provided. The instance wasn't started using TeamCity Kube integration.");
return;
}
final String profileId = env.get(KubeContainerEnvironment.PROFILE_ID);
if (StringUtil.isNotEmpty(profileId)) {
LOG.info("Provided Profile Id: " + profileId);
agentConfigurationEx.addConfigurationParameter(KubeContainerEnvironment.REQUIRED_PROFILE_ID_CONFIG_PARAM, profileId);
} else {
LOG.info("Profile Id was not provided. The instance wasn't started using TeamCity Kube integration.");
return;
}
final String instanceName = env.get(KubeContainerEnvironment.INSTANCE_NAME);
if (StringUtil.isNotEmpty(instanceName)) {
LOG.info("Setting instance name to " + instanceName);
agentConfigurationEx.setName(instanceName);
} else {
LOG.warn("Could not find environment variable " + KubeContainerEnvironment.INSTANCE_NAME);
}
final String cloudInstanceHash = env.get(KubeContainerEnvironment.STARTING_INSTANCE_ID);
if (StringUtil.isNotEmpty(cloudInstanceHash)) {
agentConfigurationEx.addConfigurationParameter(STARTING_INSTANCE_ID_PARAM, cloudInstanceHash);
} else {
LOG.warn("Could not find environment variable " + KubeContainerEnvironment.STARTING_INSTANCE_ID + ", the server may not be able to authorize this agent");
}
for (Map.Entry<String, String> entry : env.entrySet()) {
final String key = entry.getKey();
final String value = entry.getValue();
if (key.startsWith(TEAMCITY_KUBERNETES_PROVIDED_PREFIX)) {
LOG.info("prop( " + key + ") : " + value);
final String extractedKey = key.substring(TEAMCITY_KUBERNETES_PROVIDED_PREFIX.length());
agentConfigurationEx.addConfigurationParameter(extractedKey, value);
agentConfigurationEx.addConfigurationParameter(envToParam(extractedKey), value);
}
}
}
@Override
public void buildStarted(@NotNull AgentRunningBuild runningBuild) {
// remove the starting instance id env variable assuming that we no longer need it because the build has already started (which means the agent was authorized)
agentConfigurationEx.removeConfigurationParameter(KubeContainerEnvironment.STARTING_INSTANCE_ID);
final String instanceId = runningBuild.getSharedBuildParameters().getEnvironmentVariables().get(KubeContainerEnvironment.STARTING_INSTANCE_ID);
if (instanceId != null) {
// mark instance id as password to avoid showing it in plain text on the build parameters tab and in the build log
runningBuild.getPasswordReplacer().addPassword(instanceId);
}
}
});
}