use of com.google.cloud.tools.jib.image.ImageReference in project jib by google.
the class BuildImageMojo method execute.
@Override
public void execute() throws MojoExecutionException, MojoFailureException {
validateParameters();
ProjectProperties projectProperties = new ProjectProperties(project, getLog());
if (mainClass == null) {
mainClass = projectProperties.getMainClassFromMavenJarPlugin();
if (mainClass == null) {
throwMojoExecutionExceptionWithHelpMessage(new MojoFailureException("Could not find main class specified in maven-jar-plugin"), "add a `mainClass` configuration to jib-maven-plugin");
}
}
SourceFilesConfiguration sourceFilesConfiguration = projectProperties.getSourceFilesConfiguration();
// Parses 'from' into image reference.
ImageReference baseImage = getBaseImageReference();
// Checks Maven settings for registry credentials.
session.getSettings().getServer(baseImage.getRegistry());
Map<String, Authorization> registryCredentials = new HashMap<>(2);
// Retrieves credentials for the base image registry.
Authorization baseImageRegistryCredentials = getRegistryCredentialsFromSettings(baseImage.getRegistry());
if (baseImageRegistryCredentials != null) {
registryCredentials.put(baseImage.getRegistry(), baseImageRegistryCredentials);
}
// Retrieves credentials for the target registry.
Authorization targetRegistryCredentials = getRegistryCredentialsFromSettings(registry);
if (targetRegistryCredentials != null) {
registryCredentials.put(registry, targetRegistryCredentials);
}
RegistryCredentials mavenSettingsCredentials = RegistryCredentials.from("Maven settings", registryCredentials);
ImageReference targetImageReference = ImageReference.of(registry, repository, tag);
ImageFormat imageFormatToEnum = ImageFormat.valueOf(imageFormat);
BuildConfiguration buildConfiguration = BuildConfiguration.builder(new MavenBuildLogger(getLog())).setBaseImage(baseImage).setTargetImage(targetImageReference).setCredentialHelperNames(credHelpers).setKnownRegistryCredentials(mavenSettingsCredentials).setMainClass(mainClass).setEnableReproducibleBuilds(enableReproducibleBuilds).setJvmFlags(jvmFlags).setEnvironment(environment).setTargetFormat(imageFormatToEnum.getManifestTemplateClass()).build();
// Uses a directory in the Maven build cache as the Jib cache.
Path cacheDirectory = Paths.get(project.getBuild().getDirectory(), CACHE_DIRECTORY_NAME);
if (!Files.exists(cacheDirectory)) {
try {
Files.createDirectory(cacheDirectory);
} catch (IOException ex) {
throw new MojoExecutionException("Could not create cache directory: " + cacheDirectory, ex);
}
}
Caches.Initializer cachesInitializer = Caches.newInitializer(cacheDirectory);
if (useOnlyProjectCache) {
cachesInitializer.setBaseCacheDirectory(cacheDirectory);
}
getLog().info("");
getLog().info("Pushing image as " + targetImageReference);
getLog().info("");
// TODO: Instead of disabling logging, have authentication credentials be provided
// Disables annoying Apache HTTP client logging.
System.setProperty("org.apache.commons.logging.Log", "org.apache.commons.logging.impl.SimpleLog");
System.setProperty("org.apache.commons.logging.simplelog.defaultlog", "error");
RegistryClient.setUserAgentSuffix(USER_AGENT_SUFFIX);
buildImage(new BuildImageSteps(buildConfiguration, sourceFilesConfiguration, cachesInitializer));
getLog().info("");
getLog().info("Built and pushed image as " + targetImageReference);
getLog().info("");
}
use of com.google.cloud.tools.jib.image.ImageReference in project jib by google.
the class BuildImageTask method buildImage.
@TaskAction
public void buildImage() throws InvalidImageReferenceException, IOException {
// Asserts required @Input parameters are not null.
Preconditions.checkNotNull(from);
Preconditions.checkNotNull(from.getImage());
Preconditions.checkNotNull(to);
Preconditions.checkNotNull(to.getImage());
Preconditions.checkNotNull(jvmFlags);
Preconditions.checkNotNull(format);
ImageReference baseImageReference = ImageReference.parse(from.getImage());
ImageReference targetImageReference = ImageReference.parse(to.getImage());
ProjectProperties projectProperties = new ProjectProperties(getProject(), getLogger());
String mainClass = this.mainClass;
if (mainClass == null) {
mainClass = projectProperties.getMainClassFromJarTask();
if (mainClass == null) {
throw new GradleException("Could not find main class specified in a 'jar' task");
}
}
SourceFilesConfiguration sourceFilesConfiguration = getSourceFilesConfiguration();
// TODO: These should be passed separately - one for base image, one for target image.
List<String> credHelpers = new ArrayList<>();
if (from.getCredHelper() != null) {
credHelpers.add(from.getCredHelper());
}
if (to.getCredHelper() != null) {
credHelpers.add(to.getCredHelper());
}
BuildConfiguration buildConfiguration = BuildConfiguration.builder(new GradleBuildLogger(getLogger())).setBaseImage(baseImageReference).setTargetImage(targetImageReference).setCredentialHelperNames(credHelpers).setMainClass(mainClass).setEnableReproducibleBuilds(reproducible).setJvmFlags(jvmFlags).setTargetFormat(format).build();
// Uses a directory in the Gradle build cache as the Jib cache.
Path cacheDirectory = getProject().getBuildDir().toPath().resolve(CACHE_DIRECTORY_NAME);
if (!Files.exists(cacheDirectory)) {
Files.createDirectory(cacheDirectory);
}
Caches.Initializer cachesInitializer = Caches.newInitializer(cacheDirectory);
if (getUseOnlyProjectCache()) {
cachesInitializer.setBaseCacheDirectory(cacheDirectory);
}
getLogger().lifecycle("Pushing image as " + targetImageReference);
getLogger().lifecycle("");
getLogger().lifecycle("");
// TODO: Instead of disabling logging, have authentication credentials be provided
// Disables annoying Apache HTTP client logging.
System.setProperty("org.apache.commons.logging.Log", "org.apache.commons.logging.impl.SimpleLog");
System.setProperty("org.apache.commons.logging.simplelog.defaultlog", "error");
// Disables Google HTTP client logging.
Logger logger = Logger.getLogger(HttpTransport.class.getName());
logger.setLevel(Level.OFF);
RegistryClient.setUserAgentSuffix(USER_AGENT_SUFFIX);
doBuildImage(new BuildImageSteps(buildConfiguration, sourceFilesConfiguration, cachesInitializer));
getLogger().lifecycle("");
getLogger().lifecycle("Built and pushed image as " + targetImageReference);
getLogger().lifecycle("");
}
Aggregations