in rake-runner-agent/src/jetbrains/buildServer/agent/feature/RubyEnvConfiguratorService.java [46:97]
public void canStart(@NotNull final BuildRunnerContext context) throws RunBuildException {
// check if feature is enabled
final Collection<AgentBuildFeature> features =
context.getBuild().getBuildFeaturesOfType(RubyEnvConfiguratorConstants.RUBY_ENV_CONFIGURATOR_FEATURE_TYPE);
if (features.isEmpty()) {
return;
}
final Map<String, String> featureParameters = features.iterator().next().getParameters();
final RubyEnvConfiguratorConfiguration configuration = new RubyEnvConfiguratorConfiguration(featureParameters);
RVMPathsSettings.getInstanceEx().initialize(context.getBuildParameters().getEnvironmentVariables());
RbEnvPathsSettings.getInstance().initialize(context.getBuildParameters().getEnvironmentVariables());
final SharedParams sharedParams = new SharedParams();
// Configure runner parameters
configureSharedParameters(configuration, sharedParams);
sharedParams.applyToContext(context);
final RubySdk sdk;
// validate params:
try {
validateConfiguratorParams(configuration);
} catch (RakeTasksBuildService.InvalidConfigurationException e) {
if (configuration.isShouldFailBuildIfNoSdkFound() || !e.isCanBeIgnored()) {
// fail build
throw new RunBuildException(e.getMessage());
}
}
// try to create sdk, it will validate paths
try {
sdk = RubySDKUtil.createAndSetupSdk(context.getRunnerParameters(), context);
} catch (RakeTasksBuildService.MyBuildFailureException e) {
if (configuration.isShouldFailBuildIfNoSdkFound() || !e.isCanBeIgnored()) {
// fail build
throw new RunBuildException(e.getMessage());
}
// else just show warning and quit:
context.getBuild().getBuildLogger().warning(e.getMessage());
return;
}
// validation has passed. let's path environment
final EnvironmentPatchableMap newEnv = patchRunnerEnvironment(context, sdk, configuration, sharedParams);
sharedParams.applyToContext(context);
if (sdk instanceof RVMRCBasedRubySdkImpl) {
RVMRCBasedRubySdkImpl.cache(sdk, newEnv, ((RVMRCBasedRubySdkImpl)sdk).getPathToRVMRCFolder());
}
}