Showing preview only (4,450K chars total). Download the full file or copy to clipboard to get everything.
Repository: GoogleContainerTools/jib
Branch: master
Commit: 24b44450133f
Files: 1151
Total size: 4.0 MB
Directory structure:
gitextract_7d1c7m1x/
├── .allstar/
│ └── binary_artifacts.yaml
├── .gitattributes
├── .github/
│ ├── ISSUE_TEMPLATE/
│ │ └── issue_report.md
│ ├── PULL_REQUEST_TEMPLATE.md
│ ├── RELEASE_TEMPLATES/
│ │ ├── cli_release_checklist.md
│ │ ├── core_release_checklist.md
│ │ └── plugin_release_checklist.md
│ ├── dependabot.yml
│ └── workflows/
│ ├── gradle-wrapper-validation.yml
│ ├── jib-cli-release.yml
│ ├── prepare-release.yml
│ ├── sonar.yml
│ └── unit-tests.yml
├── .gitignore
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── SECURITY.md
├── STYLE_GUIDE.md
├── build.gradle
├── config/
│ └── checkstyle/
│ ├── checkstyle-suppressions.xml
│ └── copyright-java.header
├── docs/
│ ├── configure-gcp-credentials.md
│ ├── default_base_image.md
│ ├── faq.md
│ ├── google-cloud-build.md
│ ├── privacy.md
│ └── self_sign_cert.md
├── examples/
│ ├── README.md
│ ├── dropwizard/
│ │ ├── .mvn/
│ │ │ └── wrapper/
│ │ │ ├── MavenWrapperDownloader.java
│ │ │ └── maven-wrapper.properties
│ │ ├── README.md
│ │ ├── mvnw
│ │ ├── mvnw.cmd
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ ├── java/
│ │ │ └── example/
│ │ │ ├── JibExampleApplication.java
│ │ │ ├── JibExampleConfiguration.java
│ │ │ ├── api/
│ │ │ │ └── Saying.java
│ │ │ ├── config/
│ │ │ │ └── HelloWorldConfiguration.java
│ │ │ ├── health/
│ │ │ │ └── TemplateHealthCheck.java
│ │ │ └── resources/
│ │ │ └── HelloWorldResource.java
│ │ └── resources/
│ │ ├── banner.txt
│ │ └── dropwizard.yml
│ ├── helloworld/
│ │ ├── README.md
│ │ ├── build.gradle
│ │ ├── gradle/
│ │ │ └── wrapper/
│ │ │ ├── gradle-wrapper.jar
│ │ │ └── gradle-wrapper.properties
│ │ ├── gradlew
│ │ ├── gradlew.bat
│ │ ├── pom.xml
│ │ ├── settings.gradle
│ │ └── src/
│ │ └── main/
│ │ ├── java/
│ │ │ └── example/
│ │ │ └── HelloWorld.java
│ │ └── resources/
│ │ └── world
│ ├── java-agent/
│ │ ├── README.md
│ │ ├── build.gradle
│ │ ├── gradle/
│ │ │ └── wrapper/
│ │ │ ├── gradle-wrapper.jar
│ │ │ └── gradle-wrapper.properties
│ │ ├── gradle.properties
│ │ ├── gradlew
│ │ ├── gradlew.bat
│ │ ├── pom.xml
│ │ ├── settings.gradle
│ │ └── src/
│ │ └── main/
│ │ ├── java/
│ │ │ └── example/
│ │ │ └── HelloWorld.java
│ │ └── resources/
│ │ └── world
│ ├── ktor/
│ │ ├── README.md
│ │ ├── build.gradle.kts
│ │ ├── gradle/
│ │ │ └── wrapper/
│ │ │ ├── gradle-wrapper.jar
│ │ │ └── gradle-wrapper.properties
│ │ ├── gradle.properties
│ │ ├── gradlew
│ │ ├── gradlew.bat
│ │ ├── settings.gradle.kts
│ │ └── src/
│ │ └── main/
│ │ ├── kotlin/
│ │ │ └── example/
│ │ │ └── ktor/
│ │ │ └── App.kt
│ │ └── resources/
│ │ ├── application.conf
│ │ └── logback.xml
│ ├── micronaut/
│ │ ├── README.md
│ │ ├── build.gradle
│ │ ├── gradle/
│ │ │ └── wrapper/
│ │ │ ├── gradle-wrapper.jar
│ │ │ └── gradle-wrapper.properties
│ │ ├── gradle.properties
│ │ ├── gradlew
│ │ ├── gradlew.bat
│ │ ├── settings.gradle
│ │ └── src/
│ │ ├── main/
│ │ │ ├── groovy/
│ │ │ │ └── example/
│ │ │ │ └── micronaut/
│ │ │ │ ├── Application.groovy
│ │ │ │ └── HelloController.groovy
│ │ │ └── resources/
│ │ │ ├── application.yml
│ │ │ └── logback.xml
│ │ └── test/
│ │ └── groovy/
│ │ └── example/
│ │ └── micronaut/
│ │ └── HelloControllerSpec.groovy
│ ├── multi-module/
│ │ ├── .mvn/
│ │ │ └── wrapper/
│ │ │ ├── MavenWrapperDownloader.java
│ │ │ └── maven-wrapper.properties
│ │ ├── README.md
│ │ ├── build.gradle
│ │ ├── gradle/
│ │ │ └── wrapper/
│ │ │ ├── gradle-wrapper.jar
│ │ │ └── gradle-wrapper.properties
│ │ ├── gradle-build.sh
│ │ ├── gradlew
│ │ ├── gradlew.bat
│ │ ├── hello-service/
│ │ │ ├── build.gradle
│ │ │ ├── gradle.properties
│ │ │ ├── pom.xml
│ │ │ └── src/
│ │ │ └── main/
│ │ │ └── java/
│ │ │ └── hello/
│ │ │ ├── Application.java
│ │ │ └── HelloController.java
│ │ ├── kubernetes.yaml
│ │ ├── maven-build.sh
│ │ ├── mvnw
│ │ ├── mvnw.cmd
│ │ ├── name-service/
│ │ │ ├── build.gradle
│ │ │ ├── gradle.properties
│ │ │ ├── pom.xml
│ │ │ └── src/
│ │ │ └── main/
│ │ │ └── java/
│ │ │ └── name/
│ │ │ ├── Application.java
│ │ │ └── NameController.java
│ │ ├── pom.xml
│ │ ├── settings.gradle
│ │ └── shared-library/
│ │ ├── build.gradle
│ │ ├── gradle.properties
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ └── java/
│ │ └── common/
│ │ └── SharedUtils.java
│ ├── spring-boot/
│ │ ├── .mvn/
│ │ │ └── wrapper/
│ │ │ ├── MavenWrapperDownloader.java
│ │ │ └── maven-wrapper.properties
│ │ ├── README.md
│ │ ├── build.gradle
│ │ ├── gradle/
│ │ │ └── wrapper/
│ │ │ ├── gradle-wrapper.jar
│ │ │ └── gradle-wrapper.properties
│ │ ├── gradlew
│ │ ├── gradlew.bat
│ │ ├── mvnw
│ │ ├── mvnw.cmd
│ │ ├── pom.xml
│ │ ├── settings.gradle
│ │ └── src/
│ │ └── main/
│ │ └── java/
│ │ └── hello/
│ │ ├── Application.java
│ │ └── HelloController.java
│ └── vertx/
│ ├── README.md
│ ├── build.gradle
│ ├── gradle/
│ │ └── wrapper/
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
│ ├── gradlew
│ ├── gradlew.bat
│ ├── settings.gradle
│ └── src/
│ └── main/
│ ├── java/
│ │ └── example/
│ │ └── vertx/
│ │ └── MainVerticle.java
│ └── resources/
│ └── logback.xml
├── gradle/
│ └── wrapper/
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradle.properties
├── gradlew
├── gradlew.bat
├── jib-build-plan/
│ ├── CHANGELOG.md
│ ├── build.gradle
│ ├── gradle.properties
│ ├── kokoro/
│ │ └── release_build.sh
│ └── src/
│ ├── main/
│ │ └── java/
│ │ └── com/
│ │ └── google/
│ │ └── cloud/
│ │ └── tools/
│ │ └── jib/
│ │ ├── api/
│ │ │ └── buildplan/
│ │ │ ├── AbsoluteUnixPath.java
│ │ │ ├── ContainerBuildPlan.java
│ │ │ ├── FileEntriesLayer.java
│ │ │ ├── FileEntry.java
│ │ │ ├── FilePermissions.java
│ │ │ ├── FilePermissionsProvider.java
│ │ │ ├── ImageFormat.java
│ │ │ ├── LayerObject.java
│ │ │ ├── ModificationTimeProvider.java
│ │ │ ├── OwnershipProvider.java
│ │ │ ├── Platform.java
│ │ │ ├── Port.java
│ │ │ └── RelativeUnixPath.java
│ │ └── buildplan/
│ │ └── UnixPathParser.java
│ └── test/
│ ├── java/
│ │ └── com/
│ │ └── google/
│ │ └── cloud/
│ │ └── tools/
│ │ └── jib/
│ │ ├── api/
│ │ │ └── buildplan/
│ │ │ ├── AbsoluteUnixPathTest.java
│ │ │ ├── ContainerBuildPlanTest.java
│ │ │ ├── FileEntriesLayerTest.java
│ │ │ ├── FileEntryTest.java
│ │ │ ├── FilePermissionsTest.java
│ │ │ ├── PortTest.java
│ │ │ └── RelativeUnixPathTest.java
│ │ └── buildplan/
│ │ └── UnixPathParserTest.java
│ └── resources/
│ └── core/
│ ├── fileA
│ └── layer/
│ ├── a/
│ │ └── b/
│ │ └── bar
│ ├── c/
│ │ └── cat
│ └── foo
├── jib-cli/
│ ├── CHANGELOG.md
│ ├── README.md
│ ├── build.gradle
│ ├── gradle.properties
│ ├── scripts/
│ │ └── update_gcs_latest.sh
│ └── src/
│ ├── integration-test/
│ │ ├── java/
│ │ │ └── com/
│ │ │ └── google/
│ │ │ └── cloud/
│ │ │ └── tools/
│ │ │ └── jib/
│ │ │ └── cli/
│ │ │ ├── JarCommandTest.java
│ │ │ ├── TestProject.java
│ │ │ └── WarCommandTest.java
│ │ └── resources/
│ │ ├── jarTest/
│ │ │ ├── spring-boot/
│ │ │ │ ├── build-layered.gradle
│ │ │ │ ├── build.gradle
│ │ │ │ ├── gradle/
│ │ │ │ │ └── wrapper/
│ │ │ │ │ ├── gradle-wrapper.jar
│ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ ├── gradlew
│ │ │ │ ├── gradlew.bat
│ │ │ │ ├── settings-layered.gradle
│ │ │ │ ├── settings.gradle
│ │ │ │ └── src/
│ │ │ │ └── main/
│ │ │ │ └── java/
│ │ │ │ └── hello/
│ │ │ │ ├── Application.java
│ │ │ │ └── HelloController.java
│ │ │ └── standard/
│ │ │ ├── HelloWorld.java
│ │ │ ├── dep/
│ │ │ │ └── A.java
│ │ │ └── dep2/
│ │ │ └── B.java
│ │ └── warTest/
│ │ ├── build.gradle
│ │ ├── gradle/
│ │ │ └── wrapper/
│ │ │ ├── gradle-wrapper.jar
│ │ │ └── gradle-wrapper.properties
│ │ ├── gradlew
│ │ ├── gradlew.bat
│ │ ├── settings.gradle
│ │ └── src/
│ │ ├── extra_js/
│ │ │ └── bogus.js
│ │ ├── extra_static/
│ │ │ └── bogus.html
│ │ └── main/
│ │ ├── java/
│ │ │ └── example/
│ │ │ └── HelloWorld.java
│ │ ├── resources/
│ │ │ └── world
│ │ └── webapp/
│ │ ├── META-INF/
│ │ │ └── MANIFEST.MF
│ │ ├── WEB-INF/
│ │ │ └── web.xml
│ │ └── index.html
│ ├── java-templates/
│ │ └── com/
│ │ └── google/
│ │ └── cloud/
│ │ └── tools/
│ │ └── jib/
│ │ └── cli/
│ │ └── VersionInfo.java.template
│ ├── main/
│ │ └── java/
│ │ └── com/
│ │ └── google/
│ │ └── cloud/
│ │ └── tools/
│ │ └── jib/
│ │ └── cli/
│ │ ├── ArtifactLayers.java
│ │ ├── ArtifactProcessor.java
│ │ ├── ArtifactProcessors.java
│ │ ├── Build.java
│ │ ├── CacheDirectories.java
│ │ ├── CommonCliOptions.java
│ │ ├── CommonContainerConfigCliOptions.java
│ │ ├── ContainerBuilders.java
│ │ ├── Containerizers.java
│ │ ├── Credentials.java
│ │ ├── Instants.java
│ │ ├── Jar.java
│ │ ├── JibCli.java
│ │ ├── ShortErrorMessageHandler.java
│ │ ├── War.java
│ │ ├── buildfile/
│ │ │ ├── ArchiveLayerSpec.java
│ │ │ ├── BaseImageSpec.java
│ │ │ ├── BuildFileSpec.java
│ │ │ ├── BuildFiles.java
│ │ │ ├── CopySpec.java
│ │ │ ├── FileLayerSpec.java
│ │ │ ├── FilePropertiesSpec.java
│ │ │ ├── FilePropertiesStack.java
│ │ │ ├── LayerSpec.java
│ │ │ ├── Layers.java
│ │ │ ├── LayersSpec.java
│ │ │ ├── PlatformSpec.java
│ │ │ └── Validator.java
│ │ ├── jar/
│ │ │ ├── JarFiles.java
│ │ │ ├── JarLayers.java
│ │ │ ├── ProcessingMode.java
│ │ │ ├── SpringBootExplodedProcessor.java
│ │ │ ├── SpringBootPackagedProcessor.java
│ │ │ ├── StandardExplodedProcessor.java
│ │ │ └── StandardPackagedProcessor.java
│ │ ├── logging/
│ │ │ ├── CliLogger.java
│ │ │ ├── ConsoleOutput.java
│ │ │ ├── HttpTraceLevel.java
│ │ │ └── Verbosity.java
│ │ └── war/
│ │ ├── StandardWarExplodedProcessor.java
│ │ └── WarFiles.java
│ └── test/
│ ├── java/
│ │ └── com/
│ │ └── google/
│ │ └── cloud/
│ │ └── tools/
│ │ └── jib/
│ │ ├── ArtifactProcessorsTest.java
│ │ ├── api/
│ │ │ ├── ContainerizerTestProxy.java
│ │ │ ├── HttpRequestTester.java
│ │ │ └── JibContainerBuilderTestHelper.java
│ │ └── cli/
│ │ ├── BuildTest.java
│ │ ├── CacheDirectoriesTest.java
│ │ ├── ContainerBuildersTest.java
│ │ ├── ContainerizersTest.java
│ │ ├── CredentialsTest.java
│ │ ├── InstantsTest.java
│ │ ├── JarTest.java
│ │ ├── JibCliTest.java
│ │ ├── WarTest.java
│ │ ├── buildfile/
│ │ │ ├── ArchiveLayerSpecTest.java
│ │ │ ├── BaseImageSpecTest.java
│ │ │ ├── BuildFileSpecTest.java
│ │ │ ├── BuildFilesTest.java
│ │ │ ├── CopySpecTest.java
│ │ │ ├── FileLayerSpecTest.java
│ │ │ ├── FilePropertiesSpecTest.java
│ │ │ ├── FilePropertiesStackTest.java
│ │ │ ├── LayerSpecTest.java
│ │ │ ├── LayersSpecTest.java
│ │ │ ├── LayersTest.java
│ │ │ ├── PlatformSpecTest.java
│ │ │ └── ValidatorTest.java
│ │ ├── jar/
│ │ │ ├── JarFilesTest.java
│ │ │ ├── SpringBootExplodedProcessorTest.java
│ │ │ ├── SpringBootPackagedProcessorTest.java
│ │ │ ├── StandardExplodedProcessorTest.java
│ │ │ └── StandardPackagedProcessorTest.java
│ │ ├── logging/
│ │ │ └── CliLoggerTest.java
│ │ └── war/
│ │ ├── StandardWarExplodedProcessorTest.java
│ │ └── WarFilesTest.java
│ └── resources/
│ ├── buildfiles/
│ │ ├── layers/
│ │ │ ├── archiveLayerTest/
│ │ │ │ └── layers.yaml
│ │ │ ├── fileTest/
│ │ │ │ ├── default/
│ │ │ │ │ ├── layers.yaml
│ │ │ │ │ ├── toDir.txt
│ │ │ │ │ └── toFile.txt
│ │ │ │ ├── failWithExcludes/
│ │ │ │ │ ├── layers.yaml
│ │ │ │ │ └── toFile.txt
│ │ │ │ └── failWithIncludes/
│ │ │ │ ├── layers.yaml
│ │ │ │ └── toFile.txt
│ │ │ ├── includesExcludesTest/
│ │ │ │ ├── layers.yaml
│ │ │ │ └── project/
│ │ │ │ ├── excludedDir/
│ │ │ │ │ └── exclude.me
│ │ │ │ ├── includedDir/
│ │ │ │ │ └── include.me
│ │ │ │ └── wild.card
│ │ │ ├── pathDoesNotExist/
│ │ │ │ └── layers.yaml
│ │ │ ├── propertiesTest/
│ │ │ │ ├── dir/
│ │ │ │ │ └── file.txt
│ │ │ │ └── layers.yaml
│ │ │ └── writeToRoot/
│ │ │ ├── dir/
│ │ │ │ └── file.txt
│ │ │ └── layers.yaml
│ │ └── projects/
│ │ ├── allDefaults/
│ │ │ └── jib.yaml
│ │ ├── allProperties/
│ │ │ ├── altYamls/
│ │ │ │ └── alt-jib.yaml
│ │ │ ├── jib.yaml
│ │ │ └── project/
│ │ │ └── script.sh
│ │ └── templating/
│ │ ├── missingVar.yaml
│ │ ├── multiLine.yaml
│ │ └── valid.yaml
│ ├── jar/
│ │ ├── java18.jar
│ │ ├── spring-boot/
│ │ │ ├── springboot_layered.jar
│ │ │ ├── springboot_layered_allEmptyLayers.jar
│ │ │ ├── springboot_layered_singleEmptyLayer.jar
│ │ │ ├── springboot_notLayered.jar
│ │ │ └── springboot_sample.jar
│ │ └── standard/
│ │ ├── dependency1
│ │ ├── dependency2
│ │ ├── dependency3-SNAPSHOT-1.jar
│ │ ├── directory/
│ │ │ └── dependency4
│ │ ├── emptyStandardJar.jar
│ │ ├── jarWithInvalidClass.jar
│ │ ├── singleDepJar.jar
│ │ ├── standardJarWithClassPath.jar
│ │ ├── standardJarWithOnlyClasses.jar
│ │ └── standardJarWithoutClassPath.jar
│ └── war/
│ └── standard/
│ ├── allLayers/
│ │ ├── META-INF/
│ │ │ └── context.xml
│ │ ├── Test.jsp
│ │ └── WEB-INF/
│ │ ├── classes/
│ │ │ └── package/
│ │ │ └── test.properties
│ │ ├── lib/
│ │ │ ├── dependency-1.0.0.jar
│ │ │ └── dependencyX-1.0.0-SNAPSHOT.jar
│ │ └── web.xml
│ ├── noWebInfClasses/
│ │ ├── META-INF/
│ │ │ └── context.xml
│ │ └── WEB-INF/
│ │ └── lib/
│ │ ├── dependency-1.0.0.jar
│ │ └── dependencyX-1.0.0-SNAPSHOT.jar
│ └── noWebInfLib/
│ └── META-INF/
│ └── context.xml
├── jib-core/
│ ├── CHANGELOG.md
│ ├── README.md
│ ├── build.gradle
│ ├── examples/
│ │ ├── README.md
│ │ └── build.gradle/
│ │ └── README.md
│ ├── gradle.properties
│ ├── kokoro/
│ │ └── release_build.sh
│ └── src/
│ ├── integration-test/
│ │ ├── java/
│ │ │ └── com/
│ │ │ └── google/
│ │ │ └── cloud/
│ │ │ └── tools/
│ │ │ └── jib/
│ │ │ ├── Command.java
│ │ │ ├── IntegrationTestingConfiguration.java
│ │ │ ├── api/
│ │ │ │ ├── ContainerizerIntegrationTest.java
│ │ │ │ ├── JibIntegrationTest.java
│ │ │ │ ├── JibMultiPlatformIntegrationTest.java
│ │ │ │ └── ReproducibleImageTest.java
│ │ │ └── registry/
│ │ │ ├── BearerAuthenticationIntegrationTest.java
│ │ │ ├── BlobCheckerIntegrationTest.java
│ │ │ ├── BlobPullerIntegrationTest.java
│ │ │ ├── BlobPusherIntegrationTest.java
│ │ │ ├── LocalRegistry.java
│ │ │ ├── ManifestCheckerIntegrationTest.java
│ │ │ ├── ManifestPullerIntegrationTest.java
│ │ │ ├── ManifestPusherIntegrationTest.java
│ │ │ └── credentials/
│ │ │ └── DockerCredentialHelperIntegrationTest.java
│ │ └── resources/
│ │ ├── core/
│ │ │ └── hello
│ │ └── credentials.json
│ ├── main/
│ │ ├── java/
│ │ │ └── com/
│ │ │ └── google/
│ │ │ └── cloud/
│ │ │ └── tools/
│ │ │ └── jib/
│ │ │ ├── ProjectInfo.java
│ │ │ ├── api/
│ │ │ │ ├── CacheDirectoryCreationException.java
│ │ │ │ ├── Containerizer.java
│ │ │ │ ├── Credential.java
│ │ │ │ ├── CredentialRetriever.java
│ │ │ │ ├── DescriptorDigest.java
│ │ │ │ ├── DockerClient.java
│ │ │ │ ├── DockerDaemonImage.java
│ │ │ │ ├── DockerInfoDetails.java
│ │ │ │ ├── ImageDetails.java
│ │ │ │ ├── ImageReference.java
│ │ │ │ ├── InsecureRegistryException.java
│ │ │ │ ├── InvalidImageReferenceException.java
│ │ │ │ ├── JavaContainerBuilder.java
│ │ │ │ ├── Jib.java
│ │ │ │ ├── JibContainer.java
│ │ │ │ ├── JibContainerBuilder.java
│ │ │ │ ├── JibContainerDescription.java
│ │ │ │ ├── JibEvent.java
│ │ │ │ ├── LayerConfiguration.java
│ │ │ │ ├── LayerEntry.java
│ │ │ │ ├── LogEvent.java
│ │ │ │ ├── MainClassFinder.java
│ │ │ │ ├── Ports.java
│ │ │ │ ├── RegistryAuthenticationFailedException.java
│ │ │ │ ├── RegistryException.java
│ │ │ │ ├── RegistryImage.java
│ │ │ │ ├── RegistryUnauthorizedException.java
│ │ │ │ └── TarImage.java
│ │ │ ├── blob/
│ │ │ │ ├── Blob.java
│ │ │ │ ├── BlobDescriptor.java
│ │ │ │ ├── Blobs.java
│ │ │ │ ├── FileBlob.java
│ │ │ │ ├── InputStreamBlob.java
│ │ │ │ ├── JsonBlob.java
│ │ │ │ ├── StringBlob.java
│ │ │ │ └── WritableContentsBlob.java
│ │ │ ├── builder/
│ │ │ │ ├── ProgressEventDispatcher.java
│ │ │ │ ├── Timer.java
│ │ │ │ ├── TimerEventDispatcher.java
│ │ │ │ └── steps/
│ │ │ │ ├── AuthenticatePushStep.java
│ │ │ │ ├── BuildAndCacheApplicationLayerStep.java
│ │ │ │ ├── BuildImageStep.java
│ │ │ │ ├── BuildManifestListOrSingleManifestStep.java
│ │ │ │ ├── BuildResult.java
│ │ │ │ ├── CheckManifestStep.java
│ │ │ │ ├── LoadDockerStep.java
│ │ │ │ ├── LocalBaseImageSteps.java
│ │ │ │ ├── ObtainBaseImageLayerStep.java
│ │ │ │ ├── PlatformChecker.java
│ │ │ │ ├── PreparedLayer.java
│ │ │ │ ├── PullBaseImageStep.java
│ │ │ │ ├── PushBlobStep.java
│ │ │ │ ├── PushContainerConfigurationStep.java
│ │ │ │ ├── PushImageStep.java
│ │ │ │ ├── PushLayerStep.java
│ │ │ │ ├── RegistryCredentialRetriever.java
│ │ │ │ ├── StepsRunner.java
│ │ │ │ ├── ThrottledProgressEventDispatcherWrapper.java
│ │ │ │ └── WriteTarFileStep.java
│ │ │ ├── cache/
│ │ │ │ ├── Cache.java
│ │ │ │ ├── CacheCorruptedException.java
│ │ │ │ ├── CacheStorageFiles.java
│ │ │ │ ├── CacheStorageReader.java
│ │ │ │ ├── CacheStorageWriter.java
│ │ │ │ ├── CachedLayer.java
│ │ │ │ ├── LayerEntriesSelector.java
│ │ │ │ └── Retry.java
│ │ │ ├── configuration/
│ │ │ │ ├── BuildContext.java
│ │ │ │ ├── ContainerConfiguration.java
│ │ │ │ ├── DockerHealthCheck.java
│ │ │ │ └── ImageConfiguration.java
│ │ │ ├── docker/
│ │ │ │ ├── CliDockerClient.java
│ │ │ │ ├── DockerClientResolver.java
│ │ │ │ └── json/
│ │ │ │ └── DockerManifestEntryTemplate.java
│ │ │ ├── event/
│ │ │ │ ├── EventHandlers.java
│ │ │ │ ├── Handler.java
│ │ │ │ ├── events/
│ │ │ │ │ ├── ProgressEvent.java
│ │ │ │ │ └── TimerEvent.java
│ │ │ │ └── progress/
│ │ │ │ ├── Allocation.java
│ │ │ │ ├── AllocationCompletionTracker.java
│ │ │ │ ├── ProgressEventHandler.java
│ │ │ │ └── ThrottledAccumulatingConsumer.java
│ │ │ ├── filesystem/
│ │ │ │ ├── DirectoryWalker.java
│ │ │ │ ├── FileOperations.java
│ │ │ │ ├── LockFile.java
│ │ │ │ ├── PathConsumer.java
│ │ │ │ ├── TempDirectoryProvider.java
│ │ │ │ └── XdgDirectories.java
│ │ │ ├── frontend/
│ │ │ │ └── CredentialRetrieverFactory.java
│ │ │ ├── global/
│ │ │ │ └── JibSystemProperties.java
│ │ │ ├── hash/
│ │ │ │ ├── CountingDigestOutputStream.java
│ │ │ │ ├── Digests.java
│ │ │ │ └── WritableContents.java
│ │ │ ├── http/
│ │ │ │ ├── Authorization.java
│ │ │ │ ├── BlobHttpContent.java
│ │ │ │ ├── FailoverHttpClient.java
│ │ │ │ ├── NotifyingOutputStream.java
│ │ │ │ ├── Request.java
│ │ │ │ ├── Response.java
│ │ │ │ └── ResponseException.java
│ │ │ ├── image/
│ │ │ │ ├── DigestOnlyLayer.java
│ │ │ │ ├── Image.java
│ │ │ │ ├── ImageTarball.java
│ │ │ │ ├── Layer.java
│ │ │ │ ├── LayerCountMismatchException.java
│ │ │ │ ├── LayerPropertyNotFoundException.java
│ │ │ │ ├── ReferenceLayer.java
│ │ │ │ ├── ReferenceNoDiffIdLayer.java
│ │ │ │ ├── ReproducibleLayerBuilder.java
│ │ │ │ └── json/
│ │ │ │ ├── BadContainerConfigurationFormatException.java
│ │ │ │ ├── BuildableManifestTemplate.java
│ │ │ │ ├── ContainerConfigurationTemplate.java
│ │ │ │ ├── DescriptorDigestDeserializer.java
│ │ │ │ ├── DescriptorDigestSerializer.java
│ │ │ │ ├── HistoryEntry.java
│ │ │ │ ├── ImageMetadataTemplate.java
│ │ │ │ ├── ImageToJsonTranslator.java
│ │ │ │ ├── JsonToImageTranslator.java
│ │ │ │ ├── ManifestAndConfigTemplate.java
│ │ │ │ ├── ManifestListGenerator.java
│ │ │ │ ├── ManifestListTemplate.java
│ │ │ │ ├── ManifestTemplate.java
│ │ │ │ ├── OciIndexTemplate.java
│ │ │ │ ├── OciManifestTemplate.java
│ │ │ │ ├── PlatformNotFoundInBaseImageException.java
│ │ │ │ ├── UnknownManifestFormatException.java
│ │ │ │ ├── UnlistedPlatformInManifestListException.java
│ │ │ │ ├── V21ManifestTemplate.java
│ │ │ │ ├── V22ManifestListTemplate.java
│ │ │ │ └── V22ManifestTemplate.java
│ │ │ ├── json/
│ │ │ │ ├── JsonTemplate.java
│ │ │ │ └── JsonTemplateMapper.java
│ │ │ ├── registry/
│ │ │ │ ├── AbstractManifestPuller.java
│ │ │ │ ├── AuthenticationMethodRetriever.java
│ │ │ │ ├── BlobChecker.java
│ │ │ │ ├── BlobPuller.java
│ │ │ │ ├── BlobPusher.java
│ │ │ │ ├── ErrorCodes.java
│ │ │ │ ├── ErrorResponseUtil.java
│ │ │ │ ├── ManifestAndDigest.java
│ │ │ │ ├── ManifestChecker.java
│ │ │ │ ├── ManifestPuller.java
│ │ │ │ ├── ManifestPusher.java
│ │ │ │ ├── RegistryAliasGroup.java
│ │ │ │ ├── RegistryAuthenticator.java
│ │ │ │ ├── RegistryClient.java
│ │ │ │ ├── RegistryCredentialsNotSentException.java
│ │ │ │ ├── RegistryEndpointCaller.java
│ │ │ │ ├── RegistryEndpointProvider.java
│ │ │ │ ├── RegistryEndpointRequestProperties.java
│ │ │ │ ├── RegistryErrorException.java
│ │ │ │ ├── RegistryErrorExceptionBuilder.java
│ │ │ │ ├── UnexpectedBlobDigestException.java
│ │ │ │ ├── credentials/
│ │ │ │ │ ├── CredentialHelperNotFoundException.java
│ │ │ │ │ ├── CredentialHelperUnhandledServerUrlException.java
│ │ │ │ │ ├── CredentialRetrievalException.java
│ │ │ │ │ ├── DockerConfig.java
│ │ │ │ │ ├── DockerConfigCredentialRetriever.java
│ │ │ │ │ ├── DockerCredentialHelper.java
│ │ │ │ │ └── json/
│ │ │ │ │ └── DockerConfigTemplate.java
│ │ │ │ └── json/
│ │ │ │ ├── ErrorEntryTemplate.java
│ │ │ │ └── ErrorResponseTemplate.java
│ │ │ └── tar/
│ │ │ ├── TarExtractor.java
│ │ │ └── TarStreamBuilder.java
│ │ └── resources/
│ │ └── commons-logging.properties
│ └── test/
│ ├── java/
│ │ └── com/
│ │ └── google/
│ │ └── cloud/
│ │ └── tools/
│ │ └── jib/
│ │ ├── MultithreadedExecutor.java
│ │ ├── api/
│ │ │ ├── ContainerizerTest.java
│ │ │ ├── CredentialTest.java
│ │ │ ├── DescriptorDigestTest.java
│ │ │ ├── DockerClientResolverTest.java
│ │ │ ├── DockerDaemonImageTest.java
│ │ │ ├── ImageReferenceTest.java
│ │ │ ├── JavaContainerBuilderTest.java
│ │ │ ├── JibContainerBuilderTest.java
│ │ │ ├── JibContainerTest.java
│ │ │ ├── MainClassFinderTest.java
│ │ │ ├── PortsTest.java
│ │ │ ├── RegistryImageTest.java
│ │ │ └── TarImageTest.java
│ │ ├── blob/
│ │ │ └── BlobTest.java
│ │ ├── builder/
│ │ │ ├── ProgressEventDispatcherTest.java
│ │ │ ├── TimerEventDispatcherTest.java
│ │ │ ├── TimerTest.java
│ │ │ └── steps/
│ │ │ ├── BuildAndCacheApplicationLayerStepTest.java
│ │ │ ├── BuildImageStepTest.java
│ │ │ ├── BuildManifestListOrSingleManifestStepTest.java
│ │ │ ├── BuildResultTest.java
│ │ │ ├── LocalBaseImageStepsTest.java
│ │ │ ├── ObtainBaseImageLayerStepTest.java
│ │ │ ├── PlatformCheckerTest.java
│ │ │ ├── PullBaseImageStepTest.java
│ │ │ ├── PushBlobStepTest.java
│ │ │ ├── PushImageStepTest.java
│ │ │ ├── RegistryCredentialRetrieverTest.java
│ │ │ └── StepsRunnerTest.java
│ │ ├── cache/
│ │ │ ├── CacheStorageFilesTest.java
│ │ │ ├── CacheStorageReaderTest.java
│ │ │ ├── CacheStorageWriterTest.java
│ │ │ ├── CacheTest.java
│ │ │ ├── CachedLayerTest.java
│ │ │ ├── LayerEntriesSelectorTest.java
│ │ │ └── RetryTest.java
│ │ ├── configuration/
│ │ │ ├── BuildContextTest.java
│ │ │ ├── ContainerConfigurationTest.java
│ │ │ └── DockerHealthCheckTest.java
│ │ ├── docker/
│ │ │ ├── AnotherDockerClient.java
│ │ │ ├── CliDockerClientTest.java
│ │ │ └── json/
│ │ │ └── DockerManifestEntryTemplateTest.java
│ │ ├── event/
│ │ │ ├── EventHandlersTest.java
│ │ │ ├── events/
│ │ │ │ ├── LogEventTest.java
│ │ │ │ └── ProgressEventTest.java
│ │ │ └── progress/
│ │ │ ├── AllocationCompletionTrackerTest.java
│ │ │ ├── AllocationTest.java
│ │ │ └── ProgressEventHandlerTest.java
│ │ ├── filesystem/
│ │ │ ├── DirectoryWalkerTest.java
│ │ │ ├── FileOperationsTest.java
│ │ │ ├── LockFileTest.java
│ │ │ ├── TempDirectoryProviderTest.java
│ │ │ └── XdgDirectoriesTest.java
│ │ ├── frontend/
│ │ │ └── CredentialRetrieverFactoryTest.java
│ │ ├── global/
│ │ │ └── JibSystemPropertiesTest.java
│ │ ├── hash/
│ │ │ └── CountingDigestOutputStreamTest.java
│ │ ├── http/
│ │ │ ├── FailoverHttpClientTest.java
│ │ │ ├── NotifyingOutputStreamTest.java
│ │ │ ├── RequestTest.java
│ │ │ ├── RequestWrapper.java
│ │ │ ├── ResponseTest.java
│ │ │ ├── TestWebServer.java
│ │ │ └── WithServerFailoverHttpClientTest.java
│ │ ├── image/
│ │ │ ├── ImageTarballTest.java
│ │ │ ├── ImageTest.java
│ │ │ ├── LayerTest.java
│ │ │ ├── ReproducibleLayerBuilderTest.java
│ │ │ └── json/
│ │ │ ├── ContainerConfigurationTemplateTest.java
│ │ │ ├── ImageToJsonTranslatorTest.java
│ │ │ ├── JsonToImageTranslatorTest.java
│ │ │ ├── ManifestListGeneratorTest.java
│ │ │ ├── OciIndexTemplateTest.java
│ │ │ ├── OciManifestTemplateTest.java
│ │ │ ├── V21ManifestTemplateTest.java
│ │ │ ├── V22ManifestListTemplateTest.java
│ │ │ └── V22ManifestTemplateTest.java
│ │ ├── json/
│ │ │ └── JsonTemplateMapperTest.java
│ │ ├── registry/
│ │ │ ├── AuthenticationMethodRetrieverTest.java
│ │ │ ├── BlobCheckerTest.java
│ │ │ ├── BlobPullerTest.java
│ │ │ ├── BlobPusherTest.java
│ │ │ ├── DockerRegistryBearerTokenTest.java
│ │ │ ├── ErrorResponseUtilTest.java
│ │ │ ├── ManifestPullerTest.java
│ │ │ ├── ManifestPusherTest.java
│ │ │ ├── PlainHttpClient.java
│ │ │ ├── RegistryAliasGroupTest.java
│ │ │ ├── RegistryAuthenticationFailedExceptionTest.java
│ │ │ ├── RegistryAuthenticatorTest.java
│ │ │ ├── RegistryClientTest.java
│ │ │ ├── RegistryEndpointCallerTest.java
│ │ │ ├── RegistryErrorExceptionBuilderTest.java
│ │ │ └── credentials/
│ │ │ ├── DockerConfigCredentialRetrieverTest.java
│ │ │ ├── DockerConfigTest.java
│ │ │ └── DockerCredentialHelperTest.java
│ │ └── tar/
│ │ ├── TarExtractorTest.java
│ │ └── TarStreamBuilderTest.java
│ └── resources/
│ ├── META-INF/
│ │ └── services/
│ │ └── com.google.cloud.tools.jib.api.DockerClient
│ ├── core/
│ │ ├── TestWebServer-keystore
│ │ ├── application/
│ │ │ ├── dependencies/
│ │ │ │ ├── dependency-1.0.0.jar
│ │ │ │ ├── libraryA.jar
│ │ │ │ ├── libraryB.jar
│ │ │ │ └── more/
│ │ │ │ └── dependency-1.0.0.jar
│ │ │ ├── resources/
│ │ │ │ ├── resourceA
│ │ │ │ ├── resourceB
│ │ │ │ └── world
│ │ │ └── snapshot-dependencies/
│ │ │ └── dependency-1.0.0-SNAPSHOT.jar
│ │ ├── blobA
│ │ ├── class-finder-tests/
│ │ │ └── simple/
│ │ │ └── NotEvenAClass.txt
│ │ ├── directoryA/
│ │ │ └── .gitkeep
│ │ ├── docker/
│ │ │ └── emptyFile
│ │ ├── extraction/
│ │ │ └── test-cache/
│ │ │ └── local/
│ │ │ ├── 5e701122d3347fae0758cd5b7f0692c686fcd07b0e7fd9c4a125fbdbbedc04dd/
│ │ │ │ └── 0011328ac5dfe3dde40c7c5e0e00c98d1833a3aeae2bfb668cf9eb965c229c7f
│ │ │ ├── config/
│ │ │ │ └── 066872f17ae819f846a6d5abcfc3165abe13fb0a157640fa8cb7af81077670c0
│ │ │ └── f1ac3015bcbf0ada4750d728626eb10f0f585199e2b667dcd79e49f0e926178e/
│ │ │ └── c10ef24a5cef5092bbcb5a5666721cff7b86ce978c203a958d1fc86ee6c19f94
│ │ ├── fileA
│ │ ├── fileB
│ │ ├── json/
│ │ │ ├── basic.json
│ │ │ ├── basic_list.json
│ │ │ ├── containerconfig.json
│ │ │ ├── dockerconfig.json
│ │ │ ├── dockerconfig_extra_matches.json
│ │ │ ├── dockerconfig_identity_token.json
│ │ │ ├── dockerconfig_index_docker_io_v1.json
│ │ │ ├── legacy_dockercfg
│ │ │ ├── loadmanifest.json
│ │ │ ├── loadmanifest2.json
│ │ │ ├── metadata-v2.json
│ │ │ ├── metadata-v3.json
│ │ │ ├── metadata.json
│ │ │ ├── metadata_corrupted.json
│ │ │ ├── metadata_windows-v2.json
│ │ │ ├── metadata_windows.json
│ │ │ ├── ociindex.json
│ │ │ ├── ociindex_platforms.json
│ │ │ ├── ocimanifest.json
│ │ │ ├── translated_ocimanifest.json
│ │ │ ├── translated_v22manifest.json
│ │ │ ├── v21manifest.json
│ │ │ ├── v22manifest.json
│ │ │ ├── v22manifest_list.json
│ │ │ └── v22manifest_optional_properties.json
│ │ ├── layer/
│ │ │ ├── a/
│ │ │ │ └── b/
│ │ │ │ └── bar
│ │ │ ├── c/
│ │ │ │ └── cat
│ │ │ └── foo
│ │ ├── random-contents/
│ │ │ ├── file1
│ │ │ ├── file2
│ │ │ └── sub-directory/
│ │ │ ├── file3
│ │ │ ├── file4
│ │ │ └── leaf/
│ │ │ ├── file5
│ │ │ └── file6
│ │ └── webAppSampleDockerfile
│ └── mockito-extensions/
│ └── org.mockito.plugins.MockMaker
├── jib-gradle-plugin/
│ ├── CHANGELOG.md
│ ├── README.md
│ ├── build.gradle
│ ├── gradle.properties
│ ├── scripts/
│ │ ├── release.sh
│ │ └── update_gcs_latest.sh
│ └── src/
│ ├── integration-test/
│ │ ├── java/
│ │ │ └── com/
│ │ │ └── google/
│ │ │ └── cloud/
│ │ │ └── tools/
│ │ │ └── jib/
│ │ │ └── gradle/
│ │ │ ├── DefaultTargetProjectIntegrationTest.java
│ │ │ ├── EmptyProjectIntegrationTest.java
│ │ │ ├── GradleLayerConfigurationIntegrationTest.java
│ │ │ ├── JibRunHelper.java
│ │ │ ├── SingleProjectIntegrationTest.java
│ │ │ ├── SpringBootProjectIntegrationTest.java
│ │ │ └── WarProjectIntegrationTest.java
│ │ └── resources/
│ │ └── gradle/
│ │ └── projects/
│ │ ├── default-target/
│ │ │ ├── build.gradle
│ │ │ ├── gradle.properties
│ │ │ ├── libs/
│ │ │ │ └── dependency-1.0.0.jar
│ │ │ ├── settings.gradle
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── java/
│ │ │ │ └── com/
│ │ │ │ └── test/
│ │ │ │ └── HelloWorld.java
│ │ │ └── resources/
│ │ │ └── world
│ │ ├── empty/
│ │ │ ├── build-broken-user.gradle
│ │ │ ├── build.gradle
│ │ │ └── src/
│ │ │ └── main/
│ │ │ └── java/
│ │ │ └── com/
│ │ │ └── test/
│ │ │ └── Empty.java
│ │ ├── multiproject/
│ │ │ ├── a_packaged/
│ │ │ │ ├── build.gradle
│ │ │ │ └── src/
│ │ │ │ └── main/
│ │ │ │ └── java/
│ │ │ │ └── com/
│ │ │ │ └── test/
│ │ │ │ └── Empty.java
│ │ │ ├── b_dependency/
│ │ │ │ ├── build.gradle
│ │ │ │ └── src/
│ │ │ │ └── main/
│ │ │ │ └── java/
│ │ │ │ └── com/
│ │ │ │ └── test/
│ │ │ │ └── Empty.java
│ │ │ ├── build.gradle
│ │ │ └── settings.gradle
│ │ ├── simple/
│ │ │ ├── build-configuration.gradle
│ │ │ ├── build-cred-helper.gradle
│ │ │ ├── build-dockerclient.gradle
│ │ │ ├── build-extra-dirs-filtering.gradle
│ │ │ ├── build-extra-dirs.gradle
│ │ │ ├── build-extra-dirs2.gradle
│ │ │ ├── build-extra-dirs3.gradle
│ │ │ ├── build-jar-containerization.gradle
│ │ │ ├── build-java11-incompatible.gradle
│ │ │ ├── build-java11.gradle
│ │ │ ├── build-java17.gradle
│ │ │ ├── build-local-base.gradle
│ │ │ ├── build-multi-platform.gradle
│ │ │ ├── build-timestamps-custom.gradle
│ │ │ ├── build.gradle
│ │ │ ├── complex-build.gradle
│ │ │ ├── libs/
│ │ │ │ ├── dependency-1.0.0.jar
│ │ │ │ ├── dependency2
│ │ │ │ └── dependency3
│ │ │ ├── mock-docker.sh
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── custom-extra-dir/
│ │ │ │ ├── bar/
│ │ │ │ │ └── cat
│ │ │ │ └── foo
│ │ │ ├── custom-extra-dir2/
│ │ │ │ └── baz
│ │ │ ├── custom-extra-dir3/
│ │ │ │ ├── cat.json
│ │ │ │ ├── cat.txt
│ │ │ │ └── sub/
│ │ │ │ ├── a.json
│ │ │ │ └── a.txt
│ │ │ ├── custom-extra-dir4/
│ │ │ │ ├── bar
│ │ │ │ └── foo
│ │ │ ├── java/
│ │ │ │ └── com/
│ │ │ │ └── test/
│ │ │ │ └── HelloWorld.java
│ │ │ └── resources/
│ │ │ └── world
│ │ ├── spring-boot/
│ │ │ ├── build.gradle
│ │ │ ├── settings.gradle
│ │ │ └── src/
│ │ │ └── main/
│ │ │ └── java/
│ │ │ └── hello/
│ │ │ ├── Application.java
│ │ │ └── HelloController.java
│ │ └── war_servlet25/
│ │ ├── build-tomcat.gradle
│ │ ├── build.gradle
│ │ └── src/
│ │ ├── extra_js/
│ │ │ └── bogus.js
│ │ ├── extra_static/
│ │ │ └── bogus.html
│ │ └── main/
│ │ ├── java/
│ │ │ └── example/
│ │ │ └── HelloWorld.java
│ │ ├── resources/
│ │ │ └── world
│ │ └── webapp/
│ │ ├── META-INF/
│ │ │ └── MANIFEST.MF
│ │ ├── WEB-INF/
│ │ │ └── web.xml
│ │ └── index.html
│ ├── main/
│ │ └── java/
│ │ └── com/
│ │ └── google/
│ │ └── cloud/
│ │ └── tools/
│ │ └── jib/
│ │ └── gradle/
│ │ ├── AuthParameters.java
│ │ ├── BaseImageParameters.java
│ │ ├── BuildDockerTask.java
│ │ ├── BuildImageTask.java
│ │ ├── BuildTarTask.java
│ │ ├── ContainerParameters.java
│ │ ├── CredHelperParameters.java
│ │ ├── DockerClientParameters.java
│ │ ├── ExtensionParameters.java
│ │ ├── ExtensionParametersSpec.java
│ │ ├── ExtraDirectoriesParameters.java
│ │ ├── ExtraDirectoryParameters.java
│ │ ├── ExtraDirectoryParametersSpec.java
│ │ ├── GradleHelpfulSuggestions.java
│ │ ├── GradleProjectProperties.java
│ │ ├── GradleRawConfiguration.java
│ │ ├── JibExtension.java
│ │ ├── JibPlugin.java
│ │ ├── JibTask.java
│ │ ├── OutputPathsParameters.java
│ │ ├── PlatformParameters.java
│ │ ├── PlatformParametersSpec.java
│ │ ├── TargetImageParameters.java
│ │ ├── TaskCommon.java
│ │ └── skaffold/
│ │ ├── CheckJibVersionTask.java
│ │ ├── FilesTaskV2.java
│ │ ├── InitTask.java
│ │ ├── SkaffoldParameters.java
│ │ ├── SkaffoldSyncParameters.java
│ │ ├── SkaffoldWatchParameters.java
│ │ └── SyncMapTask.java
│ └── test/
│ ├── java/
│ │ └── com/
│ │ └── google/
│ │ └── cloud/
│ │ └── tools/
│ │ └── jib/
│ │ └── gradle/
│ │ ├── GradleProjectPropertiesExtensionTest.java
│ │ ├── GradleProjectPropertiesTest.java
│ │ ├── GradleRawConfigurationTest.java
│ │ ├── JibExtensionTest.java
│ │ ├── JibPluginTest.java
│ │ ├── TaskCommonTest.java
│ │ ├── TestProject.java
│ │ └── skaffold/
│ │ ├── FilesTaskV2Test.java
│ │ ├── InitTaskTest.java
│ │ └── SyncMapTaskTest.java
│ └── resources/
│ └── gradle/
│ ├── application/
│ │ ├── build/
│ │ │ └── resources/
│ │ │ └── main/
│ │ │ ├── resourceA
│ │ │ ├── resourceB
│ │ │ └── world
│ │ ├── dependencies/
│ │ │ ├── another/
│ │ │ │ └── one/
│ │ │ │ └── dependency-1.0.0.jar
│ │ │ ├── dependency-1.0.0.jar
│ │ │ ├── dependencyX-1.0.0-SNAPSHOT.jar
│ │ │ ├── library.jarC.jar
│ │ │ ├── libraryA.jar
│ │ │ ├── libraryB.jar
│ │ │ └── more/
│ │ │ └── dependency-1.0.0.jar
│ │ └── extra-directory/
│ │ └── foo
│ ├── plugin-test/
│ │ └── build.gradle
│ ├── projects/
│ │ ├── all-local-multi-service/
│ │ │ ├── build.gradle
│ │ │ ├── complex-service/
│ │ │ │ ├── build.gradle
│ │ │ │ ├── libs/
│ │ │ │ │ ├── dependency-1.0.0.jar
│ │ │ │ │ └── dependencyX-1.0.0-SNAPSHOT.jar
│ │ │ │ └── src/
│ │ │ │ └── main/
│ │ │ │ ├── extra-resources-1/
│ │ │ │ │ └── resource1.txt
│ │ │ │ ├── extra-resources-2/
│ │ │ │ │ └── resource2.txt
│ │ │ │ ├── java/
│ │ │ │ │ └── com/
│ │ │ │ │ └── test/
│ │ │ │ │ └── HelloWorld.java
│ │ │ │ └── other-jib/
│ │ │ │ └── extra-file
│ │ │ ├── gradle.properties
│ │ │ ├── lib/
│ │ │ │ ├── build.gradle
│ │ │ │ └── src/
│ │ │ │ └── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── com/
│ │ │ │ │ └── lib/
│ │ │ │ │ └── Lib.java
│ │ │ │ └── resources/
│ │ │ │ └── hi.txt
│ │ │ ├── settings.gradle
│ │ │ └── simple-service/
│ │ │ ├── build.gradle
│ │ │ └── src/
│ │ │ └── main/
│ │ │ └── java/
│ │ │ └── com/
│ │ │ └── test/
│ │ │ └── HelloWorld.java
│ │ ├── lazy-evaluation/
│ │ │ ├── build-extra-dirs.gradle
│ │ │ ├── build.gradle
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── java/
│ │ │ │ └── com/
│ │ │ │ └── test/
│ │ │ │ └── HelloWorld.java
│ │ │ └── updated-custom-extra-dir/
│ │ │ └── foo
│ │ ├── multi-service/
│ │ │ ├── build.gradle
│ │ │ ├── complex-service/
│ │ │ │ ├── build.gradle
│ │ │ │ ├── local-m2-repo/
│ │ │ │ │ └── com/
│ │ │ │ │ └── google/
│ │ │ │ │ └── cloud/
│ │ │ │ │ └── tools/
│ │ │ │ │ └── tiny-test-lib/
│ │ │ │ │ ├── 0.0.1-SNAPSHOT/
│ │ │ │ │ │ ├── maven-metadata-local.xml
│ │ │ │ │ │ ├── tiny-test-lib-0.0.1-SNAPSHOT.jar
│ │ │ │ │ │ └── tiny-test-lib-0.0.1-SNAPSHOT.pom
│ │ │ │ │ └── maven-metadata-local.xml
│ │ │ │ └── src/
│ │ │ │ └── main/
│ │ │ │ ├── extra-resources-1/
│ │ │ │ │ └── resource1.txt
│ │ │ │ ├── extra-resources-2/
│ │ │ │ │ └── resource2.txt
│ │ │ │ ├── java/
│ │ │ │ │ └── com/
│ │ │ │ │ └── test/
│ │ │ │ │ └── HelloWorld.java
│ │ │ │ └── other-jib/
│ │ │ │ └── extra-file
│ │ │ ├── gradle.properties
│ │ │ ├── lib/
│ │ │ │ ├── build.gradle
│ │ │ │ └── src/
│ │ │ │ ├── main/
│ │ │ │ │ ├── java/
│ │ │ │ │ │ └── com/
│ │ │ │ │ │ └── lib/
│ │ │ │ │ │ └── Lib.java
│ │ │ │ │ └── resources/
│ │ │ │ │ └── hi.txt
│ │ │ │ └── test/
│ │ │ │ └── java/
│ │ │ │ └── com/
│ │ │ │ └── lib/
│ │ │ │ └── LibTest.java
│ │ │ ├── settings.gradle
│ │ │ └── simple-service/
│ │ │ ├── build.gradle
│ │ │ └── src/
│ │ │ └── main/
│ │ │ └── java/
│ │ │ └── com/
│ │ │ └── test/
│ │ │ └── HelloWorld.java
│ │ ├── platform/
│ │ │ ├── build.gradle
│ │ │ ├── platform/
│ │ │ │ └── build.gradle
│ │ │ ├── service/
│ │ │ │ ├── build.gradle
│ │ │ │ └── src/
│ │ │ │ └── main/
│ │ │ │ └── java/
│ │ │ │ └── com/
│ │ │ │ └── test/
│ │ │ │ └── HelloWorld.java
│ │ │ └── settings.gradle
│ │ ├── simple/
│ │ │ ├── build.gradle
│ │ │ ├── libs/
│ │ │ │ └── dependency-1.0.0.jar
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── custom-extra-dir/
│ │ │ │ ├── bar/
│ │ │ │ │ └── cat
│ │ │ │ └── foo
│ │ │ ├── java/
│ │ │ │ └── com/
│ │ │ │ └── test/
│ │ │ │ └── HelloWorld.java
│ │ │ └── resources/
│ │ │ └── world
│ │ ├── skaffold-config/
│ │ │ ├── build.gradle
│ │ │ ├── libs/
│ │ │ │ └── dependency-1.0.0.jar
│ │ │ ├── other/
│ │ │ │ └── file.txt
│ │ │ ├── script.gradle
│ │ │ └── src/
│ │ │ └── main/
│ │ │ ├── java/
│ │ │ │ └── com/
│ │ │ │ ├── test/
│ │ │ │ │ └── HelloWorld.java
│ │ │ │ └── test2/
│ │ │ │ └── GoodbyeWorld.java
│ │ │ ├── jib/
│ │ │ │ ├── bar/
│ │ │ │ │ └── cat
│ │ │ │ └── foo
│ │ │ └── resources/
│ │ │ └── world
│ │ └── war_servlet25/
│ │ ├── build.gradle
│ │ ├── pom-tomcat.xml
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── extra_js/
│ │ │ └── bogus.js
│ │ ├── extra_static/
│ │ │ └── bogus.html
│ │ └── main/
│ │ ├── java/
│ │ │ └── example/
│ │ │ └── HelloWorld.java
│ │ ├── resources/
│ │ │ └── world
│ │ └── webapp/
│ │ ├── META-INF/
│ │ │ └── MANIFEST.MF
│ │ ├── WEB-INF/
│ │ │ └── web.xml
│ │ └── index.html
│ └── webapp/
│ ├── META-INF/
│ │ └── context.xml
│ ├── Test.jsp
│ └── WEB-INF/
│ ├── classes/
│ │ └── package/
│ │ └── test.properties
│ ├── lib/
│ │ ├── dependency-1.0.0.jar
│ │ └── dependencyX-1.0.0-SNAPSHOT.jar
│ └── web.xml
├── jib-gradle-plugin-extension-api/
│ ├── CHANGELOG.md
│ ├── build.gradle
│ ├── gradle.properties
│ ├── kokoro/
│ │ └── release_build.sh
│ └── src/
│ └── main/
│ └── java/
│ └── com/
│ └── google/
│ └── cloud/
│ └── tools/
│ └── jib/
│ └── gradle/
│ └── extension/
│ ├── GradleData.java
│ └── JibGradlePluginExtension.java
├── jib-maven-plugin/
│ ├── CHANGELOG.md
│ ├── README.md
│ ├── build.gradle
│ ├── gradle.properties
│ ├── kokoro/
│ │ └── release_build.sh
│ ├── scripts/
│ │ └── update_gcs_latest.sh
│ └── src/
│ ├── integration-test/
│ │ └── java/
│ │ └── com/
│ │ └── google/
│ │ └── cloud/
│ │ └── tools/
│ │ └── jib/
│ │ └── maven/
│ │ ├── BuildDockerMojoIntegrationTest.java
│ │ ├── BuildImageMojoIntegrationTest.java
│ │ └── BuildTarMojoIntegrationTest.java
│ ├── main/
│ │ └── java/
│ │ └── com/
│ │ └── google/
│ │ └── cloud/
│ │ └── tools/
│ │ └── jib/
│ │ └── maven/
│ │ ├── BuildDockerMojo.java
│ │ ├── BuildImageMojo.java
│ │ ├── BuildTarMojo.java
│ │ ├── JibPluginConfiguration.java
│ │ ├── MavenExtensionData.java
│ │ ├── MavenHelpfulSuggestions.java
│ │ ├── MavenProjectProperties.java
│ │ ├── MavenRawConfiguration.java
│ │ ├── MavenSettingsProxyProvider.java
│ │ ├── MavenSettingsServerCredentials.java
│ │ ├── MojoCommon.java
│ │ └── skaffold/
│ │ ├── CheckJibVersionMojo.java
│ │ ├── FilesMojoV2.java
│ │ ├── InitMojo.java
│ │ ├── PackageGoalsMojo.java
│ │ ├── SkaffoldBindingMojo.java
│ │ ├── SkaffoldConfiguration.java
│ │ └── SyncMapMojo.java
│ └── test/
│ ├── java/
│ │ └── com/
│ │ └── google/
│ │ └── cloud/
│ │ └── tools/
│ │ └── jib/
│ │ └── maven/
│ │ ├── JibPluginConfigurationTest.java
│ │ ├── MavenProjectPropertiesExtensionTest.java
│ │ ├── MavenProjectPropertiesTest.java
│ │ ├── MavenRawConfigurationTest.java
│ │ ├── MavenSettingsProxyProviderTest.java
│ │ ├── MavenSettingsServerCredentialsTest.java
│ │ ├── MojoCommonTest.java
│ │ ├── SettingsFixture.java
│ │ ├── SkippedGoalVerifier.java
│ │ ├── TestProject.java
│ │ ├── TestRepository.java
│ │ └── skaffold/
│ │ ├── CheckJibVersionMojoTest.java
│ │ ├── FilesMojoV2KotlinTest.java
│ │ ├── FilesMojoV2Test.java
│ │ ├── InitMojoTest.java
│ │ ├── PackageGoalsMojoTest.java
│ │ └── SyncMapMojoTest.java
│ └── resources/
│ ├── maven/
│ │ ├── application/
│ │ │ ├── dependencies/
│ │ │ │ ├── another/
│ │ │ │ │ └── one/
│ │ │ │ │ └── dependency-1.0.0.jar
│ │ │ │ ├── dependency-1.0.0.jar
│ │ │ │ ├── dependencyX-1.0.0-SNAPSHOT.jar
│ │ │ │ ├── library.jarC.jar
│ │ │ │ ├── libraryA.jar
│ │ │ │ ├── libraryB.jar
│ │ │ │ └── more/
│ │ │ │ └── dependency-1.0.0.jar
│ │ │ ├── output/
│ │ │ │ ├── directory/
│ │ │ │ │ └── somefile
│ │ │ │ ├── resourceA
│ │ │ │ ├── resourceB
│ │ │ │ └── world
│ │ │ └── source/
│ │ │ ├── HelloWorld.java
│ │ │ ├── package/
│ │ │ │ └── some.java
│ │ │ └── some.java
│ │ ├── projects/
│ │ │ ├── default-target/
│ │ │ │ ├── libs/
│ │ │ │ │ └── dependency-1.0.0.jar
│ │ │ │ ├── pom.xml
│ │ │ │ └── src/
│ │ │ │ └── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── com/
│ │ │ │ │ └── test/
│ │ │ │ │ └── HelloWorld.java
│ │ │ │ └── resources/
│ │ │ │ └── world
│ │ │ ├── empty/
│ │ │ │ ├── pom-broken-user.xml
│ │ │ │ ├── pom.xml
│ │ │ │ └── src/
│ │ │ │ └── main/
│ │ │ │ └── java/
│ │ │ │ └── com/
│ │ │ │ └── test/
│ │ │ │ └── Empty.java
│ │ │ ├── multi/
│ │ │ │ ├── complex-service/
│ │ │ │ │ ├── fake-remote-repo/
│ │ │ │ │ │ └── com/
│ │ │ │ │ │ └── google/
│ │ │ │ │ │ └── cloud/
│ │ │ │ │ │ └── tools/
│ │ │ │ │ │ └── tiny-test-lib/
│ │ │ │ │ │ ├── 0.0.1-SNAPSHOT/
│ │ │ │ │ │ │ ├── maven-metadata-local.xml
│ │ │ │ │ │ │ ├── tiny-test-lib-0.0.1-SNAPSHOT.jar
│ │ │ │ │ │ │ └── tiny-test-lib-0.0.1-SNAPSHOT.pom
│ │ │ │ │ │ └── maven-metadata-local.xml
│ │ │ │ │ ├── pom.xml
│ │ │ │ │ └── src/
│ │ │ │ │ └── main/
│ │ │ │ │ ├── extra-resources-1/
│ │ │ │ │ │ └── resource1.txt
│ │ │ │ │ ├── extra-resources-2/
│ │ │ │ │ │ └── resource2.txt
│ │ │ │ │ ├── java/
│ │ │ │ │ │ └── com/
│ │ │ │ │ │ └── test/
│ │ │ │ │ │ └── HelloWorld.java
│ │ │ │ │ ├── jib1/
│ │ │ │ │ │ └── foo
│ │ │ │ │ └── jib2/
│ │ │ │ │ └── bar
│ │ │ │ ├── lib/
│ │ │ │ │ ├── pom.xml
│ │ │ │ │ └── src/
│ │ │ │ │ ├── main/
│ │ │ │ │ │ └── java/
│ │ │ │ │ │ └── com/
│ │ │ │ │ │ └── lib/
│ │ │ │ │ │ └── Lib.java
│ │ │ │ │ └── test/
│ │ │ │ │ └── java/
│ │ │ │ │ └── com/
│ │ │ │ │ └── lib/
│ │ │ │ │ └── LibTest.java
│ │ │ │ ├── pom.xml
│ │ │ │ └── simple-service/
│ │ │ │ ├── pom.xml
│ │ │ │ └── src/
│ │ │ │ └── main/
│ │ │ │ └── java/
│ │ │ │ └── com/
│ │ │ │ └── test/
│ │ │ │ └── HelloWorld.java
│ │ │ ├── simple/
│ │ │ │ ├── libs/
│ │ │ │ │ └── dependency-1.0.0.jar
│ │ │ │ ├── mock-docker.sh
│ │ │ │ ├── pom-complex-properties.xml
│ │ │ │ ├── pom-complex.xml
│ │ │ │ ├── pom-cred-helper-1.xml
│ │ │ │ ├── pom-cred-helper-2.xml
│ │ │ │ ├── pom-dockerclient.xml
│ │ │ │ ├── pom-extra-dirs-filtering.xml
│ │ │ │ ├── pom-extra-dirs.xml
│ │ │ │ ├── pom-jar-containerization.xml
│ │ │ │ ├── pom-java11-incompatible.xml
│ │ │ │ ├── pom-java11.xml
│ │ │ │ ├── pom-localbase.xml
│ │ │ │ ├── pom-multiplatform-build.xml
│ │ │ │ ├── pom-no-to-image.xml
│ │ │ │ ├── pom-skaffold-config.xml
│ │ │ │ ├── pom-timestamps-custom.xml
│ │ │ │ ├── pom.xml
│ │ │ │ └── src/
│ │ │ │ └── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── com/
│ │ │ │ │ └── test/
│ │ │ │ │ └── HelloWorld.java
│ │ │ │ ├── jib-custom/
│ │ │ │ │ ├── bar/
│ │ │ │ │ │ └── cat
│ │ │ │ │ └── foo
│ │ │ │ ├── jib-custom-2/
│ │ │ │ │ └── baz
│ │ │ │ ├── jib-custom-3/
│ │ │ │ │ ├── cat.json
│ │ │ │ │ ├── cat.txt
│ │ │ │ │ └── sub/
│ │ │ │ │ ├── a.json
│ │ │ │ │ └── a.txt
│ │ │ │ ├── jib-custom-4/
│ │ │ │ │ ├── bar
│ │ │ │ │ └── foo
│ │ │ │ └── resources/
│ │ │ │ └── world
│ │ │ ├── spring-boot/
│ │ │ │ ├── pom.xml
│ │ │ │ └── src/
│ │ │ │ └── main/
│ │ │ │ └── java/
│ │ │ │ └── hello/
│ │ │ │ ├── Application.java
│ │ │ │ └── HelloController.java
│ │ │ ├── spring-boot-multi/
│ │ │ │ ├── pom.xml
│ │ │ │ ├── service-1/
│ │ │ │ │ ├── pom.xml
│ │ │ │ │ └── src/
│ │ │ │ │ └── main/
│ │ │ │ │ └── java/
│ │ │ │ │ └── com/
│ │ │ │ │ └── test/
│ │ │ │ │ └── HelloWorld.java
│ │ │ │ └── service-2/
│ │ │ │ ├── pom.xml
│ │ │ │ └── src/
│ │ │ │ └── main/
│ │ │ │ └── java/
│ │ │ │ └── com/
│ │ │ │ └── test/
│ │ │ │ └── HelloWorld.java
│ │ │ └── war_servlet25/
│ │ │ ├── pom-tomcat.xml
│ │ │ ├── pom.xml
│ │ │ └── src/
│ │ │ ├── extra_js/
│ │ │ │ └── bogus.js
│ │ │ ├── extra_static/
│ │ │ │ └── bogus.html
│ │ │ └── main/
│ │ │ ├── java/
│ │ │ │ └── example/
│ │ │ │ └── HelloWorld.java
│ │ │ ├── resources/
│ │ │ │ └── world
│ │ │ └── webapp/
│ │ │ ├── META-INF/
│ │ │ │ └── MANIFEST.MF
│ │ │ ├── WEB-INF/
│ │ │ │ └── web.xml
│ │ │ └── index.html
│ │ ├── settings/
│ │ │ ├── bad-encrypted-proxy-settings.xml
│ │ │ ├── encrypted-proxy-settings.xml
│ │ │ ├── http-only-proxy-settings.xml
│ │ │ ├── https-only-proxy-settings.xml
│ │ │ ├── no-active-proxy-settings.xml
│ │ │ ├── readme
│ │ │ ├── settings-security.empty.xml
│ │ │ ├── settings-security.xml
│ │ │ └── settings.xml
│ │ ├── testM2/
│ │ │ └── com/
│ │ │ └── test/
│ │ │ ├── dependency/
│ │ │ │ ├── 1.0.0/
│ │ │ │ │ ├── _remote.repositories
│ │ │ │ │ ├── dependency-1.0.0.jar
│ │ │ │ │ └── dependency-1.0.0.pom
│ │ │ │ └── maven-metadata-local.xml
│ │ │ └── dependencyX/
│ │ │ ├── 1.0.0-SNAPSHOT/
│ │ │ │ ├── _remote.repositories
│ │ │ │ ├── dependencyX-1.0.0-SNAPSHOT.jar
│ │ │ │ ├── dependencyX-1.0.0-SNAPSHOT.pom
│ │ │ │ └── maven-metadata-local.xml
│ │ │ └── maven-metadata-local.xml
│ │ └── webapp/
│ │ └── final-name/
│ │ ├── META-INF/
│ │ │ └── context.xml
│ │ ├── Test.jsp
│ │ └── WEB-INF/
│ │ ├── classes/
│ │ │ └── package/
│ │ │ └── test.properties
│ │ ├── lib/
│ │ │ ├── dependency-1.0.0.jar
│ │ │ └── dependencyX-1.0.0-SNAPSHOT.jar
│ │ └── web.xml
│ └── mockito-extensions/
│ └── org.mockito.plugins.MockMaker
├── jib-maven-plugin-extension-api/
│ ├── CHANGELOG.md
│ ├── build.gradle
│ ├── gradle.properties
│ ├── kokoro/
│ │ └── release_build.sh
│ └── src/
│ └── main/
│ └── java/
│ └── com/
│ └── google/
│ └── cloud/
│ └── tools/
│ └── jib/
│ └── maven/
│ └── extension/
│ ├── JibMavenPluginExtension.java
│ └── MavenData.java
├── jib-plugins-common/
│ ├── README.md
│ ├── build.gradle
│ ├── gradle.properties
│ └── src/
│ ├── main/
│ │ └── java/
│ │ └── com/
│ │ └── google/
│ │ └── cloud/
│ │ └── tools/
│ │ └── jib/
│ │ └── plugins/
│ │ └── common/
│ │ ├── AuthProperty.java
│ │ ├── BuildStepsExecutionException.java
│ │ ├── ConfigurationPropertyValidator.java
│ │ ├── ContainerizingMode.java
│ │ ├── DefaultCredentialRetrievers.java
│ │ ├── ExtraDirectoryNotFoundException.java
│ │ ├── HelpfulSuggestions.java
│ │ ├── ImageMetadataOutput.java
│ │ ├── IncompatibleBaseImageJavaVersionException.java
│ │ ├── InferredAuthException.java
│ │ ├── InferredAuthProvider.java
│ │ ├── InvalidAppRootException.java
│ │ ├── InvalidContainerVolumeException.java
│ │ ├── InvalidContainerizingModeException.java
│ │ ├── InvalidCreationTimeException.java
│ │ ├── InvalidFilesModificationTimeException.java
│ │ ├── InvalidPlatformException.java
│ │ ├── InvalidWorkingDirectoryException.java
│ │ ├── JavaContainerBuilderHelper.java
│ │ ├── JibBuildRunner.java
│ │ ├── MainClassInferenceException.java
│ │ ├── MainClassResolver.java
│ │ ├── PluginConfigurationProcessor.java
│ │ ├── PluginExtensionLogger.java
│ │ ├── ProjectProperties.java
│ │ ├── PropertyNames.java
│ │ ├── RawConfiguration.java
│ │ ├── SkaffoldFilesOutput.java
│ │ ├── SkaffoldInitOutput.java
│ │ ├── SkaffoldSyncMapTemplate.java
│ │ ├── TimerEventHandler.java
│ │ ├── UpdateChecker.java
│ │ ├── VersionChecker.java
│ │ ├── ZipUtil.java
│ │ ├── globalconfig/
│ │ │ ├── GlobalConfig.java
│ │ │ ├── GlobalConfigTemplate.java
│ │ │ ├── InvalidGlobalConfigException.java
│ │ │ └── RegistryMirrorsTemplate.java
│ │ └── logging/
│ │ ├── AnsiLoggerWithFooter.java
│ │ ├── ConsoleLogger.java
│ │ ├── ConsoleLoggerBuilder.java
│ │ ├── PlainConsoleLogger.java
│ │ ├── ProgressDisplayGenerator.java
│ │ └── SingleThreadedExecutor.java
│ └── test/
│ ├── java/
│ │ └── com/
│ │ └── google/
│ │ └── cloud/
│ │ └── tools/
│ │ └── jib/
│ │ ├── api/
│ │ │ ├── HttpRequestTester.java
│ │ │ └── JibContainerBuilderTestHelper.java
│ │ └── plugins/
│ │ └── common/
│ │ ├── ConfigurationPropertyValidatorTest.java
│ │ ├── ContainerizingModeTest.java
│ │ ├── DefaultCredentialRetrieversTest.java
│ │ ├── HelpfulSuggestionsTest.java
│ │ ├── ImageMetadataOutputTest.java
│ │ ├── JavaContainerBuilderHelperTest.java
│ │ ├── JibBuildRunnerTest.java
│ │ ├── MainClassResolverTest.java
│ │ ├── PluginConfigurationProcessorTest.java
│ │ ├── SkaffoldFilesOutputTest.java
│ │ ├── SkaffoldSyncMapTemplateTest.java
│ │ ├── TimerEventHandlerTest.java
│ │ ├── UpdateCheckerTest.java
│ │ ├── VersionCheckerTest.java
│ │ ├── ZipUtilTest.java
│ │ ├── globalconfig/
│ │ │ └── GlobalConfigTest.java
│ │ └── logging/
│ │ ├── AnsiLoggerWithFooterTest.java
│ │ ├── ConsoleLoggerBuilderTest.java
│ │ ├── PlainConsoleLoggerTest.java
│ │ ├── ProgressDisplayGeneratorTest.java
│ │ └── SingleThreadedExecutorTest.java
│ └── resources/
│ └── plugins-common/
│ └── exploded-war/
│ ├── META-INF/
│ │ └── context.xml
│ ├── Test.jsp
│ └── WEB-INF/
│ ├── classes/
│ │ └── package/
│ │ └── test.properties
│ ├── lib/
│ │ ├── dependency-1.0.0.jar
│ │ └── dependencyX-1.0.0-SNAPSHOT.jar
│ └── web.xml
├── jib-plugins-extension-common/
│ ├── build.gradle
│ ├── gradle.properties
│ ├── kokoro/
│ │ └── release_build.sh
│ └── src/
│ └── main/
│ └── java/
│ └── com/
│ └── google/
│ └── cloud/
│ └── tools/
│ └── jib/
│ └── plugins/
│ └── extension/
│ ├── ExtensionLogger.java
│ ├── JibPluginExtension.java
│ ├── JibPluginExtensionException.java
│ └── NullExtension.java
├── kokoro/
│ ├── continuous.bat
│ ├── continuous.sh
│ ├── docker_setup_macos.sh
│ ├── docker_setup_ubuntu.sh
│ ├── presubmit.bat
│ └── presubmit.sh
├── proposals/
│ ├── README.md
│ ├── archives/
│ │ ├── README.md
│ │ ├── build_tarball.md
│ │ ├── cache_v2.md
│ │ ├── docker_build.md
│ │ ├── events.md
│ │ ├── java_agents_and_more_layers.md
│ │ ├── jib_core_library.md
│ │ ├── log_output_v2.md
│ │ ├── maven_configuration_v2.md
│ │ ├── output_files.md
│ │ ├── progress_output.md
│ │ ├── reproducible_base_image.md
│ │ ├── reproducible_jars.md
│ │ └── skaffold_config.md
│ ├── buildfile.md
│ ├── cli-jar-processing.md
│ ├── container-build-plan-spec.md
│ ├── jib-cli-surface.md
│ └── tags-on-existing-images.md
└── settings.gradle
================================================
FILE CONTENTS
================================================
================================================
FILE: .allstar/binary_artifacts.yaml
================================================
# Ignore reason: jars are used for testing purposes only
ignorePaths:
- jib-gradle-plugin/src/integration-test/resources/gradle/projects/default-target/libs/dependency-1.0.0.jar
- jib-gradle-plugin/src/integration-test/resources/gradle/projects/simple/libs/dependency-1.0.0.jar
================================================
FILE: .gitattributes
================================================
*.bat eol=crlf
*.cmd eol=crlf
================================================
FILE: .github/ISSUE_TEMPLATE/issue_report.md
================================================
---
name: Issue report
about: Create a report to help us improve
title: ''
labels: ''
assignees: ''
---
<!--
Please follow the guidelines below before opening an issue:
1. Ensure the issue was not already reported.
2. Open a new issue if you are unable to find an existing issue addressing your problem. Make sure to include a title and clear description, as much relevant information as possible, and a code sample or an executable test case demonstrating the expected behavior that is not occurring.
3. Discuss the priority and potential solutions with the maintainers in the issue. The maintainers would review the issue and add a label "Accepting Contributions" once the issue is ready for accepting contributions.
4. Open a PR only if the issue is labeled with "Accepting Contributions", ensure the PR description clearly describes the problem and solution. Note that an open PR without an issues labeled with "Accepting Contributions" will not be accepted.
Please reproduce with the latest version of Jib.
If you are encountering errors pulling or pushing to remote registries,
please check our Frequently Asked Questions before filing an issue:
https://github.com/GoogleContainerTools/jib/blob/master/docs/faq.md#registry-errors
-->
**Environment**:
- *Jib version:*
- *Build tool:* <!-- Maven/Gradle, including version -->
- *OS:*
**Description of the issue**:
**Expected behavior**:
**Steps to reproduce**:
<!-- Please provide a minimal and precise series of steps -->
1.
2.
3.
**`jib-maven-plugin` Configuration**: <!-- Delete this section if not used -->
```xml
PASTE YOUR pom.xml CONFIGURATION HERE
```
**`jib-gradle-plugin` Configuration**: <!-- Delete this section if not used -->
```groovy
PASTE YOUR build.gradle CONFIGURATION HERE
```
**Log output**: <!-- If applicable, provide relevant log output -->
**Additional Information**: <!-- Any additional information that may be helpful -->
<!-- Thanks for contributing! -->
================================================
FILE: .github/PULL_REQUEST_TEMPLATE.md
================================================
Thank you for your interest in contributing! For general guidelines, please refer to
the [contributing guide](https://github.com/GoogleContainerTools/jib/blob/master/CONTRIBUTING.md).
Please follow the guidelines below before opening an issue or a PR:
- [ ] Ensure the issue was not already reported.
- [ ] Create a new issue at https://github.com/GoogleContainerTools/jib/issues/new/choose if you are unable to find an existing issue addressing your problem. Make sure to include a title and clear description, as much relevant information as possible, and a code sample or an executable test case demonstrating the expected behavior that is not occurring.
- [ ] Discuss the priority and potential solutions with the maintainers in the issue. The maintainers would review the issue and add a label "Accepting Contributions" once the issue is ready for accepting contributions.
- [ ] Open a PR only if the issue is labeled with "Accepting Contributions", ensure the PR description clearly describes the problem and solution. Note that an open PR without an issues labeled with "Accepting Contributions" will not be accepted.
- [ ] Verify that integration tests and unit tests are passing after the change.
- [ ] Address all checkstyle issues. Refer to the [style guide](https://github.com/GoogleContainerTools/jib/blob/master/STYLE_GUIDE.md).
Fixes #<issue_number_goes_here> 🛠️
================================================
FILE: .github/RELEASE_TEMPLATES/cli_release_checklist.md
================================================
---
title: CLI Release {{ env.RELEASE_NAME }}
labels: release
---
## Requirements
- [ ] ⚠️ Ensure the release process has succeeded before proceeding
- [ ] ⚠️ Publish [Release]({{ env.RELEASE_DRAFT }}) after adding CHANGELOG entries ([example](https://github.com/GoogleContainerTools/jib/releases/tag/v0.8.0-cli))
## GCS
- [ ] Run {{ env.GCS_UPDATE_SCRIPT }} script to update GCS with the latest version number
## Github
- [ ] Update [CHANGELOG.md]({{ env.CHANGELOG_URL }})
- [ ] Update [README.md]({{ env.README_URL }})
- [ ] Merge PR ({{ env.RELEASE_PR }})
================================================
FILE: .github/RELEASE_TEMPLATES/core_release_checklist.md
================================================
---
title: Core Release {{ env.RELEASE_NAME }}
labels: release
---
## Requirements
- [ ] ⚠️ Ensure the release process has succeeded before proceeding
## Github
- [ ] Update [CHANGELOG.md]({{ env.CHANGELOG_URL }})
- [ ] Update [README.md]({{ env.README_URL }})
- [ ] Publish [Release]({{ env.RELEASE_DRAFT }})
- [ ] Merge PR ({{ env.RELEASE_PR }})
================================================
FILE: .github/RELEASE_TEMPLATES/plugin_release_checklist.md
================================================
---
title: Plugin Release {{ env.RELEASE_NAME }}
labels: release
---
## Requirements
- [ ] ⚠️ Ensure the release process has succeeded before proceeding
## GCS
- [ ] Run {{ env.GCS_UPDATE_SCRIPT }} script to update GCS with the latest version number
## Github
- [ ] Update [CHANGELOG.md]({{ env.CHANGELOG_URL }})
- [ ] Update [README.md]({{ env.README_URL }})
- [ ] Search/replace the old published version with the new published version in [examples](https://github.com/GoogleContainerTools/jib/tree/master/examples)
- [ ] Publish [Release]({{ env.RELEASE_DRAFT }})
- [ ] Merge PR ({{ env.RELEASE_PR }})
#### Jib-Extensions
- [ ] Update versions in [Jib Extensions](https://github.com/GoogleContainerTools/jib-extensions)
- [ ] If there were Gradle API or Jib API changes, double-check compatibility and update Version Matrix on jib-extensions. It may require re-releasing first-party extensions. See [jib-extensions#45](https://github.com/GoogleContainerTools/jib-extensions/pull/45), [jib-extensions#44](https://github.com/GoogleContainerTools/jib-extensions/pull/44), and [jib-extensions#42](https://github.com/GoogleContainerTools/jib-extensions/pull/42)
================================================
FILE: .github/dependabot.yml
================================================
version: 2
updates:
- package-ecosystem: "gradle"
directory: "/"
schedule:
interval: "daily"
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "daily"
================================================
FILE: .github/workflows/gradle-wrapper-validation.yml
================================================
name: "Validate Gradle Wrapper"
on: [push, pull_request]
jobs:
validation:
name: "Gradle wrapper validation"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: gradle/wrapper-validation-action@v3.5.0
================================================
FILE: .github/workflows/jib-cli-release.yml
================================================
name: Release Jib CLI
on:
workflow_dispatch:
inputs:
release_version:
description: new release version
required: true
default: (for example, 0.1.0)
permissions:
contents: write
issues: write
jobs:
release:
name: Release Jib CLI
runs-on: ubuntu-latest
outputs:
hashes: ${{ steps.hash.outputs.hashes }}
upload_url: ${{ steps.create-release.outputs.upload_url }}
steps:
- name: Check out code
uses: actions/checkout@v4
- name: Set up JDK 8
uses: actions/setup-java@v3
with:
java-version: '8'
distribution: 'temurin'
- name: Build project
run: |
if [[ ! "${GITHUB_EVENT_INPUTS_RELEASE_VERSION}" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
echo 'version "${GITHUB_EVENT_INPUTS_RELEASE_VERSION}" not in ###.###.### format'
exit 1
fi
# TODO: run integration test? (Requries auth with GCP.)
./gradlew clean build --stacktrace
env:
GITHUB_EVENT_INPUTS_RELEASE_VERSION: ${{ github.event.inputs.release_version }}
- name: Run Gradle release
run: |
git checkout -b cli-release-v${GITHUB_EVENT_INPUTS_RELEASE_VERSION}
git config user.email ${GITHUB_ACTOR}@users.noreply.github.com
git config user.name ${GITHUB_ACTOR}
# This creates the tag (e.g., "v0.1.0-cli") and pushes the updated
# branch (e.g., "cli-release-v0.1.0") and the new tag.
./gradlew jib-cli:release \
-Prelease.useAutomaticVersion=true \
-Prelease.releaseVersion=${GITHUB_EVENT_INPUTS_RELEASE_VERSION}
env:
GITHUB_EVENT_INPUTS_RELEASE_VERSION: ${{ github.event.inputs.release_version }}
- name: Build Jib CLI release binaries
run: |
git checkout v${GITHUB_EVENT_INPUTS_RELEASE_VERSION}-cli
./gradlew jib-cli:instDist --stacktrace
cd jib-cli/build/distributions
mv jib-${GITHUB_EVENT_INPUTS_RELEASE_VERSION}.zip jib-jre-${GITHUB_EVENT_INPUTS_RELEASE_VERSION}.zip
sha256sum jib-jre-${GITHUB_EVENT_INPUTS_RELEASE_VERSION}.zip > zip.sha256
env:
GITHUB_EVENT_INPUTS_RELEASE_VERSION: ${{ github.event.inputs.release_version }}
- name: Generate SLSA subject for Jib CLI release binaries
id: hash
working-directory: jib-cli/build/distributions
run: echo "hashes=$(cat zip.sha256 | base64 -w0)" >> $GITHUB_OUTPUT
- name: Create pull request
uses: repo-sync/pull-request@v2.12.1
id: create-pr
with:
github_token: ${{ secrets.CLOUD_JAVA_BOT_GITHUB_TOKEN }}
source_branch: cli-release-v${{ github.event.inputs.release_version }}
pr_title: "CLI release v${{ github.event.inputs.release_version }}"
pr_body: "To be merged after the release is complete."
pr_label: "PR: Merge After Release"
- name: Draft GitHub release
uses: actions/create-release@v1.1.4
id: create-release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: v${{ github.event.inputs.release_version }}-cli
release_name: jib-cli v${{ github.event.inputs.release_version }}
draft: true
body: |
### Major Changes
See [CHANGELOG.md](https://github.com/GoogleContainerTools/jib/blob/master/jib-cli/CHANGELOG.md) for more details.
- name: Upload Jib CLI
uses: actions/upload-release-asset@v1.0.2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create-release.outputs.upload_url }}
asset_path: ./jib-cli/build/distributions/jib-jre-${{ github.event.inputs.release_version }}.zip
asset_name: jib-jre-${{ github.event.inputs.release_version }}.zip
asset_content_type: application/zip
- name: Upload Jib CLI checksum
uses: actions/upload-release-asset@v1.0.2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create-release.outputs.upload_url }}
asset_path: ./jib-cli/build/distributions/zip.sha256
asset_name: jib-jre-${{ github.event.inputs.release_version }}.zip.sha256
asset_content_type: text/plain
- name: Create Jib CLI release checklist issue
uses: JasonEtco/create-an-issue@v2.9.2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
RELEASE_NAME: v${{ github.event.inputs.release_version }}-cli
CHANGELOG_URL: https://github.com/GoogleContainerTools/jib/blob/master/jib-cli/CHANGELOG.md
README_URL: https://github.com/GoogleContainerTools/jib/blob/master/jib-cli/README.md
GCS_UPDATE_SCRIPT: "`./jib-cli/scripts/update_gcs_latest.sh ${{ github.event.inputs.release_version }}`"
RELEASE_DRAFT: ${{ steps.create-release.outputs.html_url }}
RELEASE_PR: ${{steps.create-pr.outputs.pr_url}}
with:
filename: .github/RELEASE_TEMPLATES/cli_release_checklist.md
provenance:
needs: [release]
permissions:
actions: read # To read the workflow path.
id-token: write # To sign the provenance.
contents: write # To add assets to a release.
uses: slsa-framework/slsa-github-generator/.github/workflows/generator_generic_slsa3.yml@v1.10.0
with:
base64-subjects: "${{ needs.release.outputs.hashes }}"
upload:
needs: [release, provenance]
permissions:
contents: write
runs-on: ubuntu-latest
steps:
- name: Download attestation
uses: actions/download-artifact@v3
with:
name: "${{ needs.provenance.outputs.attestation-name }}"
- uses: actions/upload-release-asset@v1.0.2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ needs.release.outputs.upload_url }}
asset_path: "${{ needs.provenance.outputs.attestation-name }}"
asset_name: "${{ needs.provenance.outputs.attestation-name }}"
asset_content_type: application/json
================================================
FILE: .github/workflows/prepare-release.yml
================================================
name: Prepare Jib release
on:
workflow_dispatch:
inputs:
project:
description: Jib project to release
required: true
default: (build-plan | core | maven | gradle | extension-common | maven-extension | gradle-extension)
release_version:
description: new release version
required: true
default: (for example, 0.1.0)
permissions:
contents: write
issues: write
jobs:
release:
name: Prepare Jib release
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@v4
- name: Set up JDK 8
uses: actions/setup-java@v3
with:
java-version: '8'
distribution: 'temurin'
- name: Check input
run: |
echo '* input project: "${GITHUB_EVENT_INPUTS_PROJECT}"'
case ${GITHUB_EVENT_INPUTS_PROJECT} in
build-plan|core|maven|gradle|extension-common|maven-extension|gradle-extension) ;;
*) echo 'invalid input project name "${GITHUB_EVENT_INPUTS_PROJECT}"'
exit 1
;;
esac
if [[ ! "${GITHUB_EVENT_INPUTS_RELEASE_VERSION}" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
echo 'version "${GITHUB_EVENT_INPUTS_RELEASE_VERSION}" not in ###.###.### format'
exit 1
fi
env:
GITHUB_EVENT_INPUTS_PROJECT: ${{ github.event.inputs.project }}
GITHUB_EVENT_INPUTS_RELEASE_VERSION: ${{ github.event.inputs.release_version }}
- name: Build project
run: |
# TODO: run integration test? (Requries auth with GCP.)
./gradlew clean build --stacktrace
- name: Run Gradle release
run: |
git checkout -b ${GITHUB_EVENT_INPUTS_PROJECT}-release-v${GITHUB_EVENT_INPUTS_RELEASE_VERSION}
git config user.email ${GITHUB_ACTOR}@users.noreply.github.com
git config user.name ${GITHUB_ACTOR}
PROJECT=$( case ${GITHUB_EVENT_INPUTS_PROJECT} in
extension-common) echo jib-plugins-extension-common ;;
maven-extension) echo jib-maven-plugin-extension-api ;;
gradle-extension) echo jib-gradle-plugin-extension-api ;;
maven|gradle) echo jib-${GITHUB_EVENT_INPUTS_PROJECT}-plugin ;;
*) echo jib-${GITHUB_EVENT_INPUTS_PROJECT} ;;
esac )
# This creates the tag (e.g., "v0.1.0-gradle") and pushes the updated
# branch (e.g., "gradle-release-v0.1.0") and the new tag.
./gradlew "${PROJECT}":release \
-Prelease.useAutomaticVersion=true \
-Prelease.releaseVersion=${GITHUB_EVENT_INPUTS_RELEASE_VERSION}
env:
GITHUB_EVENT_INPUTS_PROJECT: ${{ github.event.inputs.project }}
GITHUB_EVENT_INPUTS_RELEASE_VERSION: ${{ github.event.inputs.release_version }}
- name: Create pull request
uses: repo-sync/pull-request@v2.12.1
id: create-pr
with:
github_token: ${{ secrets.CLOUD_JAVA_BOT_GITHUB_TOKEN }}
source_branch: ${{ github.event.inputs.project }}-release-v${{ github.event.inputs.release_version }}
pr_title: "${{ github.event.inputs.project }} release v${{ github.event.inputs.release_version }}"
pr_body: "To be merged after the release is complete."
pr_label: "PR: Merge After Release"
- name: Draft Maven/Gradle GitHub release
uses: actions/create-release@v1.1.4
id: create-plugin-release
if: ${{ github.event.inputs.project == 'maven' || github.event.inputs.project == 'gradle' }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: v${{ github.event.inputs.release_version }}-${{ github.event.inputs.project }}
release_name: jib-${{ github.event.inputs.project }}-plugin v${{ github.event.inputs.release_version }}
draft: true
body: |
**Run `./jib-${{ github.event.inputs.project }}-plugin/scripts/update_gcs_latest.sh ${{ github.event.inputs.release_version }}`
when the release is complete to update the latest version string on GCS.**
---
### Major Changes
See [CHANGELOG.md](https://github.com/GoogleContainerTools/jib/blob/master/jib-${{ github.event.inputs.project }}-plugin/CHANGELOG.md) for more details.
- name: Create Maven/Gradle release checklist issue
uses: JasonEtco/create-an-issue@v2.9.2
if: ${{ github.event.inputs.project == 'maven' || github.event.inputs.project == 'gradle' }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
RELEASE_NAME: v${{ github.event.inputs.release_version }}-${{ github.event.inputs.project }}
CHANGELOG_URL: https://github.com/GoogleContainerTools/jib/blob/master/jib-${{ github.event.inputs.project }}-plugin/CHANGELOG.md
README_URL: https://github.com/GoogleContainerTools/jib/blob/master/jib-${{ github.event.inputs.project }}-plugin/README.md
GCS_UPDATE_SCRIPT: "`./jib-${{ github.event.inputs.project }}-plugin/scripts/update_gcs_latest.sh ${{ github.event.inputs.release_version }}`"
RELEASE_DRAFT: ${{ steps.create-plugin-release.outputs.html_url }}
RELEASE_PR: ${{steps.create-pr.outputs.pr_url}}
with:
filename: .github/RELEASE_TEMPLATES/plugin_release_checklist.md
- name: Draft Core GitHub release
uses: actions/create-release@v1.1.4
id: create-core-release
if: ${{ github.event.inputs.project == 'core' }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: v${{ github.event.inputs.release_version }}-core
release_name: jib-core v${{ github.event.inputs.release_version }}
draft: true
body: |
### Major Changes
See [CHANGELOG.md](https://github.com/GoogleContainerTools/jib/blob/master/jib-core/CHANGELOG.md) for more details.
- name: Create Core release checklist issue
uses: JasonEtco/create-an-issue@v2.9.2
if: ${{ github.event.inputs.project == 'core' }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
RELEASE_NAME: v${{ github.event.inputs.release_version }}-core
CHANGELOG_URL: https://github.com/GoogleContainerTools/jib/blob/master/jib-core/CHANGELOG.md
README_URL: https://github.com/GoogleContainerTools/jib/blob/master/jib-core/README.md
RELEASE_DRAFT: ${{ steps.create-core-release.outputs.html_url }}
RELEASE_PR: ${{steps.create-pr.outputs.pr_url}}
with:
filename: .github/RELEASE_TEMPLATES/core_release_checklist.md
================================================
FILE: .github/workflows/sonar.yml
================================================
name: SonarCloud Analysis
on:
push:
branches:
- master
pull_request:
types: [opened, synchronize, reopened]
workflow_dispatch:
schedule:
- cron: '00 6 * * *' # 06:00 UTC every day
jobs:
sonar:
if: github.repository == 'GoogleContainerTools/jib' # Only run on upstream branch
name: Build with Sonar
runs-on: ubuntu-20.04
steps:
- name: Get current date
id: date
run: echo "date=$(date +'%Y-%m-%d' --utc)" >> $GITHUB_OUTPUT
- uses: actions/checkout@v4
with:
fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis
- name: Set up JDK 11
uses: actions/setup-java@v3
with:
distribution: 'adopt'
java-version: 11
- name: Cache SonarCloud packages
uses: actions/cache@v4
with:
path: ~/.sonar/cache
key: ${{ runner.os }}-sonar-${{ steps.date.outputs.date }}
- uses: actions/cache@v4
with:
path: |
~/.m2/repository
~/.gradle/caches
~/.gradle/wrapper
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
restore-keys: |
${{ runner.os }}-gradle-
- name: Test w/ coverage
continue-on-error: true
run: |
./gradlew clean build jacocoTestReport --stacktrace
- name: Build and analyze
continue-on-error: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
run: |
./gradlew sonarqube --stacktrace
================================================
FILE: .github/workflows/unit-tests.yml
================================================
name: Unit Tests
on:
push:
branches:
- master
pull_request:
workflow_dispatch:
jobs:
unit-tests:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
java: [8, 11]
env:
# for gradle
TERM: dumb
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 2
- uses: actions/setup-java@v3
with:
distribution: 'adopt'
java-version: ${{ matrix.java }}
- uses: actions/cache@v4
with:
path: |
~/.m2/repository
~/.gradle/caches
~/.gradle/wrapper
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
restore-keys: |
${{ runner.os }}-gradle-
- name: Run tests
run: |
./gradlew clean build jacocoTestReport --stacktrace
================================================
FILE: .gitignore
================================================
build/
!jib-gradle-plugin/src/test/resources/gradle/application/build/
target/
out
bin/
*.iml
*.ipr
*.iws
.idea
.gradle/
# https://github.com/takari/maven-wrapper#usage-without-binary-jar
**/.mvn/wrapper/maven-wrapper.jar
.settings/
.classpath
.project
.DS_Store
================================================
FILE: CODE_OF_CONDUCT.md
================================================
# Contributor Code of Conduct
As contributors and maintainers of this project,
and in the interest of fostering an open and welcoming community,
we pledge to respect all people who contribute through reporting issues,
posting feature requests, updating documentation,
submitting pull requests or patches, and other activities.
We are committed to making participation in this project
a harassment-free experience for everyone,
regardless of level of experience, gender, gender identity and expression,
sexual orientation, disability, personal appearance,
body size, race, ethnicity, age, religion, or nationality.
Examples of unacceptable behavior by participants include:
* The use of sexualized language or imagery
* Personal attacks
* Trolling or insulting/derogatory comments
* Public or private harassment
* Publishing other's private information,
such as physical or electronic
addresses, without explicit permission
* Other unethical or unprofessional conduct.
Project maintainers have the right and responsibility to remove, edit, or reject
comments, commits, code, wiki edits, issues, and other contributions
that are not aligned to this Code of Conduct.
By adopting this Code of Conduct,
project maintainers commit themselves to fairly and consistently
applying these principles to every aspect of managing this project.
Project maintainers who do not follow or enforce the Code of Conduct
may be permanently removed from the project team.
This code of conduct applies both within project spaces and in public spaces
when an individual is representing the project or its community.
Instances of abusive, harassing, or otherwise unacceptable behavior
may be reported by opening an issue
or contacting one or more of the project maintainers.
This Code of Conduct is adapted from the [Contributor Covenant](http://contributor-covenant.org), version 1.2.0,
available at [http://contributor-covenant.org/version/1/2/0/](http://contributor-covenant.org/version/1/2/0/)
================================================
FILE: CONTRIBUTING.md
================================================
This project is currently stable, and we are primarily focused on critical bug fixes and platform evolution to ensure it continues to work for its supported use cases.
# Contributing to Jib
Please follow the guidelines below before opening an issue or a PR:
1. Ensure the issue was not already reported.
2. Open a new issue if you are unable to find an existing issue addressing your problem. Make sure to include a title and clear description, as much relevant information as possible, and a code sample or an executable test case demonstrating the expected behavior that is not occurring.
3. Discuss the priority and potential solutions with the maintainers in the issue. The maintainers would review the issue and add a label "Accepting Contributions" once the issue is ready for accepting contributions.
4. Open a PR only if the issue is labeled with "Accepting Contributions", ensure the PR description clearly describes the problem and solution. Note that an open PR without an issues labeled with "Accepting Contributions" will not be accepted.
## Contributor License Agreement
Contributions to this project must be accompanied by a Contributor License
Agreement. You (or your employer) retain the copyright to your contribution;
this simply gives us permission to use and redistribute your contributions as
part of the project. Head over to <https://cla.developers.google.com/> to see
your current agreements on file or to sign a new one.
You generally only need to submit a CLA once, so if you've already submitted one
(even if it was for a different project), you probably don't need to do it
again.
## Code Reviews
All submissions, including submissions by project members, require review. We
use Github pull requests for this purpose.
Before submitting a pull request, please make sure to:
- Identify an existing [issue](https://github.com/GoogleContainerTools/jib/issues) to associate
with your proposed change, or [file a new issue](https://github.com/GoogleContainerTools/jib/issues/new).
- Describe any implementation plans in the issue and wait for a review from the repository maintainers.
### Typical Contribution Cycle
1. Set your git user.email property to the address used for signing the CLA. E.g.
```
git config --global user.email "janedoe@google.com"
```
If you're a Googler or other corporate contributor,
use your corporate email address here, not your personal address.
2. Fork the repository into your own Github account.
3. We follow our own [Java style guide](STYLE_GUIDE.md) that extends the [Google Java Style Guide](https://google.github.io/styleguide/javaguide.html).
3. Please include unit tests (and integration tests if applicable) for all new code.
4. Make sure all existing tests pass (but see the note below about integration tests).
* run `./gradlew clean goJF build integrationTest`
5. Associate the change with an existing issue or file a [new issue](../../issues).
6. Create a pull request!
## Building Jib
Jib comes as 3 public components:
- `jib-core`: a library for building containers
- `jib-maven-plugin`: a Maven plugin that uses `jib-core` and `jib-plugins-common`
- `jib-gradle-plugin`: a Gradle plugin that uses `jib-core` and `jib-plugins-common`
And 1 internal component:
- `jib-plugins-common`: a library with helpers for maven/gradle plugins
The project is configured as a single gradle build. Run `./gradlew build` to build the
whole project. Run `./gradlew install` to install all public components into the
local maven repository.
### Integration Tests
**Note** that in order to run integration tests, you will need to set one of the
following environment variables:
- If you are using a GCP project then set `JIB_INTEGRATION_TESTING_PROJECT` to the GCP project to use for testing;
the registry tested will be `gcr.io/<JIB_INTEGRATION_TESTING_PROJECT>`.
- Configure authentication to Container Registry by following these [steps](https://cloud.google.com/container-registry/docs/advanced-authentication).
- Enable the Google Container Registry API [here](https://console.cloud.google.com/apis/library/containerregistry.googleapis.com).
- If you're not using a GCP project then set `JIB_INTEGRATION_TESTING_LOCATION` to a specific registry for testing. (For example, you can run `docker run -d -p 9990:5000 registry:2` to set up a local registry and set the variable to `localhost:9990`.)
You will also need Docker installed with the daemon running. Note that the
integration tests will create local registries on ports 5000 and 6000.
To run select integration tests, use `--tests=<testPattern>`, see [gradle docs](https://docs.gradle.org/current/javadoc/org/gradle/api/tasks/testing/TestFilter.html) for `testPattern` examples.
# Development Tips
## Java version
Use Java 8 or 11 for development. https://sdkman.io/ is a helpful tool to switch between Java versions.
## Configuring Eclipse
Although jib is a mix of Gradle and Maven projects, we build everything using one
unified gradle build. There is special code to include some projects directly as
source, but importing your project should be pretty straight forward.
1. Ensure you have installed the Gradle tooling for Eclipse, called
_Buildship_ (available from [the Eclipse
Marketplace](https://marketplace.eclipse.org/content/buildship-gradle-integration)).
1. **Import the Gradle project:** Buildship does [not yet support
Eclipse Smart Import](https://github.com/eclipse/buildship/issues/356).
Use _File → Import → Gradle → Existing Gradle Project_
and import `jib`.
Note that you will likely need to re-apply these changes whenever
you refresh or update these projects.
## Debugging the Jib Maven Plugin (`jib-maven-plugin`)
### Build and use a local snapshot
To use a local build of the `jib-maven-plugin`:
1. Build and install `jib-maven-plugin` into your local `~/.m2/repository`
with `./gradlew jib-maven-plugin:install`;
1. Modify your test project's `pom.xml` to reference the `-SNAPSHOT`
version of the `com.google.cloud.tools.jib` plugin.
If developing from within Eclipse with M2Eclipse (the Maven tooling for Eclipse):
1. Modify your test project's `pom.xml` to reference the `-SNAPSHOT`
version of the `com.google.cloud.tools.jib` plugin.
1. Create and launch a _Maven Build_ launch configuration for the
test project, and ensure the _Resolve Workspace artifacts_ is checked.
### Attaching a debugger
Run `mvnDebug jib:build` and attach to port 8000.
If developing with Eclipse and M2Eclipse (the Maven tooling for Eclipse), just launch the _Maven Build_ with _Debug_.
## Debugging the Jib Gradle Plugin (`jib-gradle-plugin`)
### Build and use a local snapshot
To use a local build of the `jib-gradle-plugin`:
1. Build and install `jib-gradle-plugin` into your local `~/.m2/repository`
with `./gradlew jib-gradle-plugin:install`
1. Add a `pluginManagement` block to your test project's `settings.gradle` to enable reading plugins from the local maven repository. It must be the first block in the file before any `include` directives.
```groovy
pluginManagement {
repositories {
mavenLocal()
gradlePluginPortal()
}
}
```
1. Modify your test project's `build.gradle` to use the [latest snapshot version](jib-gradle-plugin/gradle.properties)
```groovy
plugins {
// id 'com.google.cloud.tools.jib' version 'major.minor.patch'
id 'com.google.cloud.tools.jib' version 'major.minor.patch-SNAPSHOT'
}
```
### Attaching a debugger
Attach a debugger to a Gradle instance by running Gradle as follows:
```shell
./gradlew jib \
--no-daemon \
-Dorg.gradle.jvmargs='-agentlib:jdwp:transport=dt_socket,server=y,address=5005,suspend=y'
```
================================================
FILE: LICENSE
================================================
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
================================================
FILE: README.md
================================================

[](https://maven-badges.herokuapp.com/maven-central/com.google.cloud.tools/jib-maven-plugin)
[](https://plugins.gradle.org/plugin/com.google.cloud.tools.jib)



[](https://slsa.dev)
[](https://gitter.im/google/jib)
# Jib
<image src="https://github.com/GoogleContainerTools/jib/raw/master/logo/jib-build-docker-java-container-image.png" alt="Jib - Containerize your Java applications." width="650px" />
| ☑️ Jib User Survey |
| :----- |
| What do you like best about Jib? What needs to be improved? Please tell us by taking a [one-minute survey](https://forms.gle/YRFeamGj51xmgnx28). Your responses will help us understand Jib usage and allow us to serve our customers (you!) better. |
## What is Jib?
Jib builds optimized Docker and [OCI](https://github.com/opencontainers/image-spec) images for your Java applications without a Docker daemon - and without deep mastery of Docker best-practices. It is available as plugins for [Maven](jib-maven-plugin) and [Gradle](jib-gradle-plugin) and as a Java library.
- [Maven](https://maven.apache.org/): See documentation for [jib-maven-plugin](jib-maven-plugin).
- [Gradle](https://gradle.org/): See documentation for [jib-gradle-plugin](jib-gradle-plugin).
- [Jib Core](jib-core): A general-purpose container-building library for Java.
- [Jib CLI](jib-cli): A command-line interface for building images that uses Jib Core.
Jib works well with Google Cloud Build. For details, see [how to use Jib on Google Cloud Build](docs/google-cloud-build.md).
For more information, check out the [official blog post](https://cloudplatform.googleblog.com/2018/07/introducing-jib-build-java-docker-images-better.html) or watch [this talk](https://www.youtube.com/watch?v=H6gR_Cv4yWI) ([slides](https://speakerdeck.com/coollog/build-containers-faster-with-jib-a-google-image-build-tool-for-java-applications)).
## Goals
* **Fast** - Deploy your changes fast. Jib separates your application into multiple layers, splitting dependencies from classes. Now you don’t have to wait for Docker to rebuild your entire Java application - just deploy the layers that changed.
* **Reproducible** - Rebuilding your container image with the same contents always generates the same image. Never trigger an unnecessary update again.
* **Daemonless** - Reduce your CLI dependencies. Build your Docker image from within Maven or Gradle and push to any registry of your choice. *No more writing Dockerfiles and calling docker build/push.*
## Quickstart
* **Maven** - See the jib-maven-plugin [Quickstart](jib-maven-plugin#quickstart).
* **Gradle** - See the jib-gradle-plugin [Quickstart](jib-gradle-plugin#quickstart).
* **Jib Core** - See the Jib Core [Quickstart](jib-core#adding-jib-core-to-your-build).
* **Jib CLI** - See the Jib CLI [doc](jib-cli).
## Examples
The [examples](examples) directory includes the following examples (and more).
* [helloworld](examples/helloworld)
* [Spring Boot](examples/spring-boot)
* [Micronaut](examples/micronaut)
* [Multi-module project](examples/multi-module)
* [Spark Java using Java Agent](examples/java-agent)
## How Jib Works
Whereas traditionally a Java application is built as a single image layer with the application JAR, Jib's build strategy separates the Java application into multiple layers for more granular incremental builds. When you change your code, only your changes are rebuilt, not your entire application. These layers, by default, are layered on top of an [OpenJDK base image](docs/default_base_image.md), but you can also configure a custom base image. For more information, check out the [official blog post](https://cloudplatform.googleblog.com/2018/07/introducing-jib-build-java-docker-images-better.html) or watch [this talk](https://www.youtube.com/watch?v=H6gR_Cv4yWI) ([slides](https://speakerdeck.com/coollog/build-containers-faster-with-jib-a-google-image-build-tool-for-java-applications)).
See also [rules_docker](https://github.com/bazelbuild/rules_docker) for a similar existing container image build tool for the [Bazel build system](https://github.com/bazelbuild/bazel).
## Need Help?
A lot of questions are already answered!
* [Frequently Asked Questions (FAQ)](docs/faq.md)
* [Stack Overflow](https://stackoverflow.com/questions/tagged/jib)
* [GitHub issues](https://stackoverflow.com/questions/tagged/jib)
_For usage questions, please ask them on Stack Overflow._
## Privacy
See the [Privacy page](docs/privacy.md).
## Get involved with the community
We welcome contributions! Here's how you can contribute:
* [Browse issues](https://github.com/GoogleContainerTools/jib/issues) or [file an issue](https://github.com/GoogleContainerTools/jib/issues/new)
* Chat with us on [gitter](https://gitter.im/google/jib)
* Join the [jib-users mailing list](https://groups.google.com/forum/#!forum/jib-users)
* Contribute:
* *Read the [contributing guide](https://github.com/GoogleContainerTools/jib/blob/master/CONTRIBUTING.md) before starting work on an issue*
* Try to fix [good first issues](https://github.com/GoogleContainerTools/jib/labels/good%20first%20issue)
* Help out on [issues that need help](https://github.com/GoogleContainerTools/jib/labels/kind%2Fquestion)
* Join in on [discussion issues](https://github.com/GoogleContainerTools/jib/labels/discuss)
<!-- * Read the [style guide] -->
*Make sure to follow the [Code of Conduct](https://github.com/GoogleContainerTools/jib/blob/master/CODE_OF_CONDUCT.md) when contributing so we can foster an open and welcoming community.*
## Disclaimer
This is not an officially supported Google product.
================================================
FILE: SECURITY.md
================================================
# Security Policy
## Supported Versions
Use this section to tell people about which versions of your project are
currently being supported with security updates.
| Version | Supported |
| ------- | ------------------ |
| jib-maven-plugin v3.x | :heavy_check_mark: |
| jib-gradle-plugin v3.x | :heavy_check_mark: |
| jib-core v0.x | :heavy_check_mark: |
| jib-cli v0.x | :heavy_check_mark: |
## Reporting a Vulnerability
To report a security issue, please use [https://g.co/vulnz](https://g.co/vulnz).
We use g.co/vulnz for our intake, and do coordination and disclosure here on
GitHub (including using GitHub Security Advisory). The Google Security Team will
respond within 5 working days of your report on g.co/vulnz.
================================================
FILE: STYLE_GUIDE.md
================================================
# Style guide
This style guide defines specific coding standards and advice for this Java codebase. The rules here are extensions to the [Google Java Style Guide](https://google.github.io/styleguide/javaguide.html).
Please see the [contributing guide](CONTRIBUTING.md) for general guidance for contributing to this project.
### Automatic formatting
Automatic formatting should be performed with `./gradlew goJF` or `./mvnw fmt:format`. Formatting all projects can be done with `./build.sh format`.
### Class member order
*Extends [3.4.2](https://google.github.io/styleguide/javaguide.html#s3.4.2-ordering-class-contents)*
Class members should be in the following order, in decreasing priority:
1. Static before non-static
1. Nested classes/interfaces before fields before constructors before methods
1. Public before private
1. Final before non-final
### Public APIs
User-facing methods (such as those in Jib Core) should not have types in their signature that are not standard JDK classes. For example, a parameter should take type `List` rather than Guava's `ImmutableList`.
Jib Core's formal API should not expose internal Jib types. In other words, public classes in the `com.google.cloud.tools.jib.api` package should not contain any public methods that have internal types (Jib classes outside of the `api` package) in the method signature. This includes return types, parameters, thrown types, and javadoc links on public methods.
### Package hierarchy
Packages should depend on each other without cycles.
The following is a list of current `jib-core` packages (under `com.google.cloud.tools.jib`) and their immediate dependencies. These can be amended as code changes, but there should not be cyclical dependencies.
- `api`
- `async`
- `blob` - `filesystem`, `hash`, `image` (cycle - should fix)
- `builder` - `async`, `blob`, `builder`, `cache` `configuration`, `docker`, `event`, `filesystem`, `global`, `http`, `image`, `json`, `registry`
- `cache` - `blob`, `filesystem`, `hash`, `image`, `json`
- `configuration` - `cache`, `filesystem`, `event`, `image`, `registry`
- `docker` - `blob`, `cache`, `image`, `json`, `tar`
- `event`
- `filesystem`
- `frontend` - `configuration`, `event`, `filesystem`, `image`, `registry`
- `global`
- `hash` - `blob`, `image`
- `http` - `blob`
- `image` - `blob`, `configuration` (cycle - should fix - `ImageToJsonTranslator`), `filesystem`, `json`, `tar`
- `json` - `blob`
- `registry` - `blob`, `builder` (cycle - should fix - `RegistryClient`), `configuration` (cycle - should fix - `DockerConfigCredentialRetriever`), `event`, `global`, `http`, `image`, `json`
- `tar` - `blob`
================================================
FILE: build.gradle
================================================
// define all versioned plugins here and apply in subprojects as necessary without version
plugins {
id 'com.github.sherter.google-java-format' version '0.9' apply false
id 'net.ltgt.errorprone' version '3.1.0' apply false
id 'net.researchgate.release' version '2.8.1' apply false
id 'com.gradle.plugin-publish' version '1.2.0' apply false
id 'io.freefair.maven-plugin' version '5.3.3.3' apply false
// apply so that we can collect quality metrics at the root project level
id 'org.sonarqube' version '4.0.0.2929'
}
/* PROJECT DEPENDENCY VERSIONS */
// define all common versioned dependencies here
project.ext.dependencyStrings = [
// For Google libraries, check the following boms for best compatibility.
// - https://github.com/googleapis/java-shared-dependencies
// - https://github.com/googleapis/java-cloud-bom
GOOGLE_HTTP_CLIENT: 'com.google.http-client:google-http-client:1.42.2',
GOOGLE_HTTP_CLIENT_APACHE_V2: 'com.google.http-client:google-http-client-apache-v2:1.42.2',
GOOGLE_AUTH_LIBRARY_OAUTH2_HTTP: 'com.google.auth:google-auth-library-oauth2-http:1.10.0',
GUAVA: 'com.google.guava:guava:32.1.2-jre',
JSR305: 'com.google.code.findbugs:jsr305:3.0.2', // transitively pulled in by GUAVA
// for Build Plan and Jib Plugins Extension API
BUILD_PLAN: 'com.google.cloud.tools:jib-build-plan:0.4.0',
EXTENSION_COMMON: 'com.google.cloud.tools:jib-plugins-extension-common:0.2.0',
GRADLE_EXTENSION: 'com.google.cloud.tools:jib-gradle-plugin-extension-api:0.4.0',
MAVEN_EXTENSION: 'com.google.cloud.tools:jib-maven-plugin-extension-api:0.4.0',
COMMONS_COMPRESS: 'org.apache.commons:commons-compress:1.26.0',
ZSTD_JNI: 'com.github.luben:zstd-jni:1.5.5-5',
COMMONS_TEXT: 'org.apache.commons:commons-text:1.10.0',
JACKSON_BOM: 'com.fasterxml.jackson:jackson-bom:2.15.2',
JACKSON_DATABIND: 'com.fasterxml.jackson.core:jackson-databind',
JACKSON_DATAFORMAT_YAML: 'com.fasterxml.jackson.dataformat:jackson-dataformat-yaml',
JACKSON_DATATYPE_JSR310: 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310',
ASM: 'org.ow2.asm:asm:9.9',
PICOCLI: 'info.picocli:picocli:4.7.4',
MAVEN_API: 'org.apache.maven:maven-plugin-api:3.9.3',
MAVEN_CORE: 'org.apache.maven:maven-core:3.9.3',
MAVEN_COMPAT: 'org.apache.maven:maven-compat:3.9.6',
MAVEN_PLUGIN_ANNOTATIONS: 'org.apache.maven.plugin-tools:maven-plugin-annotations:3.9.0',
//test
TRUTH: 'com.google.truth:truth:1.1.5',
TRUTH8: 'com.google.truth.extensions:truth-java8-extension:1.1.5', // should match TRUTH version
JUNIT: 'junit:junit:4.13.2',
JUNIT_PARAMS: 'pl.pragmatists:JUnitParams:1.1.1',
MAVEN_TESTING_HARNESS: 'org.apache.maven.plugin-testing:maven-plugin-testing-harness:3.3.0',
MAVEN_VERIFIER: 'org.apache.maven.shared:maven-verifier:1.8.0',
MOCKITO_CORE: 'org.mockito:mockito-core:4.11.0',
SISU_PLEXUS: 'org.eclipse.sisu:org.eclipse.sisu.plexus:0.3.5',
SLF4J_API: 'org.slf4j:slf4j-api:2.0.7',
SLF4J_SIMPLE: 'org.slf4j:slf4j-simple:2.0.9',
SYSTEM_RULES: 'com.github.stefanbirkner:system-rules:1.19.0',
JBCRYPT: 'org.mindrot:jbcrypt:0.4',
]
import net.ltgt.gradle.errorprone.CheckSeverity
// `java-library` must be applied before `java`.
// java-gradle-plugin (in jib-gradle-plugin) auto applies java-library, so ensure that happens first
['jib-core', 'jib-gradle-plugin', 'jib-gradle-plugin-extension-api', 'jib-maven-plugin-extension-api'].each { projectName ->
project(projectName).apply plugin: 'java-library'
}
subprojects {
group 'com.google.cloud.tools'
repositories {
mavenCentral()
}
apply plugin: 'java'
apply plugin: 'checkstyle'
apply plugin: 'com.github.sherter.google-java-format'
apply plugin: 'net.ltgt.errorprone'
apply plugin: 'jacoco'
// Guava update breaks unit tests. Workaround mentioned in https://github.com/google/guava/issues/6612#issuecomment-1614992368.
sourceSets.all {
configurations.getByName(runtimeClasspathConfigurationName) {
attributes.attribute(Attribute.of("org.gradle.jvm.environment", String), "standard-jvm")
}
configurations.getByName(compileClasspathConfigurationName) {
attributes.attribute(Attribute.of("org.gradle.jvm.environment", String), "standard-jvm")
}
}
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
compileJava.options.encoding = 'UTF-8'
compileJava.options.compilerArgs += [ '-Xlint:deprecation' ]
compileTestJava.options.compilerArgs += [ '-Xlint:deprecation' ]
// Use this to ensure we correctly override transitive dependencies
// TODO: There might be a plugin that does this
task ensureTransitiveDependencyOverrides {
def dependenciesList = [dependencyStrings.GOOGLE_HTTP_CLIENT, dependencyStrings.GOOGLE_HTTP_CLIENT_APACHE_V2]
def rules = dependenciesList.collectEntries{[/*name*/ it.split(':')[1], /*version*/ it.split(':')[2]]}
doLast {
configurations.runtimeClasspath.resolvedConfiguration.resolvedArtifacts.each { artifact ->
def dependency = artifact.moduleVersion.id
if (rules[dependency.name] && rules[dependency.name] != dependency.version) {
throw new GradleException(
dependency.name + ' version error in ' + project
+ ', expected:' + rules[dependency.name]
+ ', found:' + dependency.version);
}
}
}
}
compileJava.dependsOn ensureTransitiveDependencyOverrides
/* PROJECT DEPENDENCY VERSIONS */
/* ERROR PRONE */
dependencies {
// NullAway errorprone plugin
annotationProcessor 'com.uber.nullaway:nullaway:0.10.7'
errorprone 'com.google.errorprone:error_prone_core:2.10.0'
// Using github.com/google/error-prone-javac is required when running on
// JDK 8. Remove when migrating to JDK 11.
if (System.getProperty('java.version').startsWith('1.8.')) {
errorproneJavac('com.google.errorprone:javac:9+181-r4173-1')
}
}
// Adds NullAway errorprone checks.
tasks.withType(JavaCompile) {
if (!name.toLowerCase().contains('test')) {
options.errorprone {
check('NullAway', CheckSeverity.ERROR)
option('NullAway:ExcludedFieldAnnotations', 'org.apache.maven.plugins.annotations.Component')
option('NullAway:AnnotatedPackages', 'com.google.cloud.tools')
}
}
}
/* ERROR PRONE */
/* GOOGLE JAVA FORMAT */
googleJavaFormat {
toolVersion = '1.7'
}
check.dependsOn verifyGoogleJavaFormat
/* GOOGLE JAVA FORMAT */
/* CHECKSTYLE */
checkstyle {
toolVersion = '8.29'
// use google checks from the jar
def googleChecks = resources.text.fromArchiveEntry(configurations.checkstyle[0], 'google_checks.xml').asString()
// set the location of the suppressions file referenced in google_checks.xml
configProperties['org.checkstyle.google.suppressionfilter.config'] = getConfigDirectory().file('checkstyle-suppressions.xml').get().toString()
// add in copyright header check on only java files (replace the last </module> in file)
def copyrightChecks = '''
<module name="RegexpHeader">
<property name="headerFile" value="${config_loc}/copyright-java.header"/>
<property name="fileExtensions" value="java"/>
<property name="id" value="header"/>
</module>
</module>
'''
googleChecks = googleChecks.substring(0, googleChecks.lastIndexOf('</module>')) + copyrightChecks
// this is the actual checkstyle config
config = resources.text.fromString(googleChecks)
maxErrors = 0
maxWarnings = 0
}
/* CHECKSTYLE */
/* TEST CONFIG */
tasks.withType(Test).configureEach {
reports.html.outputLocation = file("${reporting.baseDir}/${name}")
}
test {
testLogging {
showStandardStreams = true
exceptionFormat = 'full'
}
}
// jar to export tests classes for import in other project by doing:
// testCompile project(path:':project-name', configuration:'tests')
task testJar(type: Jar) {
from sourceSets.test.output.classesDirs
archiveClassifier = 'tests'
}
// to import resources do: sourceSets.test.resources.srcDirs project(':project-name').sourceSets.test.resources
configurations {
tests
}
artifacts {
tests testJar
}
/* TEST CONFIG */
/* INTEGRATION TESTS */
sourceSets {
integrationTest {
java.srcDir file('src/integration-test/java')
resources.srcDir file('src/integration-test/resources')
compileClasspath += sourceSets.main.output + sourceSets.test.output
runtimeClasspath += sourceSets.main.output + sourceSets.test.output
}
}
configurations {
integrationTestImplementation.extendsFrom testImplementation
integrationTestImplementation.setCanBeResolved(true)
integrationTestRuntime.extendsFrom testRuntime
}
// Integration tests must be run explicitly
task integrationTest(type: Test) {
testClassesDirs = sourceSets.integrationTest.output.classesDirs
classpath = sourceSets.integrationTest.runtimeClasspath
systemProperty '_JIB_DISABLE_USER_AGENT', true
}
task integrationTestJar(type: Jar) {
from sourceSets.integrationTest.output.classesDirs
archiveClassifier = 'integration-tests'
}
configurations {
integrationTests
}
artifacts {
integrationTests integrationTestJar
}
integrationTest {
testLogging {
showStandardStreams = true
exceptionFormat = 'full'
}
}
/* INTEGRATION TESTS */
/* JAVADOC ENFORCEMENT */
// Fail build on javadoc warnings
tasks.withType(Javadoc) {
options.addBooleanOption('Xwerror', true)
}
assemble.dependsOn javadoc
/* JAVADOC ENFORCEMENT */
/* JAR */
jar {
manifest {
attributes 'Implementation-Title': project.name,
'Implementation-Version': archiveVersion,
'Built-By': System.getProperty('user.name'),
'Built-Date': new Date(),
'Built-JDK': System.getProperty('java.version'),
'Built-Gradle': gradle.gradleVersion
}
}
normalization {
runtimeClasspath {
metaInf {
ignoreAttribute("Built-By")
ignoreAttribute("Built-Date")
}
}
}
/* JAR */
/* MAVEN CENTRAL RELEASES */
// for projects that release to maven central
project.ext.configureMavenRelease = {
apply plugin: 'maven-publish'
task sourceJar(type: Jar) {
from sourceSets.main.allJava
archiveClassifier = 'sources'
}
task javadocJar(type: Jar, dependsOn: javadoc) {
from javadoc.destinationDir
archiveClassifier = 'javadoc'
}
publishing {
publications {
mavenJava(MavenPublication) {
pom {
// to be filled by subproject after calling configure configureMavenRelease
// name = ''
// description = ''
url = 'https://github.com/GoogleContainerTools/jib'
inceptionYear = '2018'
licenses {
license {
name = 'The Apache License, Version 2.0'
url = 'http://www.apache.org/licenses/LICENSE-2.0.txt'
distribution = 'repo'
}
}
developers {
developer {
id = 'chanseokoh'
name = 'Chanseok Oh'
email = 'chanseok@google.com'
}
developer {
id = 'loosebazooka'
name = 'Appu Goundan'
email = 'appu@google.com'
}
developer {
id = 'TadCordle'
name = 'Tad Cordle'
email = 'tcordle@google.com'
}
developer {
id = 'briandealwis'
name = 'Brian de Alwis'
email = 'bdealwis@google.com'
}
developer {
id = 'coollog'
name = 'Qingyang Chen'
}
}
scm {
url = 'https://github.com/GoogleContainerTools/jib'
connection = 'scm:https://github.com/GoogleContainerTools/jib.git'
developerConnection = 'scm:git://github.com/GoogleContainerTools/jib.git'
}
}
}
}
}
generatePomFileForMavenJavaPublication {
destination = file("${project.buildDir}/pom/${project.name}-${project.version}.pom")
}
// define a special install task that handles installing locally for manual testing
task install {
dependsOn publishToMavenLocal
}
// For kokoro sign and release to maven central
task prepareRelease(type: Copy) {
from jar
from sourceJar
from javadocJar
from generatePomFileForMavenJavaPublication
into "${project.buildDir}/release-artifacts"
dependsOn build
dependsOn cleanPrepareRelease
}
}
/* MAVEN CENTRAL RELEASE */
/* INCLUDED PROJECT DEPENDENCY HELPER */
// to keep track of all source projects
project.ext.sourceProjects = []
// sourceProject(Project) accepts a project and adds it as a dependency in a special manner:
// 1. force evaluation of the project first
// 2. add the project classes as "compileOnly" and make it available to tests in "testImplementation"
// 3. add the project's dependencies as "implementation"
// 4. remove any transitive reference of any sourceProject depenency that may have appeared
// 5. add the project's classes to the final jar
// Other nice effects (vs shadowJar)
// 1. Generated poms will be correct
// 2. Configuration is isolated to this single "sourceProject" call
// 3. These configurations are compliant with IDEs
project.ext.sourceProject = { Project dependencyProject ->
// make sure those projects are evaluated first so we know their dependencies
project.evaluationDependsOn dependencyProject.path
// add the sourceProjecect dependency
def dependencyProjectClasses = dependencyProject.sourceSets.main.output
dependencies {
// add the dependencyProject classes as compileOnly, make it available to tests
compileOnly(dependencyProject) { transitive = false }
testImplementation dependencyProjectClasses
// add dependencyProject's dependencies as implementation dependencies
implementation dependencyProject.configurations.implementation.dependencies
if (dependencyProject.configurations.hasProperty('api')) {
implementation dependencyProject.configurations.api.dependencies
}
}
// keep track of all dependencyProjects for removal
sourceProjects += dependencyProject
// if we find any project dependencies that were brought in transitively, go remove them
project.configurations.implementation.dependencies.removeAll { d ->
return d instanceof ProjectDependency && sourceProjects.contains(d.dependencyProject)
}
// adds dependencyProject's classes to jar (fat jar-esque)
jar {
from dependencyProjectClasses
}
// also configure the java-gradle-plugin if necessary
if (project.hasProperty('gradlePlugin')) {
project.tasks.pluginUnderTestMetadata.pluginClasspath.from dependencyProjectClasses
}
}
// ensure no dependencies in the implementation group are project dependencies
project.ext.ensureNoProjectDependencies = {
project.afterEvaluate {
project.configurations.implementation.dependencies.each { dependency ->
if (dependency instanceof ProjectDependency) {
throw new GradleException('disallowed project dependency:' + dependency + ', in project:' + project);
}
}
}
}
/* TEST COVERAGE */
jacocoTestReport {
reports {
xml.required = true
html.required = false
}
}
/* TEST COVERAGE */
/* INCLUDED PROJECT DEPENDENCY HELPER */
/* LOCAL DEVELOPMENT HELPER TASKS */
tasks.register('dev') {
classes.dependsOn tasks.googleJavaFormat
dependsOn check
dependsOn javadoc
}
tasks.register('devFull') {
dependsOn dev
dependsOn integrationTest
}
/* LOCAL DEVELOPMENT HELPER TASKS */
}
/* SONARQUBE */
sonarqube {
properties {
property 'sonar.projectName', 'jib'
property 'sonar.projectKey', 'GoogleContainerTools_jib'
property 'sonar.host.url', 'https://sonarcloud.io'
property 'sonar.organization', 'googlecontainertools-1'
}
}
/* SONARQUBE */
================================================
FILE: config/checkstyle/checkstyle-suppressions.xml
================================================
<?xml version="1.0"?>
<!DOCTYPE suppressions PUBLIC
"-//Puppy Crawl//DTD Suppressions 1.1//EN"
"http://www.puppycrawl.com/dtds/suppressions_1_1.dtd">
<suppressions>
<!-- clash with google java format -->
<suppress files=".*\.java" checks="SingleLineJavadoc"/>
<suppress files=".*\.java" checks="Indentation"/>
<suppress files=".*\.java" checks="RightCurly"/>
<suppress files=".*\.java" checks="LineLength"/>
<!-- class with jib repo style: although maybe these should be eventually fixed -->
<suppress files=".*\.java" checks="OverloadMethodsDeclarationOrder"/>
<!-- temporary suppressions as we work through them -->
<suppress files=".*\.java" checks="VariableDeclarationUsageDistance"/>
<!-- leniency for json templates -->
<suppress files=".*[\\/]jib-core[\\/].*Template\.java" checks="MemberName"/>
<!-- leniency for gradle extension configuration objects -->
<suppress files=".*[\\/]jib-gradle-plugin[\\/].*Parameters\.java" checks="MissingJavadocMethod"/>
<!-- leniency for helpful suggestions -->
<suppress files=".*[\\/]HelpfulSuggestions\.java" checks="MissingJavadocMethod"/>
<!-- leniency for test files -->
<suppress files=".*[\\/]src[\\/]test[\\/].*\.java" checks="MissingJavadocMethod"/>
<suppress files=".*[\\/]src[\\/]integration-test[\\/].*\.java" checks="MissingJavadocMethod"/>
<suppress files=".*[\\/]src[\\/]integration-test[\\/].*\.java" checks="VariableDeclarationUsageDistance"/>
</suppressions>
================================================
FILE: config/checkstyle/copyright-java.header
================================================
^/\*$
^ \* Copyright 20(17|18|19|20|21|22|23|24) Google LLC\.$
^ \*$
^ \* Licensed under the Apache License, Version 2\.0 \(the "License"\); you may not$
^ \* use this file except in compliance with the License\. You may obtain a copy of$
^ \* the License at
^ \*$
^ \* http://www\.apache\.org/licenses/LICENSE-2\.0$
^ \*$
^ \* Unless required by applicable law or agreed to in writing, software$
^ \* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT$
^ \* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied\. See the$
^ \* License for the specific language governing permissions and limitations under$
^ \* the License\.$
^ \*/$
================================================
FILE: docs/configure-gcp-credentials.md
================================================
# Configuring Credentials for [Google Container Registry (GCR)](https://cloud.google.com/container-registry/)
There are a few ways of supplying Jib with the credentials to push and pull images from your private GCR registry.
## Using the Docker credential helper
The easiest way is to install the [docker-credential-gcr](https://github.com/GoogleCloudPlatform/docker-credential-gcr).
### Installation
If you have [`gcloud` (Cloud SDK)](https://cloud.google.com/sdk/gcloud/) installed, you can run:
```shell
gcloud components install docker-credential-gcr
```
Alternatively, if you have `go get` installed, you can run:
```shell
go get -u github.com/GoogleCloudPlatform/docker-credential-gcr
```
Alternatively, you can download `docker-credential-gcr` from its [Github Releases](https://github.com/GoogleCloudPlatform/docker-credential-gcr/releases).
### Enable the Container Registry API
If you have not already done so, make sure you [enable the Container Registry API](https://console.cloud.google.com/flows/enableapi?apiid=containerregistry.googleapis.com&redirect=https://github.com/GoogleContainerRegistry/jib) for the Google Cloud Platform account you wish to use.
### Log in
Log in to the account you with to use with:
```shell
docker-credential-gcr gcr-login
```
This stores the credentials in `docker-credential-gcr`'s private credential store.
Now, you can use Jib to pull and push from images in the form `gcr.io/your-gcp-project/your-image-name`.
================================================
FILE: docs/default_base_image.md
================================================
# Default Base Images in Jib
## Jib Build Plugins 3+
Starting from version 3.2, the default base image is the official [`eclipse-temurin`](https://hub.docker.com/_/eclipse-temurin) image on Docker Hub. Note that Eclipse Temurin by Adoptium is the [successor of AdoptOpenJDK](https://blog.adoptopenjdk.net/2021/08/goodbye-adoptopenjdk-hello-adoptium/). (For versions 3.0 and 3.1, the default is the official [`adoptopenjdk`](https://hub.docker.com/_/adoptopenjdk) image.)
For WAR projects, the default is the official [`jetty`](https://hub.docker.com/_/jetty) image on Docker Hub.
Note that Jib's default choice for Temurin, AdoptOpenJDK, and Jetty does not imply any endorsement to them. In fact, for strong reproducibility (which also results in better performance and efficiency), we always recommend configuring [`jib.from.image`](https://github.com/GoogleContainerTools/jib/tree/master/jib-gradle-plugin#from-closure) (Gradle) or [`<from><image>`](https://github.com/GoogleContainerTools/jib/tree/master/jib-maven-plugin#from-object) (Maven) to pin to a specific base image using a digest (or at least a tag). And while doing so, you should do your due diligence to figure out which base image will work best for you.
### Docker Hub Download Rate Limit
Docker Hub enforces download rate limit. Because Jib pulls base images from Docker Hub, you can occasionally lead to the following error:
```
> com.google.cloud.tools.jib.plugins.common.BuildStepsExecutionException: 429 Too Many Requests
GET https://registry-1.docker.io/v2/library/adoptopenjdk/manifests/sha256:9db4a57b38b6d928761ec9c5a250677d306095df0f6a6bdd8936628e033b9f1a
{
"errors": [
{
"code": "TOOMANYREQUESTS",
"message": "You have reached your pull rate limit. You may increase the limit by authenticating and upgrading: https://www.docker.com/increase-rate-limit"
}
]
}
```
Note that, even after Jib fully cached a base image, Jib still connects to Docker Hub to check the image every time it runs (unless you pin to a specific base image using a SHA digest). This is to check if the cached base image is up-to-date.
Some options:
* Configure a registry mirror.
* Prevent Jib from accessing Docker Hub (after Jib cached a base image locally).
- Pin to a specific base image using a SHA digest (for example, `jib.from.image='eclipse-temurin:11-jre@sha256:...'`).
- Do offline building.
- Read a base from a local Docker daemon.
- Set up a local registry, store a base image, and read it from the local registry.
* Retry with increasing backoffs.
See this [FAQ](https://github.com/GoogleContainerTools/jib/blob/master/docs/faq.md#i-am-hitting-docker-hub-rate-limits-how-can-i-configure-registry-mirrors) for more details about the options.
### Migration from Pre-3.0
Prior to 3.0, Jib Maven and Gradle plugins built images based on Distroless Java when the user didn't make an explicit choice. The Jib team carefully assessed all the surrounding factors and ultimately decided to switch from Distroless for the best interest of the Jib users. That is, to meet one of the core missions of Jib to build a secure and optimized image.
If you are already setting a specific base image, there will be absolutely no difference when you upgrade to 3.0. It will continue to use the base image you specified. Even if you are not specifying a base image, most likely upgrading to 3.0 will keep working fine, because it's just about getting a JRE from a different image. (But if you are not setting a base image, as we explained in the previous section, we highly recommend configuring it.)
For some reason if you have to keep the exact same behavior when using 3.0, you can always specify the Distroless Java as a base image.
* non-WAR projects
```groovy
jib {
from.image = 'gcr.io/distroless/java:11' // or ":8"
...
}
```
```xml
<configuration>
<from><image>gcr.io/distroless/java:11</image></from> <!-- or ":8" -->
</configuration>
```
However, even when you decide to keep using Distroless, at least we strongly recommend `gcr.io/distroless/java-debian10:11`, because, as of Apr 2021, `gcr.io/distroless/java:{8,11}` is based on Debian 9 that reached end-of-life. (Note `gcr.io/distroless/java-debian10` doesn't have `:8`.)
* WAR projects
```gradle
jib {
from.image = 'gcr.io/distroless/java/jetty:java11' // or ":java8"
container {
entrypoint = 'INHERIT'
appRoot = '/jetty/webapps/ROOT'
}
...
}
```
```xml
<configuration>
<from><image>gcr.io/distroless/java/jetty:java11</image></from> <!-- or ":java8" -->
<container>
<entrypoint>INHERIT</entrypoint>
<appRoot>/jetty/webapps/ROOT</appRoot>
</container>
</configuration>
```
## Jib CLI
For the JAR mode, Jib CLI versions prior to 0.8 have always used AdoptOpenJDK. Starting with 0.8, the tool uses [`eclipse-temurin`](https://hub.docker.com/_/eclipse-temurin). The WAR mode uses `jetty`.
================================================
FILE: docs/faq.md
================================================
## Frequently Asked Questions (FAQ)
If a question you have is not answered below, please [submit an issue](/../../issues/new).
| ☑️ Jib User Survey |
| :----- |
| What do you like best about Jib? What needs to be improved? Please tell us by taking a [one-minute survey](https://forms.gle/YRFeamGj51xmgnx28). Your responses will help us understand Jib usage and allow us to serve our customers (you!) better. |
[But, I'm not a Java developer.](#but-im-not-a-java-developer)\
[My build process doesn't let me integrate with the Jib Maven or Gradle plugin](#my-build-process-doesnt-let-me-integrate-with-the-jib-maven-or-gradle-plugin)\
[How do I run the image I built?](#how-do-i-run-the-image-i-built)\
[Where is bash?](#where-is-bash)\
[What image format does Jib use?](#what-image-format-does-jib-use)\
[Why is my image created 48+ years ago?](#why-is-my-image-created-48-years-ago)\
[Where is the application in the container filesystem?](#where-is-the-application-in-the-container-filesystem)\
[How are Jib applications layered?](#how-are-jib-applications-layered)\
[Can I learn more about container images?](#can-i-learn-more-about-container-images)\
[Which base image (JDK) does Jib use?](#which-base-image-jdk-does-jib-use)
**How-Tos**\
[How do I set parameters for my image at runtime?](#how-do-i-set-parameters-for-my-image-at-runtime)\
[Can I define a custom entrypoint?](#can-i-define-a-custom-entrypoint-at-runtime)\
[I want to containerize a JAR.](#i-want-to-containerize-a-jar)\
[I need to RUN commands like `apt-get`.](#i-need-to-run-commands-like-apt-get)\
[Can I ADD a custom directory to the image?](#can-i-add-a-custom-directory-to-the-image)\
[I need to add files generated during the build process to a custom directory on the image.](#i-need-to-add-files-generated-during-the-build-process-to-a-custom-directory-on-the-image)\
[Can I build to a local Docker daemon?](#can-i-build-to-a-local-docker-daemon)\
[How do I enable debugging?](#how-do-i-enable-debugging)\
[What would a Dockerfile for a Jib-built image look like?](#what-would-a-dockerfile-for-a-jib-built-image-look-like)\
[How can I inspect the image Jib built?](#how-can-i-inspect-the-image-jib-built)\
[I would like to run my application with a javaagent.](#i-would-like-to-run-my-application-with-a-javaagent)\
[How can I tag my image with a timestamp?](#how-can-i-tag-my-image-with-a-timestamp)\
[How do I specify a platform in the manifest list (or OCI index) of a base image?](#how-do-i-specify-a-platform-in-the-manifest-list-or-oci-index-of-a-base-image)\
[I want to exclude files from layers, have more fine-grained control over layers, change file ownership, etc.](#i-want-to-exclude-files-from-layers-have-more-fine-grained-control-over-layers-change-file-ownership-etc)\
[Jib build plugins don't have the feature that I need.](#jib-build-plugins-dont-have-the-feature-that-i-need)\
[I am hitting Docker Hub rate limits. How can I configure registry mirrors?](#i-am-hitting-docker-hub-rate-limits-how-can-i-configure-registry-mirrors)\
[Where is the global Jib configuration file and how I can configure it?](#where-is-the-global-jib-configuration-file-and-how-i-can-configure-it)
**Build Problems**\
[How can I diagnose problems pulling or pushing from remote registries?](#how-can-i-diagnose-problems-pulling-or-pushing-from-remote-registries)\
[What should I do when the registry responds with Forbidden or DENIED?](#what-should-i-do-when-the-registry-responds-with-forbidden-or-denied)\
[What should I do when the registry responds with UNAUTHORIZED?](#what-should-i-do-when-the-registry-responds-with-unauthorized)\
[How do I configure a proxy?](#how-do-i-configure-a-proxy)\
[How can I examine network traffic?](#how-can-i-examine-network-traffic)\
[How do I view debug logs for Jib?](#how-do-i-view-debug-logs-for-jib)\
[I am seeing `Method Not Found` or `Class Not Found` errors when building.](#i-am-seeing-method-not-found-or-class-not-found-errors-when-building)\
[I am seeing `Unsupported class file major version` when building.](#i-am-seeing-unsupported-class-file-major-version-when-building)\
[I am seeing `NoClassDefFoundError: com/github/luben/zstd/ZstdOutputStream` when building.](#i-am-seeing-noclassdeffounderror-comgithublubenzstdzstdoutputstream-when-building)
**Launch Problems**\
[I am seeing `ImagePullBackoff` on my pods.](#i-am-seeing-imagepullbackoff-on-my-pods-in-minikube)\
[Why won't my container start?](#why-wont-my-container-start)
**Jib CLI**\
[How does the `jar` command support Standard JARs?](#how-does-the-jar-command-support-standard-jars)\
[How does the `jar` command support Spring Boot JARs?](#how-does-the-jar-command-support-spring-boot-jars)\
[How does the `war` command work?](#how-does-the-war-command-work)
---
### But, I'm not a Java developer.
Check out [Jib CLI](https://github.com/GoogleContainerTools/jib/tree/master/jib-cli), a general-purpose command-line tool for building containers images from filesystem content.
Also see [rules_docker](https://github.com/bazelbuild/rules_docker) for a similar existing container image build tool for the [Bazel build system](https://github.com/bazelbuild/bazel). The tool can build images for languages such as Python, NodeJS, Java, Scala, Groovy, C, Go, Rust, and D.
### My build process doesn't let me integrate with the Jib Maven or Gradle plugin
The [Jib CLI](https://github.com/GoogleContainerTools/jib/tree/master/jib-cli) can be useful for users with complex build workflows that make it hard to integrate the Jib Maven or Gradle plugin. It is a standalone application that is powered by [Jib Core](https://github.com/GoogleContainerTools/jib/tree/master/jib-core) and offers two commands:
* [Build](https://github.com/GoogleContainerTools/jib/tree/master/jib-cli#build-command): Builds images from the filesystem content.
* [Jar](https://github.com/GoogleContainerTools/jib/tree/master/jib-cli#jar-command): Examines your JAR and builds an image with optimized layers or containerizes the JAR as-is.
Check out the [Jib CLI section](#jib-cli) of the FAQ for more information.
### How do I run the image I built?
If you built your image directly to the Docker daemon using `jib:dockerBuild` (Maven) or `jibDockerBuild` (Gradle), you simply need to use `docker run <image name>`.
If you built your image to a registry using `jib:build` (Maven) or `jib` (Gradle), you will need to pull the image using `docker pull <image name>` before using `docker run`.
To run your image on Kubernetes, you can use kubectl:
```shell
kubectl run jib-deployment --image=<image name>
```
For more information, see [steps 4-6 of the Kubernetes Engine deployment tutorial](https://cloud.google.com/kubernetes-engine/docs/tutorials/hello-app#step_4_create_a_container_cluster).
### Where is bash?
By default, Jib Maven and Gradle plugin versions prior to 3.0 used [`distroless/java`](https://github.com/GoogleContainerTools/distroless/tree/master/java) as the base image, which did not have a shell program (such as `sh`, `bash`, or `dash`). However, recent Jib tools use [default base images](default_base_image.md) that come with shell programs: Adoptium Eclipse Temurin (formerly AdoptOpenJDK) and Jetty for WAR projects.
Note that you can always set a different base image. Jib's default choice for Temurin or AdoptOpenJDK does not imply any endorsement to it; you should do your due diligence to choose the right image that works best for you. Also note that the default base image is unpinned (the tag can point to different images over time), so we recommend configuring a base image with a SHA digest for strong reproducibility.
* Configuring a base image in Maven
```xml
<configuration>
<from>
<image>openjdk:11-jre-slim@sha256:...</image>
</from>
</configuration>
```
* Configuring a base image in Gradle
```groovy
jib.from.image = 'openjdk:11-jre-slim@sha256:...'
```
* Configuring a base image in Jib CLI
```
$ jib jar --from openjdk:11-jre-slim@sha256:... --target ... app.jar
```
### What image format does Jib use?
Jib currently builds into the [Docker V2.2](https://docs.docker.com/registry/spec/manifest-v2-2/) image format or [OCI image format](https://github.com/opencontainers/image-spec).
#### Maven
See [Extended Usage](../jib-maven-plugin#extended-usage) for the `<container><format>` configuration.
#### Gradle
See [Extended Usage](../jib-gradle-plugin#extended-usage) for the `container.format` configuration.
### Why is my image created 48+ years ago?
For reproducibility purposes, Jib sets the creation time of the container images to the Unix epoch (00:00:00, January 1st, 1970 in UTC). If you would like to use a different timestamp, set the `jib.container.creationTime` / `<container><creationTime>` parameter to an ISO 8601 date-time. You may also use the value `USE_CURRENT_TIMESTAMP` to set the creation time to the actual build time, but this sacrifices reproducibility since the timestamp will change with every build.
<details>
<summary>Setting <code>creationTime</code> parameter (click to expand)</summary>
<p>
#### Maven
```xml
<configuration>
<container>
<creationTime>2019-07-15T10:15:30+09:00</creationTime>
</container>
</configuration>
```
#### Gradle
```groovy
jib.container.creationTime = '2019-07-15T10:15:30+09:00'
```
</p>
</details>
Note that the modification time of the files in the built image put by Jib will still be 1 second past the epoch. The file modification time can be configured using [`<container><filesModificationTime>`](../jib-maven-plugin#container-object) (Maven) or [`jib.container.filesModificationTime`](../jib-gradle-plugin#container-closure) (Gradle).
#### Please tell me more about reproducibility!
_Reproducible_ means that given the same inputs, a build should produce the same outputs. Container images are uniquely identified by a digest (or a hash) of the image contents and image metadata. Tools and infrastructure such the Docker daemon, Docker Hub, registries, Kubernetes, etc) treat images with different digests as being different.
To ensure that a Jib build is reproducible — that the rebuilt container image has the same digest — Jib adds files and directories in a consistent order, and sets consistent creation- and modification-times and permissions for all files and directories. Jib also ensures that the image metadata is recorded in a consistent order, and that the container image has a consistent creation time. To ensure consistent times, files and directories are recorded as having a creation and modification time of 1 second past the Unix Epoch (1970-01-01 00:00:01.000 UTC), and the container image is recorded as being created on the Unix Epoch. Setting `container.creationTime` to `USE_CURRENT_TIMESTAMP` and then rebuilding an image will produce a different timestamp for the image creation time, and so the container images will have different digests and appear to be different.
For more details see [reproducible-builds.org](https://reproducible-builds.org).
### Where is the application in the container filesystem?
Jib packages your Java application into the following paths on the image:
* `/app/libs/` contains all the dependency artifacts
* `/app/resources/` contains all the resource files
* `/app/classes/` contains all the classes files
* the contents of the extra directory (default `src/main/jib`) are placed relative to the container's root directory (`/`)
### How are Jib applications layered?
Jib makes use of [layering](https://containers.gitbook.io/build-containers-the-hard-way/#layers) to allow for fast rebuilds - it will only rebuild the layers containing files that changed since the previous build and will reuse cached layers containing files that didn't change. Jib organizes files in a way that groups frequently changing files separately from large, rarely changing files. For example, `SNAPSHOT` dependencies are placed in a separate layer from other dependencies, so that a frequently changing `SNAPSHOT` will not force the entire dependency layer to rebuild itself.
Jib applications are split into the following layers:
* All other dependencies
* Snapshot dependencies
* Project dependencies
* Resources
* Classes
* Each extra directory (`jib.extraDirectories` in Gradle, `<extraDirectories>` in Maven) builds to its own layer
### Which base image (JDK) does Jib use?
[`eclipse-temurin`](https://hub.docker.com/_/eclipse-temurin) by Adoptium (formerly [`adoptopenjdk`](https://hub.docker.com/_/adoptopenjdk)) and [`jetty`](https://hub.docker.com/_/jetty) (for WAR). See [Default Base Images in Jib](default_base_image.md) for details.
### Can I learn more about container images?
If you'd like to learn more about container images, [@coollog](https://github.com/coollog) has a guide: [Build Containers the Hard Way](https://containers.gitbook.io/build-containers-the-hard-way/), which takes a deep dive into everything involved in getting your code into a container and onto a container registry.
## Configuring Jib
### How do I set parameters for my image at runtime?
#### JVM Flags
For the default base image, you can use the `JAVA_TOOL_OPTIONS` environment variable (note that other JRE images may require using other environment variables):
Using Docker: `docker run -e "JAVA_TOOL_OPTIONS=<JVM flags>" <image name>`
Using Kubernetes:
```yaml
apiVersion: v1
kind: Pod
spec:
containers:
- name: <name>
image: <image name>
env:
- name: JAVA_TOOL_OPTIONS
value: <JVM flags>
```
Note that many JVMs may only support a max length of **1024** characters for the `JAVA_TOOL_OPTIONS` environment variable, and anything longer than this may be cut off by the JVM.
For Java 9+, often you may want to use [`JDK_JAVA_OPTIONS`](https://stackoverflow.com/questions/52986487/what-is-the-difference-between-jdk-java-options-and-java-tool-options-when-using) instead of `JAVA_TOOL_OPTIONS`.
#### Other Environment Variables
Using Docker: `docker run -e "NAME=VALUE" <image name>`
Using Kubernetes:
```yaml
apiVersion: v1
kind: Pod
spec:
containers:
- name: <name>
image: <image name>
env:
- name: NAME
value: VALUE
```
#### Arguments to Main
Using Docker: `docker run <image name> <arg1> <arg2> <arg3>`
Using Kubernetes:
```yaml
apiVersion: v1
kind: Pod
spec:
containers:
- name: <name>
image: <image name>
args:
- <arg1>
- <arg2>
- <arg3>
```
For more information, see the [`JAVA_TOOL_OPTIONS` environment variable](https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/envvars002.html), the [`docker run -e` reference](https://docs.docker.com/engine/reference/run/#env-environment-variables), and [defining environment variables for a container in Kubernetes](https://kubernetes.io/docs/tasks/inject-data-application/define-environment-variable-container/).
### Can I define a custom entrypoint at runtime?
Normally, the plugin sets a default entrypoint for java applications, or lets you configure a custom entrypoint using the `container.entrypoint` configuration parameter. You can also override the default/configured entrypoint by defining a custom entrypoint when running the container. See [`docker run --entrypoint` reference](https://docs.docker.com/engine/reference/run/#entrypoint-default-command-to-execute-at-runtime) for running the image with Docker and overriding the entrypoint command, or see [Define a Command and Arguments for a Container](https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/) for running the image in a [Kubernetes](https://kubernetes.io/) Pod and overriding the entrypoint command.
### <a name="i-want-to-containerize-an-executable-jar"></a>I want to containerize a JAR.
The intention of Jib is to add individual class files, resources, and dependency JARs into the container instead of putting a JAR. This lets Jib choose an opinionated, optimal layout for the application on the container image, which also allows it to skip the extra JAR-packaging step.
However, you can set `<containerizingMode>packaged` (Maven) or `jib.containerizingMode = 'packaged'` (Gradle) to containerize a JAR, but note that your application will always be run via `java -cp ... your.MainClass` (even if it is an executable JAR). Some disadvantages of setting `containerizingMode='packaged'`:
- You need to run the JAR-packaging step (`mvn package` in Maven or the `jar` task in Gradle).
- Reduced granularity in building and caching: if any of your Java source files or resource files are updated, not only the JAR has to be rebuilt, but the entire layer containing the JAR in the image has to be recreated and pushed to the destination.
- If it is a fat or shaded JAR embedding all dependency JARs, you are duplicating the dependency JARs in the image. Worse, it results in far more reduced granularity in building and caching, as dependency JARs can be huge and all of them need to be pushed repeatedly even if they do not change.
Note that for runnable JARs/WARs, currently Jib does not natively support creating an image that runs a JAR (or WAR) through `java -jar runnable.jar` (although it is not impossible to configure Jib to do so at the expense of more complex project setup.)
### I need to RUN commands like `apt-get`.
Running commands like `apt-get` slows down the container build process. We **do not recommend or support** running commands as part of the build.
However, if you need to run commands, you can build a custom image and configure Jib to use it as the base image.
<details>
<summary>Base image configuration examples (click to expand)</summary>
<p>
#### Maven
In [`jib-maven-plugin`](../jib-maven-plugin), you can then use this custom base image by adding the following configuration:
```xml
<configuration>
<from>
<image>custom-base-image</image>
</from>
</configuration>
```
#### Gradle
In [`jib-gradle-plugin`](../jib-gradle-plugin), you can then use this custom base image by adding the following configuration:
```groovy
jib.from.image = 'custom-base-image'
```
</p>
</details>
### Can I ADD a custom directory to the image?
Yes, using the _extra directories_ feature. See the [Maven](https://github.com/GoogleContainerTools/jib/tree/master/jib-maven-plugin#adding-arbitrary-files-to-the-image) and [Gradle](https://github.com/GoogleContainerTools/jib/tree/master/jib-gradle-plugin#adding-arbitrary-files-to-the-image) docs for examples.
### I need to add files generated during the build process to a custom directory on the image.
If the current extra directories design doesn't meet your needs (e.g. you need to set up the extra files directory with files generated during the build process), you can use additional goals/tasks to create the extra directory as part of your build.
<details>
<summary>File copying examples (click to expand)</summary>
<p>
#### Maven
In Maven, you can use the `maven-resources-plugin` to copy files to your extra directory. For example, if you generate files in `target/generated/files` and want to add them to `/my/files` on the container, you can add the following to your `pom.xml`:
```xml
<plugins>
...
<plugin>
<artifact>jib-maven-plugin</artifact>
...
<configuration>
<extraDirectories>
<paths>
<path>${project.basedir}/target/extra-directory/</path>
</paths>
</extraDirectories>
</configuration>
</plugin>
...
<plugin>
<artifact>maven-resources-plugin</artifact>
<version>3.2.0</version>
<configuration>
<outputDirectory>${project.basedir}/target/extra-directory/my/files</outputDirectory>
<resources>
<resource>
<directory>${project.basedir}/target/generated/files</directory>
</resource>
</resources>
</configuration>
</plugin>
...
</plugins>
```
The `copy-resources` goal will run automatically before compile, so if you are copying files from your build output to the extra directory, you will need to either set the life-cycle phase to `post-compile` or later, or run the goal manually:
```sh
mvn compile resources:copy-resources jib:build
```
#### Gradle
The same can be accomplished in Gradle by using a `Copy` task. In your `build.gradle`:
```groovy
jib.extraDirectories.paths = ['build/extra-directory']
task setupExtraDir(type: Copy) {
from file('build/generated/files')
into file('build/extra-directory/my/files')
}
tasks.jib.dependsOn setupExtraDir
```
The files will be copied to your extra directory when you run the `jib` task.
</p>
</details>
### Can I build to a local Docker daemon?
There are several ways of doing this:
- Use [`jib:dockerBuild` for Maven](../jib-maven-plugin#build-to-docker-daemon) or [`jibDockerBuild` for Gradle](../jib-gradle-plugin#build-to-docker-daemon) to build directly to your local Docker daemon.
- Use [`jib:buildTar` for Maven](../jib-maven-plugin#build-an-image-tarball) or [`jibBuildTar` for Gradle](../jib-gradle-plugin#build-an-image-tarball) to build the image to a tarball, then use `docker load --input` to load the image into Docker (the tarball built with these commands will be located in `target/jib-image.tar` for Maven and `build/jib-image.tar` for Gradle by default).
- [`docker pull`](https://docs.docker.com/engine/reference/commandline/pull/) the image built with Jib to have it available in your local Docker daemon.
- Alternatively, instead of using a Docker daemon, you can run a local container registry, such as [Docker registry](https://docs.docker.com/registry/deploying/) or other repository managers, and point Jib to push to the local registry.
### How do I enable debugging?
Use the [`JAVA_TOOL_OPTIONS`](#how-do-i-set-parameters-for-my-image-at-runtime) to pass along debugging configuration arguments. For example, to have the remote VM accept local debug connections on port 5005, but not suspend:
```
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=localhost:5005
```
Then connect your debugger to port 5005 on your local host. You can port-forward the container port to a localhost port for easy access.
Using Docker: `docker run -p 5005:5005 <image>`
Using Kubernetes: `kubectl port-forward <pod name> 5005:5005`
Beware: in Java 8 and earlier, specifying only a port meant that the JDWP socket was open to all incoming connections which is insecure. It is recommended to limit the debug port to localhost.
### I would like to run my application with a javaagent.
You can run your container with a javaagent by placing it somewhere in the `src/main/jib/myfolder` directory to add it to the container's filesystem, then pointing to it using Jib's `container.jvmFlags` configuration.
#### Maven
```xml
<configuration>
<container>
<jvmFlags>
<jvmFlag>-javaagent:/myfolder/agent.jar</jvmFlag>
</jvmFlags>
</container>
</configuration>
```
#### Gradle
```groovy
jib.container.jvmFlags = ['-javaagent:/myfolder/agent.jar']
```
See also:
- [Can I ADD a custom directory to the image?](#can-i-add-a-custom-directory-to-the-image)
- [Javaagent sample](https://github.com/GoogleContainerTools/jib/tree/master/examples/java-agent): dynamically downloads a javaagent during build
- (Gradle) [javaagent-gradle-plugin](https://github.com/ryandens/javaagent-gradle-plugin#jib-integration): third-party Jib extension
### How can I tag my image with a timestamp?
#### Maven
To tag the image with a simple timestamp, add the following to your `pom.xml`:
```xml
<properties>
<maven.build.timestamp.format>yyyyMMdd-HHmmssSSS</maven.build.timestamp.format>
</properties>
```
Then in the `jib-maven-plugin` configuration, set the `tag` to:
```xml
<configuration>
<to>
<image>my-image-name:${maven.build.timestamp}</image>
</to>
</configuration>
```
You can then use the same timestamp to reference the image in other plugins.
#### Gradle
To tag the image with a timestamp, simply set the timestamp as the tag for `to.image` in your `jib` configuration. For example:
```groovy
jib.to.image = 'gcr.io/my-gcp-project/my-app:' + System.nanoTime()
```
### What would a Dockerfile for a Jib-built image look like?
A Dockerfile that performs a Jib-like build is shown below:
```Dockerfile
# Jib uses Adoptium Eclipse Temurin (formerly AdoptOpenJDK).
FROM eclipse-temurin:11-jre
# Multiple copy statements are used to break the app into layers,
# allowing for faster rebuilds after small changes
COPY dependencyJars /app/libs
COPY snapshotDependencyJars /app/libs
COPY projectDependencyJars /app/libs
COPY resources /app/resources
COPY classFiles /app/classes
# Jib's extra directory ("src/main/jib" by default) is used to add extra, non-classpath files
COPY src/main/jib /
# Jib's default entrypoint when container.entrypoint is not set
ENTRYPOINT ["java", jib.container.jvmFlags, "-cp", "/app/resources:/app/classes:/app/libs/*", jib.container.mainClass]
CMD [jib.container.args]
```
When unset, Jib will infer the value for `jib.container.mainClass`.
Some plugins, such as the [Docker Prepare Gradle Plugin](https://github.com/gclayburg/dockerPreparePlugin), will even automatically generate a Docker context for your project, including a Dockerfile.
### How can I inspect the image Jib built?
To inspect the image that is produced from the build using Docker, you can use commands such as `docker inspect your/image:tag` to view the image configuration, or you can also download the image using `docker save` to manually inspect the container image. Other tools, such as [dive](https://github.com/wagoodman/dive), provide nicer UI to inspect the image.
### How do I specify a platform in the manifest list (or OCI index) of a base image?
Newer Jib versions added an _incubating feature_ that provides support for selecting base images with the desired platforms from a manifest list. For example,
```xml
<from>
<image>... image reference to a manifest list ...</image>
<platforms>
<platform>
<architecture>amd64</architecture>
<os>linux</os>
</platform>
<platform>
<architecture>arm64</architecture>
<os>linux</os>
</platform>
</platforms>
</from>
```
```gradle
jib.from {
image = '... image reference to a manifest list ...'
platforms {
platform {
architecture = 'amd64'
os = 'linux'
}
platform {
architecture = 'arm64'
os = 'linux'
}
}
}
```
The default when not specified is a single "amd64/linux" platform, whose behavior is backward-compatible.
When multiple platforms are specified, Jib creates and pushes a manifest list (also known as a fat manifest) after building and pushing all the images for the specified platforms.
As an incubating feature, there are certain limitations:
- OCI image indices are not supported (as opposed to Docker manifest lists).
- Only `architecture` and `os` are supported. If the base image manifest list contains multiple images with the given architecture and os, the first image will be selected.
- Does not support using a local Docker daemon or tarball image for a base image.
- Does not support pushing to a Docker daemon (`jib:dockerBuild` / `jibDockerBuild`) or building a local tarball (`jib:buildTar` / `jibBuildTar`).
Make sure to specify a manifest _list_ in `<from><image>` (whether by a tag name or a digest (`@sha256:...`)). For troubleshooting, you may want to check what platforms the manifest list contains. To view a manifest list, [enable experimental docker CLI](https://docs.docker.com/engine/reference/commandline/cli/#experimental-features) features and then run the [manifest inspect](https://docs.docker.com/engine/reference/commandline/manifest_inspect/) command.
```
$ docker manifest inspect openjdk:8
{
...
// This confirms that openjdk:8 points to a manifest list.
"mediaType": "application/vnd.docker.distribution.manifest.list.v2+json",
"manifests": [
{
// This entry in the list points to the manifest for the ARM64/Linux manifest.
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
...
"digest": "sha256:1fbd49e3fc5e53154fa93cad15f211112d899a6b0c5dc1e8661d6eb6c18b30a6",
"platform": {
"architecture": "arm64",
"os": "linux",
"variant": "v8"
}
}
]
}
```
### I want to exclude files from layers, have more fine-grained control over layers, change file ownership, etc.
See ["Jib build plugins don't have the feature that I need"](#jib-build-plugins-dont-have-the-feature-that-i-need).
### Jib build plugins don't have the feature that I need.
The Jib build plugins have an extension framework that enables anyone to easily extend Jib's behavior to their needs. We maintain select [first-party](https://github.com/GoogleContainerTools/jib-extensions/tree/master/first-party) plugins for popular use cases like [fine-grained layer control](https://github.com/GoogleContainerTools/jib-extensions/tree/master/first-party/jib-layer-filter-extension-gradle) and [Quarkus support](https://github.com/GoogleContainerTools/jib-extensions/tree/master/first-party/jib-quarkus-extension-gradle), but anyone can write and publish an extension. Check out the [jib-extensions](https://github.com/GoogleContainerTools/jib-extensions) repository for more information.
### I am hitting Docker Hub rate limits. How can I configure registry mirrors?
See the [Maven](https://github.com/GoogleContainerTools/jib/tree/master/jib-maven-plugin#global-jib-configuration), [Gradle](https://github.com/GoogleContainerTools/jib/tree/master/jib-gradle-plugin#global-jib-configuration) or [Jib CLI](https://github.com/GoogleContainerTools/jib/blob/master/jib-cli/README.md#global-jib-configuration) docs. Note that the example in the docs uses [Google's Docker Hub mirror on `mirror.gcr.io`](https://cloud.google.com/container-registry/docs/pulling-cached-images).
Starting from Jib build plugins 3.0, Jib by default uses [base images on Docker Hub](default_base_image.md), so you may start to encounter the rate limits if you are not explicitly setting a base image.
Some other alternatives to get around the rate limits:
* Prevent Jib from accessing Docker Hub (after Jib cached a base image locally).
- **Pin to a specific base image using a SHA digest.** For example, `jib.from.image='eclipse-temurin:11-jre@sha256:...'`. If you are not setting a base image with a SHA digest (which is the case if you don't set `jib.from.image` at all), then every time Jib runs, it reaches out to the registry to check if the base image is up-to-date. On the other hand, if you pin to a specific image with a digest, then the image is immutable. Therefore, if Jib has cached the image once (by running Jib online once to fully cache the image), Jib will not reach out to the Docker Hub. See [this Stack Overflow answer](https://stackoverflow.com/a/61190005/1701388) for more details.
- (Maven/Gradle plugins only) **Do offline building.** Pass `--offline` to Maven or Gradle. Before that, you need to run Jib online once to cache the image. However, `--offline` means you cannot push to a remote registry. See [this Stack Overflow answer](https://stackoverflow.com/a/61190005/1701388) for more details.
- **Retrieve a base image from a local Docker daemon.** Store an image to your local Docker daemon, and set, say, `jib.from.image='docker://eclipse-temurin:11-jre'`. It can be slow for an initial build where Jib has to cache the image in Jib's format. For performance reasons, we usually recommend using an image on a registry.
- **Set up a local registry, store a base image, and read it from the local registry.** Setting up a local registry is as simple as running `docker run -d -p5000:5000 registry:2`, but nevertheless, the whole process is a bit involved.
* Retry with increasing backoffs. For example, using the [`retry`](https://github.com/kadwanev/retry) tool.
### Where is the global Jib configuration file and how I can configure it?
See the [Maven](https://github.com/GoogleContainerTools/jib/tree/master/jib-maven-plugin#global-jib-configuration), [Gradle](https://github.com/GoogleContainerTools/jib/tree/master/jib-gradle-plugin#global-jib-configuration) or [Jib CLI](https://github.com/GoogleContainerTools/jib/blob/master/jib-cli/README.md#global-jib-configuration) docs.
## Build Problems
### <a name="registry-errors"></a>How can I diagnose problems pulling or pushing from remote registries?
There are a few reasons why Jib may be unable to connect to a remote registry, including:
- **Registry reports FORBIDDEN.** See [_What should I do when the registry responds with Forbidden or DENIED?_](#what-should-i-do-when-the-registry-responds-with-forbidden-or-denied)
- **Registry reports UNAUTHORIZED.** See [_What should I do when the registry responds with UNAUTHORIZED?_](#what-should-i-do-when-the-registry-responds-with-unauthorized)
- **Access requires a proxy.** See [_How do I configure a proxy?_](#how-do-i-configure-a-proxy) for details.
- **The registry does not support HTTPS.** We do not pass authentication details on non-HTTPS connections, though this can be overridden with the `sendCredentialsOverHttp` system property, but it is not recommend (_version 0.9.9_).
- **The registry's SSL certificates have expired or are not trusted.** We have a separate document on [handling registries that use self-signed certificates](self_sign_cert.md), which may also apply if the SSL certificate is signed by an untrusted Certificate Authority. Jib supports an `allowInsecureRegistries` flag to ignore SSL certificate validation, but it is not recommend (_version 0.9.9_).
- **The registry does not support the [Docker Image Format V2 Schema 2](https://github.com/GoogleContainerTools/jib/issues/601)** (sometimes referred to as _v2-2_). This problem is usually shown by failures wth `INVALID_MANIFEST` errors. Some registries can be configured to support V2-2 such as [Artifactory](https://www.jfrog.com/confluence/display/RTF/Docker+Registry#DockerRegistry-LocalDockerRepositories) and [OpenShift](https://docs.openshift.com/container-platform/3.9/install_config/registry/extended_registry_configuration.html#middleware-repository-acceptschema2). Other registries, such as Quay.io/Quay Enterprise, are in the process of adding support.
### What should I do when the registry responds with Forbidden or DENIED?
If the registry returns `403 Forbidden` or `"code":"DENIED"`, it often means Jib successfully authenticated using your credentials but the credentials do not have permissions to pull or push images. Make sure your account/role has the permissions to do the operation.
Depending on registry implementations, it is also possible that the registry actually meant you are not authenticated. See [What should I do when the registry responds with UNAUTHORIZED?](#what-should-i-do-when-the-registry-responds-with-unauthorized) to ensure you have set up credentials correctly.
### What should I do when the registry responds with UNAUTHORIZED?
If the registry returns `401 Unauthorized` or `"code":"UNAUTHORIZED"`, it is often due to credential misconfiguration. Examples:
* You did not configure auth information in the default places where Jib searches. (See also [Authentication Methods](https://github.com/GoogleContainerTools/jib/blob/master/jib-maven-plugin/README.md#authentication-methods)).
- Docker credential file (as generated by `docker login` or `podman login`) at
- `$XDG_RUNTIME_DIR/containers/auth.json`, `$XDG_CONFIG_HOME/containers/auth.json` or `$HOME/.config/containers/auth.json`
- `$DOCKER_CONFIG/config.json`
- `$HOME/.docker/config.json`
This is [one of the configuration files](https://docs.docker.com/engine/reference/commandline/cli/#configuration-files) for the `docker` or `podman` command line tool. See [configuration files document](https://docs.docker.com/engine/reference/commandline/cli/#configuration-files), [credential store](https://docs.docker.com/engine/reference/commandline/login/#credentials-store) and [credential helper](https://docs.docker.com/engine/reference/commandline/login/#credential-helpers) sections, and [this](https://github.com/GoogleContainerTools/jib/issues/101) for how to configure auth. For example, you can do `docker login` to save auth in `config.json`, but it is often recommended to configure a credential helper (also configurable in `config.json`).
If Jib was able to retrieve auth information from a Docker credential file, you should see a log message similar to `Using credentials from Docker config (/home/myuser/.docker/config.json)` where you can verify which credential file was picked up by Jib.
- Jib configurations
- Configuring credential helpers: [`<from/to><credHelper>`](https://github.com/GoogleContainerTools/jib/tree/master/jib-maven-plugin#using-docker-credential-helpers) (Maven) / [`from/to.credHelper`](https://github.com/GoogleContainerTools/jib/tree/master/jib-gradle-plugin#using-docker-credential-helpers) (Gradle)
- Specific credentials (not recommend): [`<from/to><auth><username>/<password>`](https://github.com/GoogleContainerTools/jib/tree/master/jib-maven-plugin#using-specific-credentials) or in [`settings.xml`](https://github.com/GoogleContainerTools/jib/tree/master/jib-maven-plugin#using-maven-settings) (Maven) / [`from/to.auth.username/password`](https://github.com/GoogleContainerTools/jib/tree/master/jib-gradle-plugin#using-specific-credentials) (Gradle)
- These parameters can also be set through properties: [Maven](https://github.com/GoogleContainerTools/jib/tree/master/jib-maven-plugin#system-properties) / [Gradle](https://github.com/GoogleContainerTools/jib/tree/master/jib-gradle-plugin#system-properties)
* For Google Cloud Registry (GCR), the Container Registry API is not yet enabled for your project.
- You enable the API from [Cloud Console](https://console.cloud.google.com/flows/enableapi?apiid=containerregistry.googleapis.com) or with the following [Cloud SDK](https://cloud.google.com/sdk/docs) command: `gcloud services enable containerregistry.googleapis.com`
* `$HOME/.docker/config.json` may also contain short-lived authorizations in the `auths` block that may have expired. In the case of Google Container Registry, if you had previously used `gcloud docker` to configure these authorizations, you should remove these stale authorizations by editing your `config.json` and deleting lines from `auths` associated with `gcr.io` (for example: `"https://asia.gcr.io"`). You can then run `gcloud auth configure-docker` to correctly configure the `credHelpers` block for more robust interactions with gcr.
* Different auth configurations exist in multiple places, and Jib is not picking up the auth information you are working on.
* You configured a credential helper, but the helper is not on `$PATH`. This is especially common when running Jib inside IDE where the IDE binary is launched directly from an OS menu and does not have access to your shell's environment.
* Configured credentials have access to the base image repository but not to the target image repository (or vice versa).
* Typos in username, password, image names, repository names, or registry names. This is a very common error.
* Image names do not conform to the structure or policy that a registry requires. For example, [Docker Hub returns 401 Unauthorized](https://github.com/GoogleContainerTools/jib/issues/2650#issuecomment-667323777) when trying to use a multi-level repository name.
* Incorrect port number in image references (`registry.hostname:<port>/...`).
* You are using a private registry without HTTPS. See [How can I diagnose problems pulling or pushing from remote registries?](#how-can-i-diagnose-problems-pulling-or-pushing-from-remote-registries).
Note, if Jib was able to retrieve credentials, you should see a log message like these:
```
Using credentials from Docker config (/home/user/.docker/config.json) for localhost:5000/java
```
```
Using credential helper docker-credential-gcr for gcr.io/project/repo
```
```
Using credentials from Maven settings file for gcr.io/project/repo
```
```
Using credentials from <from><auth> for gcr.io/project/repo
```
```
Using credentials from to.auth for gcr.io/project/repo
```
If you encounter issues interacting with a registry other than `UNAUTHORIZED`, check ["How can I diagnose problems pulling or pushing from remote registries?"](#how-can-i-diagnose-problems-pulling-or-pushing-from-remote-registries).
### How do I configure a proxy?
Jib currently requires configuring your build tool to use the appropriate [Java networking properties](https://docs.oracle.com/javase/8/docs/api/java/net/doc-files/net-properties.html) (`https.proxyHost`, `https.proxyPort`, `https.proxyUser`, `https.proxyPassword`).
### How can I examine network traffic?
It can be useful to examine network traffic to diagnose connectivity issues. Jib uses the Google HTTP client library to interact with registries which logs HTTP requests using the JVM-provided `java.util.logging` facilities. It is very helpful to serialize Jib's actions using the `jib.serialize` property.
To see the HTTP traffic, create a `logging.properties` file with the following:
```
handlers = java.util.logging.ConsoleHandler
java.util.logging.ConsoleHandler.level=ALL
# CONFIG hides authentication data
# ALL includes authentication data
com.google.api.client.http.level=CONFIG
```
And then launch your build tool as follows:
```sh
mvn --batch-mode -Djava.util.logging.config.file=path/to/logging.properties -Djib.serialize=true ...
```
or
```sh
gradle --no-daemon --console=plain --info -Djava.util.logging.config.file=path/to/logging.properties -Djib.serialize=true ...
```
**Note**: Jib Gradle plugins prior to version 2.2.0 have an issue generating HTTP logs ([#2356](https://github.com/GoogleContainerTools/jib/issues/2356)).
You may want to enable the debug logs too (`-X` for Maven, or `--debug --stacktrace` for Gradle).
When configured correctly, you should see logs like this:
```
Mar 31, 2020 9:55:52 AM com.google.api.client.http.HttpResponse <init>
CONFIG: -------------- RESPONSE --------------
HTTP/1.1 202 Accepted
Content-Length: 0
Docker-Distribution-Api-Version: registry/2.0
Docker-Upload-Uuid: 6292f0d7-93cb-4a8e-8336-78a1bf7febd2
Location: https://registry-1.docker.io/v2/...
Range: 0-657292
Date: Tue, 31 Mar 2020 13:55:52 GMT
Strict-Transport-Security: max-age=31536000
Mar 31, 2020 9:55:52 AM com.google.api.client.http.HttpRequest execute
CONFIG: -------------- REQUEST --------------
PUT https://registry-1.docker.io/v2/...
Accept:
Accept-Encoding: gzip
Authorization: <Not Logged>
User-Agent: jib 2.1.1-SNAPSHOT jib-maven-plugin Google-HTTP-Java-Client/1.34.0 (gzip)
```
### How do I view debug logs for Jib?
Maven: use `mvn -X -Djib.serialize=true` to enable more detailed logging and serialize Jib's actions.
Gradle: use `gradle --debug -Djib.serialize=true` to enable more detailed logging and serialize Jib's actions.
### I am seeing `Method Not Found` or `Class Not Found` errors when building.
Sometimes when upgrading your Gradle build plugin versions, you may experience errors due to mismatching versions of dependencies pulled in (for example: [issues/2183](https://github.com/GoogleContainerTools/jib/issues/2183)). This can be due to the buildscript classpath loading behavior described [on gradle forums](https://discuss.gradle.org/t/version-is-root-build-gradle-buildscript-is-overriding-subproject-buildscript-dependency-versions/20746/3).
This commonly appears in multi module Gradle projects. A solution to this problem is to define all of your plugins in the base project and apply them selectively in your subprojects as needed. This should help alleviate the problem of the buildscript classpath using older versions of a library.
`build.gradle` (root)
```groovy
plugins {
id 'com.google.cloud.tools.jib' version 'x.y.z' apply false
}
```
`build.gradle` (sub-project)
```groovy
plugins {
id 'com.google.cloud.tools.jib'
}
```
### I am seeing `Unsupported class file major version` when building.
When you're using latest Java versions to write an app (or using an old version of Jib), you may see the error _coming from Jib when building an image_ (not when compiling your code):
```
Failed to execute goal com.google.cloud.tools:jib-maven-plugin:3.2.0:dockerBuild (default-cli) on project demo: Execution default-cli of goal com.google.cloud.tools:jib-maven-plugin:3.2.0:dockerBuild failed: Unsupported class file major version 61
```
Jib uses the [ASM library](https://asm.ow2.io/) to examine compiled Java bytecode to automatically infer a main class (in other words, the class that defines `public static void main()` to start your app). In this way, if you have only one such class, Jib can automatically infer and use that class to set an image entrypoint (basically, a command to start your app). When new Java versions come out, often the ASM library version used in Jib doesn't support the new bytecode format. If this is the case, check if you are using the latest Jib. If you still get the error with the latest Jib, file a [bug](https://github.com/GoogleContainerTools/jib/issues/new/choose) to have the Jib team upgrade the ASM library.
**Workaround**: to prevent Jib from doing auto-inference, you can manually set your desired main class via [`<container><mainClass>`](https://github.com/GoogleContainerTools/jib/tree/master/jib-maven-plugin#container-object) (for example, `<container><mainClass>com.example.your.Main</mainClass>`). As with other Jib parameters, it can be set through system/Maven properties or on the command-line (for example, `-Dcontainer.mainClass=...`).
Note that although the ASM library is the common cause of this error coming from Jib, it may be due to other reasons. Always check the full stack (`-e` or `-X` for Maven and `--stacktrace` for Gradle) to see where the error is coming from.
### I am seeing `NoClassDefFoundError: com/github/luben/zstd/ZstdOutputStream` when building.
Jib supports base image layers with media-type `application/vnd.oci.image.layer.v1.tar+zstd`, i.e. compressed with zstd algorithm instead of gzip.
However, the dependency to zstd is optional, so pulling such layers will result in:
```
java.lang.NoClassDefFoundError: com/github/luben/zstd/ZstdOutputStream
at org.apache.commons.compress.compressors.zstandard.ZstdCompressorOutputStream.<init>
```
This can be solved by adding a dependency to artifact `com.github.luben:zstd-jni:1.5.2-3` to the plugin.
## Launch problems
### I am seeing `ImagePullBackoff` on my pods (in [minikube](https://github.com/kubernetes/minikube)).
When you use your private image built with Jib in a [Kubernetes cluster](kubernetes.io), the cluster needs to be configured with credentials to pull the image. This involves 1) creating a [Secret](https://kubernetes.io/docs/concepts/configuration/secret/), and 2) using the Secret as [`imagePullSecrets`](https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/#add-imagepullsecrets-to-a-service-account).
```shell
kubectl create secret docker-registry registry-json-key \
--docker-server=<registry> \
--docker-username=<username> \
--docker-password=<password> \
--docker-email=<any valid email address>
kubectl patch serviceaccount default \
-p '{"imagePullSecrets":[{"name":"registry-json-key"}]}'
```
For example, if you are using GCR, the commands would look like (see [Advanced Authentication Methods](https://cloud.google.com/container-registry/docs/advanced-authentication)):
```shell
kubectl create secret docker-registry gcr-json-key \
--docker-server=https://gcr.io \
--docker-username=_json_key \
--docker-password="$(cat keyfile.json)" \
--docker-email=any@valid.com
kubectl patch serviceaccount default \
-p '{"imagePullSecrets":[{"name":"gcr-json-key"}]}'
```
See more at [Using Google Container Registry (GCR) with Minikube](https://ryaneschinger.com/blog/using-google-container-registry-gcr-with-minikube/).
### Why won't my container start?
There are some common reasons why containers fail on launch.
#### My shell script won't run.
Jib Maven and Gradle plugins prior to 3.0 used Distroless Java as the default base image, which does not have a shell. See [Where is bash?](#where-is-bash) for more details.
#### The container fails with `exec` errors.
A Jib user reported an error launching their container:
```
standard_init_linux.go:211 exec user process caused "no such file or directory"
```
On examining the container structure with [Dive](https://github.com/wagoodman/dive), the user discovered that the contents of the `/lib` directory had disappeared.
The user had used Jib's ability to install extra files into the image ([Maven](https://github.com/GoogleContainerTools/jib/tree/master/jib-maven-plugin#adding-arbitrary-files-to-the-image), [Gradle](https://github.com/GoogleContainerTools/jib/tree/master/jib-gradle-plugin#adding-arbitrary-files-to-the-image)) to install a library file by placing it in `src/main/jib/lib/libfoo.so`. This would normally cause the `libfoo.so` to be installed in the image as `/lib/libfoo.so`. But `/lib` and `/lib64` in the user's base image were symbolic links. Jib does not follow such symbolic links when creating the image. And at container initialization time, Docker treats these symlinks as a file, and thus the symbolic link was replaced with `/lib` as a new directory. As a result, none of the system shared libraries were resolved and dynamically-linked programs failed.
Solution: The user installed the file in a different location.
## Jib CLI
### How does the `jar` command support Standard JARs?
The Jib CLI supports both [thin JARs](https://docs.oracle.com/javase/tutorial/deployment/jar/downman.html) (where dependencies are specified in the JAR's manifest) and fat JARs.
The current limitation of using a fat JAR is that the embedded dependencies will not be placed into the designated dependencies layers. They will instead be placed into the classes or resources layer. Therefore, for efficiency, we recommend against containerizing fat JARs (Spring Boot fat JARs are an [exception](#how-does-the-jar-command-support-spring-boot-jars)) if you can prepare thin JARs. We hope to have better support for fat JARs in the future.
A standard JAR can be containerized by the `jar` command in two modes, exploded or packaged.
#### Exploded Mode (Recommended)
Achieved by calling `jib jar --target ${TARGET_REGISTRY} ${JAR_NAME}.jar`
The default mode for containerizing a JAR. It will open up the JAR and optimally place files into the following layers:
* Other Dependencies Layer
* Snapshot-Dependencies Layer
* Resources Layer
* Classes Layer
**Entrypoint** : `java -cp /app/dependencies/:/app/explodedJar/ ${MAIN_CLASS}`
#### Packaged Mode
Achieved by calling `jib jar --target ${TARGET_REGISTRY} ${JAR_NAME}.jar --mode packaged`.
It will result in the following layers on the container:
* Dependencies Layer
* Jar Layer
**Entrypoint** : `java -jar ${JAR_NAME}.jar`
### How does the `jar` command support Spring Boot JARs?
The `jar` command currently supports containerization of Spring Boot fat JARs.
A Spring-Boot fat JAR can be containerized in two modes, exploded or packaged.
#### Exploded Mode (Recommended)
Achieved by calling `jib jar --target ${TARGET_REGISTRY} ${JAR_NAME}.jar`
The default mode for containerizing a JAR. It will respect [`layers.idx`](https://spring.io/blog/2020/08/14/creating-efficient-docker-images-with-spring-boot-2-3) in the JAR (if present) or create optimized layers in the following format:
* Other Dependencies Layer
* Spring-Boot-Loader Layer
* Snapshot-Dependencies Layer
* Resources Layer
* Classes Layer
**Entrypoint** : `java -cp /app org.springframework.boot.loader.JarLauncher`
#### Packaged Mode
Achieved by calling `jib jar --target ${TARGET_REGISTRY} ${JAR_NAME}.jar --mode packaged`
It will containerize the JAR as is. However, **note** that we highly recommend against using packaged mode for containerizing Spring Boot fat JARs.
**Entrypoint**: `java -jar ${JAR_NAME}.jar`
### How does the `war` command work?
The `war` command currently supports containerization of standard WARs. It uses the official [`jetty`](https://hub.docker.com/_/jetty) on Docker Hub as the default base image and explodes out the WAR into `/var/lib/jetty/webapps/ROOT` on the container. It creates the following layers:
* Other Dependencies Layer
* Snapshot-Dependencies Layer
* Resources Layer
* Classes Layer
The default entrypoint when using a jetty base image will be `java -jar /usr/local/jetty/start.jar --module=ee10-deploy` unless you choose to specify a custom one.
You can use a different Servlet engine base image with the help of the `--from` option and customize `--app-root`, `--entrypoint` and `--program-args`. If you don't set the `entrypoint` or `program-arguments`, Jib will inherit them from the base image. However, setting the `--app-root` is **required** if you use a non-jetty base image. Here is how the `war` command may look if you're using a Tomcat image:
```
$ jib war --target=<image-reference> myapp.war --from=tomcat:8.5-jre8-alpine --app-root=/usr/local/tomcat/webapps/ROOT
```
================================================
FILE: docs/google-cloud-build.md
================================================
# Jib on Google Cloud Build
You can use Jib on [Google Cloud Build](https://cloud.google.com/build) in a simple step:
```yaml
steps:
- name: 'gcr.io/cloud-builders/javac:8'
entrypoint: './gradlew'
args: ['--console=plain', '--no-daemon', ':server:jib', '-Djib.to.image=gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA']
```
Any Java container can be used for building, not only the `gcr.io/cloud-builders/javac:*` (from [gcr.io/cloud-builders/javac](https://github.com/GoogleCloudPlatform/cloud-builders/tree/master/javac)), for example with [Temurin](https://adoptium.net/en-GB/temurin/)'s:
```yaml
steps:
- name: 'docker.io/library/eclipse-temurin:25'
entrypoint: './gradlew'
args: ['--console=plain', '--no-daemon', ':server:jib', '-Djib.to.image=gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA']
```
To use [Google "Distroless" Container Images](https://github.com/GoogleContainerTools/distroless) to build with Jib on Google Cloud Build, and avoid running into `Step #1: standard_init_linux.go:228: exec user process caused: no such file or directory` errors (because Google's _distroless_ containers are based on `busybox`), you have to do something like this:
```yaml
steps:
- name: 'gcr.io/distroless/java17-debian11:debug'
entrypoint: '/busybox/sh'
args:
- -c
- |
ln -s /busybox/sh /bin/sh
ln -s /busybox/env /usr/bin/env
/workspace/gradlew --console=plain --no-daemon --gradle-user-home=/home/.gradle :server:jib -Djib.to.image=gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA
```
================================================
FILE: docs/privacy.md
================================================
The privacy of our users is very important to us.
Your use of this software is subject to the <a href=https://policies.google.com/privacy>Google Privacy Policy</a>.
## Update check
Many Jib users are unaware of new releases. To encourage users to stay up-to-date, the Jib Maven and Jib Gradle plugins (2.0.0 and later) and Jib CLI (0.6.0 and later) will
periodically check to see if there is a new version of Jib is available. This check fetches a simple text
file hosted in Google Cloud Storage. As a side effect this request is logged, which includes the request path,
source IP address, and the user-agent string. The user-agent is set by Jib and includes the Jib tool name
and version.
### How to disable update checks
1. set the `jib.disableUpdateChecks` system property to `true`
2. set `disableUpdateCheck` to `true` in Jib's global config. The global config is in the following locations by default:
* Linux: `$XDG_CONFIG_HOME/google-cloud-tools-java/jib/config.json` (if `$XDG_CONFIG_HOME` is defined), else `$HOME/.config/google-cloud-tools-java/jib/config.json`
* Mac: `$XDG_CONFIG_HOME/Google/Jib/config.json` (if `$XDG_CONFIG_HOME` is defined), else `$HOME/Library/Preferences/Google/Jib/config.json`
* Windows: `$XDG_CONFIG_HOME\Google\Jib\Config\config.json` (if `$XDG_CONFIG_HOME` is defined), else `%LOCALAPPDATA%\Google\Jib\Config\config.json`
================================================
FILE: docs/self_sign_cert.md
================================================
# Accessing a private docker registry with self-signed certificate
Jib relies on the Java Runtime Environment's list of approved _Certification Authority Certificates_ for validating SSL certificates, and will hence fail when connecting to a docker registry that uses a self-signed `https` certificate. This document describes two approaches for handling registries with self-signed certificates. Both approaches configure the JRE's list of approved CA Certificates.
These CA Certificates for JRE are managed through a type of a keystore file called _truststore_. An easy way to manipulate truststores is using the [KeyStore Explorer](http://keystore-explorer.org/), an open source GUI replacement for the Java command-line `keytool` and `jarsigner` utilities. Download and install KeyStore Explorer from the [official website](http://keystore-explorer.org/downloads.html).
## Step 1. Identify Java runtime used by build tool
We must first identify the location of your build-tool's JRE's list of CA Certificates.
### Maven
Run `mvn --version` and take note of the Java runtime location:
```shell
$ mvn --version
Apache Maven 3.5.4 (1edded0938998edf8bf061f1ceb3cfdeccf443fe; 2018-06-18T06:33:14+12:00)
Maven home: /usr/local/Cellar/maven/3.5.4/libexec
Java version: 1.8.0_172, vendor: Oracle Corporation, runtime: /Library/Java/JavaVirtualMachines/jdk1.8.0_172.jdk/Contents/Home/jre
Default locale: en_NZ, platform encoding: UTF-8
OS name: "mac os x", version: "10.13.6", arch: "x86_64", family: "mac"
```
In this example the Java runtime location is `/Library/Java/JavaVirtualMachines/jdk1.8.0_172.jdk/Contents/Home/jre`.
### Gradle
Create an init script with the following:
```
println org.gradle.internal.jvm.Jvm.current().getJavaHome()
```
And run `gradle -I /path/to/script` to output the executing JRE location.
```shell
$ gradle -I /tmp/printjrelocation
/Library/Java/JavaVirtualMachines/jdk1.8.0_172.jdk/Contents/Home
> Task :help
Welcome to Gradle 4.6.
[...]
```
### JRE vs JDK Distributions
The Maven and Gradle examples above report two different directories, where the Maven example reported a `.../jre` subdirectory. Java Development Kits usually include a standalone Java Runtime Environment inside the `jre/` directory. If present, use the `jre/` directory as the runtime location.
## 2. Load JRE CA Certificates
Having identified your Java runtime location:
* Launch `KeyStore Explorer`
* Select _Open an existing KeyStore_
* Navigate to the Java runtime location identified previously, and then continue to open the file at `jre/lib/security/cacerts`. If there is no `jre/` directory then this is a JRE distribution and should navigate and instead open the file at `lib/security/cacerts`.
* In the example above, this file would be `/Library/Java/JavaVirtualMachines/jdk1.8.0_172.jdk/Contents/Home/jre/lib/security/cacerts`.
* You will likely be prompted for a password. The default password for the `cacerts` file is `changeit`.
## 3. Import Self-Signed Certificate
If you have the self-signed certificate in a file then:
* Select _Tools > Import Trusted Certificate_
* Select the certifcate file on disk
* Give it a name, or use suggested name, and click _OK_
* Click _OK_ on the success window
Otherwise use _Examine > Examine SSL_ to connect to your service and click the _Import_ button to import its SSL certificate. Then click _OK_.

## 4. Save the CA Certificates
Now we save the updated truststore. We can either save to a new truststore and configure our build's JVM to use this new truststore, or modify the JRE's list of CA Certificates.
#### Option 1: Create a New Truststore
This option creates a _new_ list of CA Certificates and configures your build tool to use this new list as the JRE's list of approved CA certificates.
Within _KeyStore Explorer_, select _File > Save As..._ and save the new truststore file as a _JKS_ file within your project location. You will be prompted for a password; we use `password` in the examples below.
##### Maven
The following snippet shows how to configure Maven to use this new truststore file:
```shell
$ ./mvnw -Djavax.net.ssl.trustStore=path/to/truststore.jks \
-Djavax.net.ssl.trustStorePassword=password \
-Dimage=<host>:<port>/<image> jib:build
```
##### Gradle
The following snippet shows how to configure Gradle to use this new truststore file:
```shell
$ ./gradlew jib \
-Djavax.net.ssl.trustStore=path/to/truststore.jks \
-Djavax.net.ssl.trustStorePassword=password
```
#### Option 2: Modify the JRE `cacerts`
The other approach modifies the JRE's list of CA Certificates to include the registry's self-signed certificate. The certificate will be trusted at the JRE level, affecting all Java applications running on it. You must re-import the certificate when you update to a new JRE.
Basically you instruct KeyStore Explorer to save your modified `cacerts` and replace what was previously configured with the JRE. Depending on your operating system and permissions, you may need to save to a new file and then replace the original `lib/security/cacerts` file with administrative privileges.
================================================
FILE: examples/README.md
================================================
# Example projects containerizing with Jib
Please [file an issue](/../../issues/new) if you find any problems with the examples or would like to request other examples.
For examples on using Jib Core, see [jib-core/examples](../jib-core/examples).
### Simple example
See [helloworld](helloworld) for containerizing a simple `Hello World` application.
### Multi-module example (DRAFT)
See [multi-module](multi-module) for containerizing projects with multiple modules.
### Vert.x
See [vertx](vertx) for containerizing [Eclipse Vert.x](https://vertx.io/) applications.
### Spring Boot example
See [spring-boot](spring-boot) for containerizing a [Spring Boot](https://spring.io/projects/spring-boot) application and running it on [Kubernetes](https://kubernetes.io).
### Ktor example
See [ktor](ktor) for containerizing a [Ktor](https://ktor.io) Kotlin Application using the Kotlin Gradle DSL.
### Dropwizard example
See [dropwizard](dropwizard) for containerizing [Dropwizard](https://dropwizard.io) applications.
### Micronaut example
See [micronaut](micronaut) for containerizing a [Micronaut framework](https://micronaut.io/) Groovy/Java application.
### Java agents example
See [java-agent](java-agent) for launching with the Stackdriver Debugger Java agent.
### Kafka Connect+Streams example
See the following projects for using Jib-packaged applications in coordination with [Apache Kafka](http://kafka.apache.org/documentation).
- [Kafka Streams](http://kafka.apache.org/documentation/streams) - [`OneCricketeer/kafka-streams-jib-example`](https://github.com/OneCricketeer/kafka-streams-jib-example)
- [Kafka Connect](http://kafka.apache.org/documentation#connect) - [`OneCricketeer/apache-kafka-connect-docker`](https://github.com/OneCricketeer/apache-kafka-connect-docker)
================================================
FILE: examples/dropwizard/.mvn/wrapper/MavenWrapperDownloader.java
================================================
/*
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
*/
import java.net.*;
import java.io.*;
import java.nio.channels.*;
import java.util.Properties;
public class MavenWrapperDownloader {
/**
* Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided.
*/
private static final String DEFAULT_DOWNLOAD_URL =
"https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.4.2/maven-wrapper-0.4.2.jar";
/**
* Path to the maven-wrapper.properties file, which might contain a downloadUrl property to
* use instead of the default one.
*/
private static final String MAVEN_WRAPPER_PROPERTIES_PATH =
".mvn/wrapper/maven-wrapper.properties";
/**
* Path where the maven-wrapper.jar will be saved to.
*/
private static final String MAVEN_WRAPPER_JAR_PATH =
".mvn/wrapper/maven-wrapper.jar";
/**
* Name of the property which should be used to override the default download url for the wrapper.
*/
private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl";
public static void main(String args[]) {
System.out.println("- Downloader started");
File baseDirectory = new File(args[0]);
System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath());
// If the maven-wrapper.properties exists, read it and check if it contains a custom
// wrapperUrl parameter.
File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH);
String url = DEFAULT_DOWNLOAD_URL;
if(mavenWrapperPropertyFile.exists()) {
FileInputStream mavenWrapperPropertyFileInputStream = null;
try {
mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile);
Properties mavenWrapperProperties = new Properties();
mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream);
url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url);
} catch (IOException e) {
System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'");
} finally {
try {
if(mavenWrapperPropertyFileInputStream != null) {
mavenWrapperPropertyFileInputStream.close();
}
} catch (IOException e) {
// Ignore ...
}
}
}
System.out.println("- Downloading from: : " + url);
File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH);
if(!outputFile.getParentFile().exists()) {
if(!outputFile.getParentFile().mkdirs()) {
System.out.println(
"- ERROR creating output direcrory '" + outputFile.getParentFile().getAbsolutePath() + "'");
}
}
System.out.println("- Downloading to: " + outputFile.getAbsolutePath());
try {
downloadFileFromURL(url, outputFile);
System.out.println("Done");
System.exit(0);
} catch (Throwable e) {
System.out.println("- Error downloading");
e.printStackTrace();
System.exit(1);
}
}
private static void downloadFileFromURL(String urlString, File destination) throws Exception {
URL website = new URL(urlString);
ReadableByteChannel rbc;
rbc = Channels.newChannel(website.openStream());
FileOutputStream fos = new FileOutputStream(destination);
fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
fos.close();
rbc.close();
}
}
================================================
FILE: examples/dropwizard/.mvn/wrapper/maven-wrapper.properties
================================================
distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.0/apache-maven-3.6.0-bin.zip
================================================
FILE: examples/dropwizard/README.md
================================================
# Containerize a [Dropwizard](https://dropwizard.io) application with Jib
## How to start the Dropwizard application
1. Run `./mvnw clean package` to build your container
1. Start the application
- **With Docker**: `docker run --rm -p 8080:8080 dropwizard-jib-example:1`
- **Without Docker**: `./mvnw exec:java`
1. Check that your application is running at http://localhost:8080
## Health Check
See your application's health at http://localhost:8080/admin/healthcheck
## Extras
FreeMaker templating is setup for [`dropwizard.yml`](src/main/resources/dropwizard.yml) through [`tkrille/dropwizard-template-config`](https://github.com/tkrille/dropwizard-template-config); this allows one to heavily customize the properties file via the container environment with FTL conditional checks and for loops, for example.
## How this example was generated
Starter Maven template generated with [`dropwizard-archetypes`](https://github.com/dropwizard/dropwizard/tree/master/dropwizard-archetypes)
```sh
mvn archetype:generate \
-DarchetypeGroupId=io.dropwizard.archetypes \
-DarchetypeArtifactId=example \
-DarchetypeVersion=[REPLACE ME WITH A VALID DROPWIZARD VERSION]
```
Ref. [Dropwizard - Getting Started, Setting up With Maven](https://www.dropwizard.io/1.3.5/docs/getting-started.html#setting-up-using-maven)
The remainder of the archetype code was filled-in following the above guide.
## More information
Learn [more about Jib](https://github.com/GoogleContainerTools/jib).
Learn [more about Dropwizard](https://dropwizard.io).
## Build and run on Google Cloud
[](https://deploy.cloud.run?git_repo=https://github.com/GoogleContainerTools/jib.git&dir=examples/dropwizard)
================================================
FILE: examples/dropwizard/mvnw
================================================
#!/bin/sh
# ----------------------------------------------------------------------------
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
# ----------------------------------------------------------------------------
# ----------------------------------------------------------------------------
# Maven2 Start Up Batch script
#
# Required ENV vars:
# ------------------
# JAVA_HOME - location of a JDK home dir
#
# Optional ENV vars
# -----------------
# M2_HOME - location of maven2's installed home dir
# MAVEN_OPTS - parameters passed to the Java VM when running Maven
# e.g. to debug Maven itself, use
# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
# MAVEN_SKIP_RC - flag to disable loading of mavenrc files
# ----------------------------------------------------------------------------
if [ -z "$MAVEN_SKIP_RC" ] ; then
if [ -f /etc/mavenrc ] ; then
. /etc/mavenrc
fi
if [ -f "$HOME/.mavenrc" ] ; then
. "$HOME/.mavenrc"
fi
fi
# OS specific support. $var _must_ be set to either true or false.
cygwin=false;
darwin=false;
mingw=false
case "`uname`" in
CYGWIN*) cygwin=true ;;
MINGW*) mingw=true;;
Darwin*) darwin=true
# Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home
# See https://developer.apple.com/library/mac/qa/qa1170/_index.html
if [ -z "$JAVA_HOME" ]; then
if [ -x "/usr/libexec/java_home" ]; then
export JAVA_HOME="`/usr/libexec/java_home`"
else
export JAVA_HOME="/Library/Java/Home"
fi
fi
;;
esac
if [ -z "$JAVA_HOME" ] ; then
if [ -r /etc/gentoo-release ] ; then
JAVA_HOME=`java-config --jre-home`
fi
fi
if [ -z "$M2_HOME" ] ; then
## resolve links - $0 may be a link to maven's home
PRG="$0"
# need this for relative symlinks
while [ -h "$PRG" ] ; do
ls=`ls -ld "$PRG"`
link=`expr "$ls" : '.*-> \(.*\)$'`
if expr "$link" : '/.*' > /dev/null; then
PRG="$link"
else
PRG="`dirname "$PRG"`/$link"
fi
done
saveddir=`pwd`
M2_HOME=`dirname "$PRG"`/..
# make it fully qualified
M2_HOME=`cd "$M2_HOME" && pwd`
cd "$saveddir"
# echo Using m2 at $M2_HOME
fi
# For Cygwin, ensure paths are in UNIX format before anything is touched
if $cygwin ; then
[ -n "$M2_HOME" ] &&
M2_HOME=`cygpath --unix "$M2_HOME"`
[ -n "$JAVA_HOME" ] &&
JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
[ -n "$CLASSPATH" ] &&
CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
fi
# For Mingw, ensure paths are in UNIX format before anything is touched
if $mingw ; then
[ -n "$M2_HOME" ] &&
M2_HOME="`(cd "$M2_HOME"; pwd)`"
[ -n "$JAVA_HOME" ] &&
JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`"
# TODO classpath?
fi
if [ -z "$JAVA_HOME" ]; then
javaExecutable="`which javac`"
if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then
# readlink(1) is not available as standard on Solaris 10.
readLink=`which readlink`
if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then
if $darwin ; then
javaHome="`dirname \"$javaExecutable\"`"
javaExecutable="`cd \"$javaHome\" && pwd -P`/javac"
else
javaExecutable="`readlink -f \"$javaExecutable\"`"
fi
javaHome="`dirname \"$javaExecutable\"`"
javaHome=`expr "$javaHome" : '\(.*\)/bin'`
JAVA_HOME="$javaHome"
export JAVA_HOME
fi
fi
fi
if [ -z "$JAVACMD" ] ; then
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD="$JAVA_HOME/jre/sh/java"
else
JAVACMD="$JAVA_HOME/bin/java"
fi
else
JAVACMD="`which java`"
fi
fi
if [ ! -x "$JAVACMD" ] ; then
echo "Error: JAVA_HOME is not defined correctly." >&2
echo " We cannot execute $JAVACMD" >&2
exit 1
fi
if [ -z "$JAVA_HOME" ] ; then
echo "Warning: JAVA_HOME environment variable is not set."
fi
CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher
# traverses directory structure from process work directory to filesystem root
# first directory with .mvn subdirectory is considered project base directory
find_maven_basedir() {
if [ -z "$1" ]
then
echo "Path not specified to find_maven_basedir"
return 1
fi
basedir="$1"
wdir="$1"
while [ "$wdir" != '/' ] ; do
if [ -d "$wdir"/.mvn ] ; then
basedir=$wdir
break
fi
# workaround for JBEAP-8937 (on Solaris 10/Sparc)
if [ -d "${wdir}" ]; then
wdir=`cd "$wdir/.."; pwd`
fi
# end of workaround
done
echo "${basedir}"
}
# concatenates all lines of a file
concat_lines() {
if [ -f "$1" ]; then
echo "$(tr -s '\n' ' ' < "$1")"
fi
}
BASE_DIR=`find_maven_basedir "$(pwd)"`
if [ -z "$BASE_DIR" ]; then
exit 1;
fi
##########################################################################################
# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
# This allows using the maven wrapper in projects that prohibit checking in binary data.
##########################################################################################
if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then
if [ "$MVNW_VERBOSE" = true ]; then
echo "Found .mvn/wrapper/maven-wrapper.jar"
fi
else
if [ "$MVNW_VERBOSE" = true ]; then
echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..."
fi
jarUrl="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.4.2/maven-wrapper-0.4.2.jar"
while IFS="=" read key value; do
case "$key" in (wrapperUrl) jarUrl="$value"; break ;;
esac
done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties"
if [ "$MVNW_VERBOSE" = true ]; then
echo "Downloading from: $jarUrl"
fi
wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar"
if command -v wget > /dev/null; then
if [ "$MVNW_VERBOSE" = true ]; then
echo "Found wget ... using wget"
fi
wget "$jarUrl" -O "$wrapperJarPath"
elif command -v curl > /dev/null; then
if [ "$MVNW_VERBOSE" = true ]; then
echo "Found curl ... using curl"
fi
curl -o "$wrapperJarPath" "$jarUrl"
else
if [ "$MVNW_VERBOSE" = true ]; then
echo "Falling back to using Java to download"
fi
javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java"
if [ -e "$javaClass" ]; then
if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
if [ "$MVNW_VERBOSE" = true ]; then
echo " - Compiling MavenWrapperDownloader.java ..."
fi
# Compiling the Java class
("$JAVA_HOME/bin/javac" "$javaClass")
fi
if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
# Running the downloader
if [ "$MVNW_VERBOSE" = true ]; then
echo " - Running MavenWrapperDownloader.java ..."
fi
("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR")
fi
fi
fi
fi
##########################################################################################
# End of extension
##########################################################################################
export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}
if [ "$MVNW_VERBOSE" = true ]; then
echo $MAVEN_PROJECTBASEDIR
fi
MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS"
# For Cygwin, switch paths to Windows format before running java
if $cygwin; then
[ -n "$M2_HOME" ] &&
M2_HOME=`cygpath --path --windows "$M2_HOME"`
[ -n "$JAVA_HOME" ] &&
JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
[ -n "$CLASSPATH" ] &&
CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
[ -n "$MAVEN_PROJECTBASEDIR" ] &&
MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"`
fi
WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
exec "$JAVACMD" \
$MAVEN_OPTS \
-classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \
"-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \
${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@"
================================================
FILE: examples/dropwizard/mvnw.cmd
================================================
@REM ----------------------------------------------------------------------------
@REM Licensed to the Apache Software Foundation (ASF) under one
@REM or more contributor license agreements. See the NOTICE file
@REM distributed with this work for additional information
@REM regarding copyright ownership. The ASF licenses this file
@REM to you under the Apache License, Version 2.0 (the
@REM "License"); you may not use this file except in compliance
@REM with the License. You may obtain a copy of the License at
@REM
@REM http://www.apache.org/licenses/LICENSE-2.0
@REM
@REM Unless required by applicable law or agreed to in writing,
@REM software distributed under the License is distributed on an
@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@REM KIND, either express or implied. See the License for the
@REM specific language governing permissions and limitations
@REM under the License.
@REM ----------------------------------------------------------------------------
@REM ----------------------------------------------------------------------------
@REM Maven2 Start Up Batch script
@REM
@REM Required ENV vars:
@REM JAVA_HOME - location of a JDK home dir
@REM
@REM Optional ENV vars
@REM M2_HOME - location of maven2's installed home dir
@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands
@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a key stroke before ending
@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven
@REM e.g. to debug Maven itself, use
@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files
@REM ----------------------------------------------------------------------------
@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'
@echo off
@REM set title of command window
title %0
@REM enable echoing my setting MAVEN_BATCH_ECHO to 'on'
@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO%
@REM set %HOME% to equivalent of $HOME
if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%")
@REM Execute a user defined script before this one
if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre
@REM check for pre script, once with legacy .bat ending and once with .cmd ending
if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat"
if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd"
:skipRcPre
@setlocal
set ERROR_CODE=0
@REM To isolate internal variables from possible post scripts, we use another setlocal
@setlocal
@REM ==== START VALIDATION ====
if not "%JAVA_HOME%" == "" goto OkJHome
echo.
echo Error: JAVA_HOME not found in your environment. >&2
echo Please set the JAVA_HOME variable in your environment to match the >&2
echo location of your Java installation. >&2
echo.
goto error
:OkJHome
if exist "%JAVA_HOME%\bin\java.exe" goto init
echo.
echo Error: JAVA_HOME is set to an invalid directory. >&2
echo JAVA_HOME = "%JAVA_HOME%" >&2
echo Please set the JAVA_HOME variable in your environment to match the >&2
echo location of your Java installation. >&2
echo.
goto error
@REM ==== END VALIDATION ====
:init
@REM Find the project base dir, i.e. the directory that contains the folder ".mvn".
@REM Fallback to current working directory if not found.
set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%
IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir
set EXEC_DIR=%CD%
set WDIR=%EXEC_DIR%
:findBaseDir
IF EXIST "%WDIR%"\.mvn goto baseDirFound
cd ..
IF "%WDIR%"=="%CD%" goto baseDirNotFound
set WDIR=%CD%
goto findBaseDir
:baseDirFound
set MAVEN_PROJECTBASEDIR=%WDIR%
cd "%EXEC_DIR%"
goto endDetectBaseDir
:baseDirNotFound
set MAVEN_PROJECTBASEDIR=%EXEC_DIR%
cd "%EXEC_DIR%"
:endDetectBaseDir
IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig
@setlocal EnableExtensions EnableDelayedExpansion
for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a
@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%
:endReadAdditionalConfig
SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar"
set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.4.2/maven-wrapper-0.4.2.jar"
FOR /F "tokens=1,2 delims==" %%A IN (%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties) DO (
IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B
)
@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
@REM This allows using the maven wrapper in projects that prohibit checking in binary data.
if exist %WRAPPER_JAR% (
echo Found %WRAPPER_JAR%
) else (
echo Couldn't find %WRAPPER_JAR%, downloading it ...
echo Downloading from: %DOWNLOAD_URL%
powershell -Command "(New-Object Net.WebClient).DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"
echo Finished downloading %WRAPPER_JAR%
)
@REM End of extension
%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %*
if ERRORLEVEL 1 goto error
goto end
:error
set ERROR_CODE=1
:end
@endlocal & set ERROR_CODE=%ERROR_CODE%
if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost
@REM check for post script, once with legacy .bat ending and once with .cmd ending
if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat"
if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd"
:skipRcPost
@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'
if "%MAVEN_BATCH_PAUSE%" == "on" pause
if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE%
exit /B %ERROR_CODE%
================================================
FILE: examples/dropwizard/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>example</groupId>
<artifactId>dropwizard-jib-example</artifactId>
<version>1</version>
<packaging>jar</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<!-- for exec-maven-plugin -->
<mainClass>example.JibExampleApplication</mainClass>
<dropwizard.version>1.3.16</dropwizard.version>
<dropwizard.server.config>dropwizard.yml</dropwizard.server.config>
<dropwizard-template-config.version>1.5.0</dropwizard-template-config.version>
<jib.container.appRoot>/app</jib.container.appRoot>
<jib-maven-plugin.version>3.5.1</jib-maven-plugin.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>io.dropwizard</groupId>
<artifactId>dropwizard-bom</artifactId>
<version>${dropwizard.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>io.dropwizard</groupId>
<artifactId>dropwizard-core</artifactId>
</dependency>
<dependency>
<groupId>de.thomaskrille</groupId>
<artifactId>dropwizard-template-config</artifactId>
<version>${dropwizard-template-config.version}</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>jib-maven-plugin</artifactId>
<version>${jib-maven-plugin.version}</version>
<configuration>
<container>
<args>
<arg>server</arg>
<arg>${jib.container.appRoot}/resources/${dropwizard.server.config}</arg>
</args>
<ports>
<port>8080</port>
</ports>
<!-- good defaults intended for Java 8 (>= 8u191) containers -->
<jvmFlags>
<jvmFlag>-server</jvmFlag>
<jvmFlag>-Djava.awt.headless=true</jvmFlag>
<jvmFlag>-XX:InitialRAMFraction=2</jvmFlag>
<jvmFlag>-XX:MinRAMFraction=2</jvmFlag>
<jvmFlag>-XX:MaxRAMFraction=2</jvmFlag>
<jvmFlag>-XX:+UseG1GC</jvmFlag>
<jvmFlag>-XX:MaxGCPauseMillis=100</jvmFlag>
<jvmFlag>-XX:+UseStringDeduplication</jvmFlag>
</jvmFlags>
</container>
</configuration>
<executions>
<execution>
<id>dockerBuild</id>
<goals>
<goal>dockerBuild</goal>
</goals>
<phase>package</phase>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.6.0</version>
<configuration>
<mainClass>${mainClass}</mainClass>
<arguments>
<argument>server</argument>
<argument>${project.build.sourceDirectory}/../resources/${dropwizard.server.config}</argument>
</arguments>
</configuration>
</plugin>
</plugins>
</build>
</project>
================================================
FILE: examples/dropwizard/src/main/java/example/JibExampleApplication.java
================================================
/*
* Copyright 2018 Google LLC.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package example;
import de.thomaskrille.dropwizard_template_config.TemplateConfigBundle;
import io.dropwizard.Application;
import io.dropwizard.setup.Bootstrap;
import io.dropwizard.setup.Environment;
import example.health.TemplateHealthCheck;
import example.resources.HelloWorldResource;
/**
* <a href="https://www.dropwizard.io/1.3.5/docs/manual/index.html">
* Refer Dropwizard User Manual</a>
*/
public class JibExampleApplication extends Application<JibExampleConfiguration> {
public static void main(final String[] args) throws Exception {
new JibExampleApplication().run(args);
}
@Override
public String getName() {
return "Dropwizard Jib Example";
}
@Override
public void initialize(final Bootstrap<JibExampleConfiguration> bootstrap) {
// Enable FreeMarker config templates
bootstrap.addBundle(new TemplateConfigBundle());
}
@Override
public void run(final JibExampleConfiguration configuration, final Environment environment) {
final TemplateHealthCheck healthCheck =
new TemplateHealthCheck(configuration.getHelloConfiguration().getTemplate());
environment.healthChecks().register("template", healthCheck);
environment.jersey().register(HelloWorldResource.from(configuration));
}
}
================================================
FILE: examples/dropwizard/src/main/java/example/JibExampleConfiguration.java
================================================
/*
* Copyright 2018 Google LLC.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package example;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.dropwizard.Configuration;
import example.config.HelloWorldConfiguration;
import javax.validation.Valid;
import javax.validation.constraints.NotNull;
@SuppressWarnings("unused")
public class JibExampleConfiguration extends Configuration {
@Valid @NotNull @JsonProperty
private HelloWorldConfiguration hello;
@JsonProperty("hello")
public HelloWorldConfiguration getHelloConfiguration() {
return hello;
}
}
================================================
FILE: examples/dropwizard/src/main/java/example/api/Saying.java
================================================
/*
* Copyright 2018 Google LLC.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package example.api;
import com.fasterxml.jackson.annotation.JsonProperty;
public class Saying {
private long id;
private String content;
public Saying() {
// Jackson deserialization
}
public Saying(long id, String content) {
this.id = id;
this.content = content;
}
@JsonProperty
public long getId() {
return id;
}
@JsonProperty
public String getContent() {
return content;
}
}
================================================
FILE: examples/dropwizard/src/main/java/example/config/HelloWorldConfiguration.java
================================================
/*
* Copyright 2018 Google LLC.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package example.config;
import io.dropwizard.Configuration;
import org.hibernate.validator.constraints.NotEmpty;
import com.fasterxml.jackson.annotation.JsonProperty;
@SuppressWarnings("unused")
public class HelloWorldConfiguration extends Configuration {
@NotEmpty private String template;
@NotEmpty private String defaultName = "Stranger";
@JsonProperty
public String getTemplate() {
return template;
}
@JsonProperty
public String getDefaultName() {
return defaultName;
}
}
================================================
FILE: examples/dropwizard/src/main/java/example/health/TemplateHealthCheck.java
================================================
/*
* Copyright 2018 Google LLC.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package example.health;
import com.codahale.metrics.health.HealthCheck;
public class TemplateHealthCheck extends HealthCheck {
private final String template;
public TemplateHealthCheck(String template) {
this.template = template;
}
@Override
protected Result check() throws Exception {
final String saying = String.format(template, "TEST");
if (!saying.contains("TEST")) {
return Result.unhealthy("template doesn't include a name");
}
return Result.healthy();
}
}
================================================
FILE: examples/dropwizard/src/main/java/example/resources/HelloWorldResource.java
================================================
/*
* Copyright 2018 Google LLC.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package example.resources;
import com.codahale.metrics.annotation.Timed;
import java.util.Optional;
import java.util.concurrent.atomic.AtomicLong;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
import example.JibExampleConfiguration;
import example.api.Saying;
import example.config.HelloWorldConfiguration;
@Path("/")
@Produces(MediaType.APPLICATION_JSON)
public class HelloWorldResource {
private final String template;
private final String defaultName;
private final AtomicLong counter;
public HelloWorldResource(String template, String defaultName) {
this.template = template;
this.defaultName = defaultName;
this.counter = new AtomicLong();
}
public static HelloWorldResource from(JibExampleConfiguration conf) {
final HelloWorldConfiguration helloConfiguration = conf.getHelloConfiguration();
return new HelloWorldResource(
helloConfiguration.getTemplate(), helloConfiguration.getDefaultName());
}
@GET
@Timed
public Saying sayHello(@QueryParam("name") Optional<String> name) {
final String value = String.format(template, name.orElse(defaultName));
return new Saying(counter.incrementAndGet(), value);
}
}
================================================
FILE: examples/dropwizard/src/main/resources/banner.txt
================================================
================================================================================
Dropwizard Jib Example
================================================================================
================================================
FILE: examples/dropwizard/src/main/resources/dropwizard.yml
================================================
<#-- FreeMarker Enabled - https://github.com/tkrille/dropwizard-template-config -->
hello:
template: ${DW_TEMPLATE!'Hello, %s!'}
defaultName: ${DW_DEFAULT_NAME!'Stranger'}
server:
type: simple
applicationContextPath: /
adminContextPath: /admin
connector:
type: http
port: 8080
logging:
level: ${LOG_LEVEL!'INFO'}
loggers:
<#-- Log level for a specific package -->
example: DEBUG
================================================
FILE: examples/helloworld/README.md
================================================
Builds a container image that outputs `Hello World` when run.
To build the image:
1. In `pom.xml` or `build.gradle`, replace `REPLACE-WITH-YOUR-GCP-PROJECT` with your GCP project.
1. Run `mvn compile jib:build` or `./gradlew jib`.
================================================
FILE: examples/helloworld/build.gradle
================================================
plugins {
id 'java'
id 'com.google.cloud.tools.jib' version '3.5.3'
}
sourceCompatibility = 1.8
targetCompatibility = 1.8
repositories {
mavenCentral()
}
dependencies {
implementation 'com.google.guava:guava:23.6-jre'
}
jib.to.image = 'gcr.io/REPLACE-WITH-YOUR-GCP-PROJECT/image-built-with-jib'
================================================
FILE: examples/helloworld/gradle/wrapper/gradle-wrapper.properties
================================================
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-5.1-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
================================================
FILE: examples/helloworld/gradlew
================================================
#!/usr/bin/env sh
##############################################################################
##
## Gradle start up script for UN*X
##
##############################################################################
# Attempt to set APP_HOME
# Resolve links: $0 may be a link
PRG="$0"
# Need this for relative symlinks.
while [ -h "$PRG" ] ; do
ls=`ls -ld "$PRG"`
link=`expr "$ls" : '.*-> \(.*\)$'`
if expr "$link" : '/.*' > /dev/null; then
PRG="$link"
else
PRG=`dirname "$PRG"`"/$link"
fi
done
SAVED="`pwd`"
cd "`dirname \"$PRG\"`/" >/dev/null
APP_HOME="`pwd -P`"
cd "$SAVED" >/dev/null
APP_NAME="Gradle"
APP_BASE_NAME=`basename "$0"`
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS='"-Xmx64m"'
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD="maximum"
warn () {
echo "$*"
}
die () {
echo
echo "$*"
echo
exit 1
}
# OS specific support (must be 'true' or 'false').
cygwin=false
msys=false
darwin=false
nonstop=false
case "`uname`" in
CYGWIN* )
cygwin=true
;;
Darwin* )
darwin=true
;;
MINGW* )
msys=true
;;
NONSTOP* )
nonstop=true
;;
esac
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
# Determine the Java command to use to start the JVM.
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD="$JAVA_HOME/jre/sh/java"
else
JAVACMD="$JAVA_HOME/bin/java"
fi
if [ ! -x "$JAVACMD" ] ; then
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
else
JAVACMD="java"
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
# Increase the maximum file descriptors if we can.
if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
MAX_FD_LIMIT=`ulimit -H -n`
if [ $? -eq 0 ] ; then
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
MAX_FD="$MAX_FD_LIMIT"
fi
ulimit -n $MAX_FD
if [ $? -ne 0 ] ; then
warn "Could not set maximum file descriptor limit: $MAX_FD"
fi
else
warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
fi
fi
# For Darwin, add options to specify how the application appears in the dock
if $darwin; then
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
fi
# For Cygwin, switch paths to Windows format before running java
if $cygwin ; then
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
JAVACMD=`cygpath --unix "$JAVACMD"`
# We build the pattern for arguments to be converted via cygpath
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
SEP=""
for dir in $ROOTDIRSRAW ; do
ROOTDIRS="$ROOTDIRS$SEP$dir"
SEP="|"
done
OURCYGPATTERN="(^($ROOTDIRS))"
# Add a user-defined pattern to the cygpath arguments
if [ "$GRADLE_CYGPATTERN" != "" ] ; then
OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
fi
# Now convert the arguments - kludge to limit ourselves to /bin/sh
i=0
for arg in "$@" ; do
CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
else
eval `echo args$i`="\"$arg\""
fi
i=$((i+1))
done
case $i in
(0) set -- ;;
(1) set -- "$args0" ;;
(2) set -- "$args0" "$args1" ;;
(3) set -- "$args0" "$args1" "$args2" ;;
(4) set -- "$args0" "$args1" "$args2" "$args3" ;;
(5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
(6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
(7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
(8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
(9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
esac
fi
# Escape application args
save () {
for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
echo " "
}
APP_ARGS=$(save "$@")
# Collect all arguments for the java command, following the shell quoting and substitution rules
eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
cd "$(dirname "$0")"
fi
exec "$JAVACMD" "$@"
================================================
FILE: examples/helloworld/gradlew.bat
================================================
@if "%DEBUG%" == "" @echo off
@rem ##########################################################################
@rem
@rem Gradle startup script for Windows
@rem
@rem ##########################################################################
@rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocal
set DIRNAME=%~dp0
if "%DIRNAME%" == "" set DIRNAME=.
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS="-Xmx64m"
@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome
set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if "%ERRORLEVEL%" == "0" goto init
echo.
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
:findJavaFromJavaHome
set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
if exist "%JAVA_EXE%" goto init
echo.
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
:init
@rem Get command-line arguments, handling Windows variants
if not "%OS%" == "Windows_NT" goto win9xME_args
:win9xME_args
@rem Slurp the command line arguments.
set CMD_LINE_ARGS=
set _SKIP=2
:win9xME_args_slurp
if "x%~1" == "x" goto execute
set CMD_LINE_ARGS=%*
:execute
@rem Setup the command line
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
@rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
:end
@rem End local scope for the variables with windows NT shell
if "%ERRORLEVEL%"=="0" goto mainEnd
:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
exit /b 1
:mainEnd
if "%OS%"=="Windows_NT" endlocal
:omega
================================================
FILE: examples/helloworld/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>example</groupId>
<artifactId>helloworld</artifactId>
<version>1</version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<jib-maven-plugin.version>3.5.1</jib-maven-plugin.version>
<maven-compiler-plugin.version>3.8.0</maven-compiler-plugin.version>
</properties>
<dependencies>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>32.0.0-jre</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven-compiler-plugin.version}</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<!-- Jib -->
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>jib-maven-plugin</artifactId>
<version>${jib-maven-plugin.version}</version>
<configuration>
<to>
<image>gcr.io/REPLACE-WITH-YOUR-GCP-PROJECT/image-built-with-jib</image>
</to>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
================================================
FILE: examples/helloworld/settings.gradle
================================================
================================================
FILE: examples/helloworld/src/main/java/example/HelloWorld.java
================================================
/*
* Copyright 2018 Google LLC.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package example;
import com.google.common.io.CharStreams;
import java.io.InputStreamReader;
import java.io.IOException;
import java.io.Reader;
import java.net.URISyntaxException;
import java.nio.charset.StandardCharsets;
public class HelloWorld {
public static void main(String[] args) throws URISyntaxException, IOException {
try (Reader reader = new InputStreamReader(
HelloWorld.class.getResourceAsStream("/world"), StandardCharsets.UTF_8)) {
String world = CharStreams.toString(reader);
System.out.println("Hello " + world);
}
}
}
================================================
FILE: examples/helloworld/src/main/resources/world
================================================
world
================================================
FILE: examples/java-agent/README.md
================================================
This SparkJava-based example builds a container image that includes the [Stackdriver Debugger Java Agent](https://cloud.google.com/debugger/docs/).
This project assumes the resulting image will be run inside Google Cloud Platform.
To build the image:
1. Replace `REPLACE-WITH-YOUR-GCP-PROJECT` with your GCP project in `pom.xml` or `build.gradle`.
1. Run `mvn package` or `./gradlew` to build the image.
SparkJava listens on port 4567 by default.
## Build and run on Google Cloud
[](https://deploy.cloud.run?git_repo=https://github.com/GoogleContainerTools/jib.git&dir=examples/java-agent)
================================================
FILE: examples/java-agent/build.gradle
================================================
plugins {
id 'java'
id 'com.google.cloud.tools.jib' version '3.5.3'
id 'de.undercouch.download' version '4.0.0'
id 'com.gorylenko.gradle-git-properties' version '2.2.0'
}
ext {
// where to download the Stackdriver Debugger agent https://cloud.google.com/debugger/docs/setup/java
stackdriverDebuggerAgentUrl = 'https://storage.googleapis.com/cloud-debugger/compute-java/debian-wheezy/cdbg_java_agent_gce.tar.gz'
// where to place the Cloud Debugger agent in the container
stackdriverDebuggerLocation = '/opt/cdbg'
// location for jib extras, including the Java agent
jibExtraDirectory = "${buildDir}/jib-agents"
}
sourceCompatibility = 1.8
targetCompatibility = 1.8
repositories {
mavenCentral()
}
dependencies {
implementation 'com.sparkjava:spark-core:2.9.1'
implementation 'org.slf4j:slf4j-simple:1.7.28'
}
// Download and extract the Cloud Debugger Java Agent
task downloadAgent(type: Download) {
src stackdriverDebuggerAgentUrl
dest "${buildDir}/cdbg_java_agent_gce.tar.gz"
}
task extractAgent(dependsOn: downloadAgent, type: Copy) {
from tarTree(downloadAgent.dest)
into "${jibExtraDirectory}/${stackdriverDebuggerLocation}"
}
jib {
to {
image = 'gcr.io/REPLACE-WITH-YOUR-GCP-PROJECT/image-built-with-jib'
}
extraDirectories.paths = [file(jibExtraDirectory)]
container {
ports = ['4567']
jvmFlags = [
'-agentpath:' + stackdriverDebuggerLocation + '/cdbg_java_agent.so=--logtostderr=1',
'-Dcom.google.cdbg.module=' + project.name,
'-Dcom.google.cdbg.version=' + version]
}
}
tasks.jib.dependsOn extractAgent
tasks.jibDockerBuild.dependsOn extractAgent
tasks.jibBuildTar.dependsOn extractAgent
defaultTasks 'jib'
================================================
FILE: examples/java-agent/gradle/wrapper/gradle-wrapper.properties
================================================
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-5.1-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
================================================
FILE: examples/java-agent/gradle.properties
================================================
version = 0.0.1-SNAPSHOT
================================================
FILE: examples/java-agent/gradlew
================================================
#!/usr/bin/env sh
##############################################################################
##
## Gradle start up script for UN*X
##
##############################################################################
# Attempt to set APP_HOME
# Resolve links: $0 may be a link
PRG="$0"
# Need this for relative symlinks.
while [ -h "$PRG" ] ; do
ls=`ls -ld "$PRG"`
link=`expr "$ls" : '.*-> \(.*\)$'`
if expr "$link" : '/.*' > /dev/null; then
PRG="$link"
else
PRG=`dirname "$PRG"`"/$link"
fi
done
SAVED="`pwd`"
cd "`dirname \"$PRG\"`/" >/dev/null
APP_HOME="`pwd -P`"
cd "$SAVED" >/dev/null
APP_NAME="Gradle"
APP_BASE_NAME=`basename "$0"`
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS='"-Xmx64m"'
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD="maximum"
warn () {
echo "$*"
}
die () {
echo
echo "$*"
echo
exit 1
}
# OS specific support (must be 'true' or 'false').
cygwin=false
msys=false
darwin=false
nonstop=false
case "`uname`" in
CYGWIN* )
cygwin=true
;;
Darwin* )
darwin=true
;;
MINGW* )
msys=true
;;
NONSTOP* )
nonstop=true
;;
esac
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
# Determine the Java command to use to start the JVM.
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD="$JAVA_HOME/jre/sh/java"
else
JAVACMD="$JAVA_HOME/bin/java"
fi
if [ ! -x "$JAVACMD" ] ; then
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
else
JAVACMD="java"
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
# Increase the maximum fi
gitextract_7d1c7m1x/ ├── .allstar/ │ └── binary_artifacts.yaml ├── .gitattributes ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ └── issue_report.md │ ├── PULL_REQUEST_TEMPLATE.md │ ├── RELEASE_TEMPLATES/ │ │ ├── cli_release_checklist.md │ │ ├── core_release_checklist.md │ │ └── plugin_release_checklist.md │ ├── dependabot.yml │ └── workflows/ │ ├── gradle-wrapper-validation.yml │ ├── jib-cli-release.yml │ ├── prepare-release.yml │ ├── sonar.yml │ └── unit-tests.yml ├── .gitignore ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── SECURITY.md ├── STYLE_GUIDE.md ├── build.gradle ├── config/ │ └── checkstyle/ │ ├── checkstyle-suppressions.xml │ └── copyright-java.header ├── docs/ │ ├── configure-gcp-credentials.md │ ├── default_base_image.md │ ├── faq.md │ ├── google-cloud-build.md │ ├── privacy.md │ └── self_sign_cert.md ├── examples/ │ ├── README.md │ ├── dropwizard/ │ │ ├── .mvn/ │ │ │ └── wrapper/ │ │ │ ├── MavenWrapperDownloader.java │ │ │ └── maven-wrapper.properties │ │ ├── README.md │ │ ├── mvnw │ │ ├── mvnw.cmd │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── example/ │ │ │ ├── JibExampleApplication.java │ │ │ ├── JibExampleConfiguration.java │ │ │ ├── api/ │ │ │ │ └── Saying.java │ │ │ ├── config/ │ │ │ │ └── HelloWorldConfiguration.java │ │ │ ├── health/ │ │ │ │ └── TemplateHealthCheck.java │ │ │ └── resources/ │ │ │ └── HelloWorldResource.java │ │ └── resources/ │ │ ├── banner.txt │ │ └── dropwizard.yml │ ├── helloworld/ │ │ ├── README.md │ │ ├── build.gradle │ │ ├── gradle/ │ │ │ └── wrapper/ │ │ │ ├── gradle-wrapper.jar │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── pom.xml │ │ ├── settings.gradle │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── example/ │ │ │ └── HelloWorld.java │ │ └── resources/ │ │ └── world │ ├── java-agent/ │ │ ├── README.md │ │ ├── build.gradle │ │ ├── gradle/ │ │ │ └── wrapper/ │ │ │ ├── gradle-wrapper.jar │ │ │ └── gradle-wrapper.properties │ │ ├── gradle.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── pom.xml │ │ ├── settings.gradle │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── example/ │ │ │ └── HelloWorld.java │ │ └── resources/ │ │ └── world │ ├── ktor/ │ │ ├── README.md │ │ ├── build.gradle.kts │ │ ├── gradle/ │ │ │ └── wrapper/ │ │ │ ├── gradle-wrapper.jar │ │ │ └── gradle-wrapper.properties │ │ ├── gradle.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle.kts │ │ └── src/ │ │ └── main/ │ │ ├── kotlin/ │ │ │ └── example/ │ │ │ └── ktor/ │ │ │ └── App.kt │ │ └── resources/ │ │ ├── application.conf │ │ └── logback.xml │ ├── micronaut/ │ │ ├── README.md │ │ ├── build.gradle │ │ ├── gradle/ │ │ │ └── wrapper/ │ │ │ ├── gradle-wrapper.jar │ │ │ └── gradle-wrapper.properties │ │ ├── gradle.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle │ │ └── src/ │ │ ├── main/ │ │ │ ├── groovy/ │ │ │ │ └── example/ │ │ │ │ └── micronaut/ │ │ │ │ ├── Application.groovy │ │ │ │ └── HelloController.groovy │ │ │ └── resources/ │ │ │ ├── application.yml │ │ │ └── logback.xml │ │ └── test/ │ │ └── groovy/ │ │ └── example/ │ │ └── micronaut/ │ │ └── HelloControllerSpec.groovy │ ├── multi-module/ │ │ ├── .mvn/ │ │ │ └── wrapper/ │ │ │ ├── MavenWrapperDownloader.java │ │ │ └── maven-wrapper.properties │ │ ├── README.md │ │ ├── build.gradle │ │ ├── gradle/ │ │ │ └── wrapper/ │ │ │ ├── gradle-wrapper.jar │ │ │ └── gradle-wrapper.properties │ │ ├── gradle-build.sh │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── hello-service/ │ │ │ ├── build.gradle │ │ │ ├── gradle.properties │ │ │ ├── pom.xml │ │ │ └── src/ │ │ │ └── main/ │ │ │ └── java/ │ │ │ └── hello/ │ │ │ ├── Application.java │ │ │ └── HelloController.java │ │ ├── kubernetes.yaml │ │ ├── maven-build.sh │ │ ├── mvnw │ │ ├── mvnw.cmd │ │ ├── name-service/ │ │ │ ├── build.gradle │ │ │ ├── gradle.properties │ │ │ ├── pom.xml │ │ │ └── src/ │ │ │ └── main/ │ │ │ └── java/ │ │ │ └── name/ │ │ │ ├── Application.java │ │ │ └── NameController.java │ │ ├── pom.xml │ │ ├── settings.gradle │ │ └── shared-library/ │ │ ├── build.gradle │ │ ├── gradle.properties │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ └── java/ │ │ └── common/ │ │ └── SharedUtils.java │ ├── spring-boot/ │ │ ├── .mvn/ │ │ │ └── wrapper/ │ │ │ ├── MavenWrapperDownloader.java │ │ │ └── maven-wrapper.properties │ │ ├── README.md │ │ ├── build.gradle │ │ ├── gradle/ │ │ │ └── wrapper/ │ │ │ ├── gradle-wrapper.jar │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── mvnw │ │ ├── mvnw.cmd │ │ ├── pom.xml │ │ ├── settings.gradle │ │ └── src/ │ │ └── main/ │ │ └── java/ │ │ └── hello/ │ │ ├── Application.java │ │ └── HelloController.java │ └── vertx/ │ ├── README.md │ ├── build.gradle │ ├── gradle/ │ │ └── wrapper/ │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties │ ├── gradlew │ ├── gradlew.bat │ ├── settings.gradle │ └── src/ │ └── main/ │ ├── java/ │ │ └── example/ │ │ └── vertx/ │ │ └── MainVerticle.java │ └── resources/ │ └── logback.xml ├── gradle/ │ └── wrapper/ │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradle.properties ├── gradlew ├── gradlew.bat ├── jib-build-plan/ │ ├── CHANGELOG.md │ ├── build.gradle │ ├── gradle.properties │ ├── kokoro/ │ │ └── release_build.sh │ └── src/ │ ├── main/ │ │ └── java/ │ │ └── com/ │ │ └── google/ │ │ └── cloud/ │ │ └── tools/ │ │ └── jib/ │ │ ├── api/ │ │ │ └── buildplan/ │ │ │ ├── AbsoluteUnixPath.java │ │ │ ├── ContainerBuildPlan.java │ │ │ ├── FileEntriesLayer.java │ │ │ ├── FileEntry.java │ │ │ ├── FilePermissions.java │ │ │ ├── FilePermissionsProvider.java │ │ │ ├── ImageFormat.java │ │ │ ├── LayerObject.java │ │ │ ├── ModificationTimeProvider.java │ │ │ ├── OwnershipProvider.java │ │ │ ├── Platform.java │ │ │ ├── Port.java │ │ │ └── RelativeUnixPath.java │ │ └── buildplan/ │ │ └── UnixPathParser.java │ └── test/ │ ├── java/ │ │ └── com/ │ │ └── google/ │ │ └── cloud/ │ │ └── tools/ │ │ └── jib/ │ │ ├── api/ │ │ │ └── buildplan/ │ │ │ ├── AbsoluteUnixPathTest.java │ │ │ ├── ContainerBuildPlanTest.java │ │ │ ├── FileEntriesLayerTest.java │ │ │ ├── FileEntryTest.java │ │ │ ├── FilePermissionsTest.java │ │ │ ├── PortTest.java │ │ │ └── RelativeUnixPathTest.java │ │ └── buildplan/ │ │ └── UnixPathParserTest.java │ └── resources/ │ └── core/ │ ├── fileA │ └── layer/ │ ├── a/ │ │ └── b/ │ │ └── bar │ ├── c/ │ │ └── cat │ └── foo ├── jib-cli/ │ ├── CHANGELOG.md │ ├── README.md │ ├── build.gradle │ ├── gradle.properties │ ├── scripts/ │ │ └── update_gcs_latest.sh │ └── src/ │ ├── integration-test/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── google/ │ │ │ └── cloud/ │ │ │ └── tools/ │ │ │ └── jib/ │ │ │ └── cli/ │ │ │ ├── JarCommandTest.java │ │ │ ├── TestProject.java │ │ │ └── WarCommandTest.java │ │ └── resources/ │ │ ├── jarTest/ │ │ │ ├── spring-boot/ │ │ │ │ ├── build-layered.gradle │ │ │ │ ├── build.gradle │ │ │ │ ├── gradle/ │ │ │ │ │ └── wrapper/ │ │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ │ └── gradle-wrapper.properties │ │ │ │ ├── gradlew │ │ │ │ ├── gradlew.bat │ │ │ │ ├── settings-layered.gradle │ │ │ │ ├── settings.gradle │ │ │ │ └── src/ │ │ │ │ └── main/ │ │ │ │ └── java/ │ │ │ │ └── hello/ │ │ │ │ ├── Application.java │ │ │ │ └── HelloController.java │ │ │ └── standard/ │ │ │ ├── HelloWorld.java │ │ │ ├── dep/ │ │ │ │ └── A.java │ │ │ └── dep2/ │ │ │ └── B.java │ │ └── warTest/ │ │ ├── build.gradle │ │ ├── gradle/ │ │ │ └── wrapper/ │ │ │ ├── gradle-wrapper.jar │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle │ │ └── src/ │ │ ├── extra_js/ │ │ │ └── bogus.js │ │ ├── extra_static/ │ │ │ └── bogus.html │ │ └── main/ │ │ ├── java/ │ │ │ └── example/ │ │ │ └── HelloWorld.java │ │ ├── resources/ │ │ │ └── world │ │ └── webapp/ │ │ ├── META-INF/ │ │ │ └── MANIFEST.MF │ │ ├── WEB-INF/ │ │ │ └── web.xml │ │ └── index.html │ ├── java-templates/ │ │ └── com/ │ │ └── google/ │ │ └── cloud/ │ │ └── tools/ │ │ └── jib/ │ │ └── cli/ │ │ └── VersionInfo.java.template │ ├── main/ │ │ └── java/ │ │ └── com/ │ │ └── google/ │ │ └── cloud/ │ │ └── tools/ │ │ └── jib/ │ │ └── cli/ │ │ ├── ArtifactLayers.java │ │ ├── ArtifactProcessor.java │ │ ├── ArtifactProcessors.java │ │ ├── Build.java │ │ ├── CacheDirectories.java │ │ ├── CommonCliOptions.java │ │ ├── CommonContainerConfigCliOptions.java │ │ ├── ContainerBuilders.java │ │ ├── Containerizers.java │ │ ├── Credentials.java │ │ ├── Instants.java │ │ ├── Jar.java │ │ ├── JibCli.java │ │ ├── ShortErrorMessageHandler.java │ │ ├── War.java │ │ ├── buildfile/ │ │ │ ├── ArchiveLayerSpec.java │ │ │ ├── BaseImageSpec.java │ │ │ ├── BuildFileSpec.java │ │ │ ├── BuildFiles.java │ │ │ ├── CopySpec.java │ │ │ ├── FileLayerSpec.java │ │ │ ├── FilePropertiesSpec.java │ │ │ ├── FilePropertiesStack.java │ │ │ ├── LayerSpec.java │ │ │ ├── Layers.java │ │ │ ├── LayersSpec.java │ │ │ ├── PlatformSpec.java │ │ │ └── Validator.java │ │ ├── jar/ │ │ │ ├── JarFiles.java │ │ │ ├── JarLayers.java │ │ │ ├── ProcessingMode.java │ │ │ ├── SpringBootExplodedProcessor.java │ │ │ ├── SpringBootPackagedProcessor.java │ │ │ ├── StandardExplodedProcessor.java │ │ │ └── StandardPackagedProcessor.java │ │ ├── logging/ │ │ │ ├── CliLogger.java │ │ │ ├── ConsoleOutput.java │ │ │ ├── HttpTraceLevel.java │ │ │ └── Verbosity.java │ │ └── war/ │ │ ├── StandardWarExplodedProcessor.java │ │ └── WarFiles.java │ └── test/ │ ├── java/ │ │ └── com/ │ │ └── google/ │ │ └── cloud/ │ │ └── tools/ │ │ └── jib/ │ │ ├── ArtifactProcessorsTest.java │ │ ├── api/ │ │ │ ├── ContainerizerTestProxy.java │ │ │ ├── HttpRequestTester.java │ │ │ └── JibContainerBuilderTestHelper.java │ │ └── cli/ │ │ ├── BuildTest.java │ │ ├── CacheDirectoriesTest.java │ │ ├── ContainerBuildersTest.java │ │ ├── ContainerizersTest.java │ │ ├── CredentialsTest.java │ │ ├── InstantsTest.java │ │ ├── JarTest.java │ │ ├── JibCliTest.java │ │ ├── WarTest.java │ │ ├── buildfile/ │ │ │ ├── ArchiveLayerSpecTest.java │ │ │ ├── BaseImageSpecTest.java │ │ │ ├── BuildFileSpecTest.java │ │ │ ├── BuildFilesTest.java │ │ │ ├── CopySpecTest.java │ │ │ ├── FileLayerSpecTest.java │ │ │ ├── FilePropertiesSpecTest.java │ │ │ ├── FilePropertiesStackTest.java │ │ │ ├── LayerSpecTest.java │ │ │ ├── LayersSpecTest.java │ │ │ ├── LayersTest.java │ │ │ ├── PlatformSpecTest.java │ │ │ └── ValidatorTest.java │ │ ├── jar/ │ │ │ ├── JarFilesTest.java │ │ │ ├── SpringBootExplodedProcessorTest.java │ │ │ ├── SpringBootPackagedProcessorTest.java │ │ │ ├── StandardExplodedProcessorTest.java │ │ │ └── StandardPackagedProcessorTest.java │ │ ├── logging/ │ │ │ └── CliLoggerTest.java │ │ └── war/ │ │ ├── StandardWarExplodedProcessorTest.java │ │ └── WarFilesTest.java │ └── resources/ │ ├── buildfiles/ │ │ ├── layers/ │ │ │ ├── archiveLayerTest/ │ │ │ │ └── layers.yaml │ │ │ ├── fileTest/ │ │ │ │ ├── default/ │ │ │ │ │ ├── layers.yaml │ │ │ │ │ ├── toDir.txt │ │ │ │ │ └── toFile.txt │ │ │ │ ├── failWithExcludes/ │ │ │ │ │ ├── layers.yaml │ │ │ │ │ └── toFile.txt │ │ │ │ └── failWithIncludes/ │ │ │ │ ├── layers.yaml │ │ │ │ └── toFile.txt │ │ │ ├── includesExcludesTest/ │ │ │ │ ├── layers.yaml │ │ │ │ └── project/ │ │ │ │ ├── excludedDir/ │ │ │ │ │ └── exclude.me │ │ │ │ ├── includedDir/ │ │ │ │ │ └── include.me │ │ │ │ └── wild.card │ │ │ ├── pathDoesNotExist/ │ │ │ │ └── layers.yaml │ │ │ ├── propertiesTest/ │ │ │ │ ├── dir/ │ │ │ │ │ └── file.txt │ │ │ │ └── layers.yaml │ │ │ └── writeToRoot/ │ │ │ ├── dir/ │ │ │ │ └── file.txt │ │ │ └── layers.yaml │ │ └── projects/ │ │ ├── allDefaults/ │ │ │ └── jib.yaml │ │ ├── allProperties/ │ │ │ ├── altYamls/ │ │ │ │ └── alt-jib.yaml │ │ │ ├── jib.yaml │ │ │ └── project/ │ │ │ └── script.sh │ │ └── templating/ │ │ ├── missingVar.yaml │ │ ├── multiLine.yaml │ │ └── valid.yaml │ ├── jar/ │ │ ├── java18.jar │ │ ├── spring-boot/ │ │ │ ├── springboot_layered.jar │ │ │ ├── springboot_layered_allEmptyLayers.jar │ │ │ ├── springboot_layered_singleEmptyLayer.jar │ │ │ ├── springboot_notLayered.jar │ │ │ └── springboot_sample.jar │ │ └── standard/ │ │ ├── dependency1 │ │ ├── dependency2 │ │ ├── dependency3-SNAPSHOT-1.jar │ │ ├── directory/ │ │ │ └── dependency4 │ │ ├── emptyStandardJar.jar │ │ ├── jarWithInvalidClass.jar │ │ ├── singleDepJar.jar │ │ ├── standardJarWithClassPath.jar │ │ ├── standardJarWithOnlyClasses.jar │ │ └── standardJarWithoutClassPath.jar │ └── war/ │ └── standard/ │ ├── allLayers/ │ │ ├── META-INF/ │ │ │ └── context.xml │ │ ├── Test.jsp │ │ └── WEB-INF/ │ │ ├── classes/ │ │ │ └── package/ │ │ │ └── test.properties │ │ ├── lib/ │ │ │ ├── dependency-1.0.0.jar │ │ │ └── dependencyX-1.0.0-SNAPSHOT.jar │ │ └── web.xml │ ├── noWebInfClasses/ │ │ ├── META-INF/ │ │ │ └── context.xml │ │ └── WEB-INF/ │ │ └── lib/ │ │ ├── dependency-1.0.0.jar │ │ └── dependencyX-1.0.0-SNAPSHOT.jar │ └── noWebInfLib/ │ └── META-INF/ │ └── context.xml ├── jib-core/ │ ├── CHANGELOG.md │ ├── README.md │ ├── build.gradle │ ├── examples/ │ │ ├── README.md │ │ └── build.gradle/ │ │ └── README.md │ ├── gradle.properties │ ├── kokoro/ │ │ └── release_build.sh │ └── src/ │ ├── integration-test/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── google/ │ │ │ └── cloud/ │ │ │ └── tools/ │ │ │ └── jib/ │ │ │ ├── Command.java │ │ │ ├── IntegrationTestingConfiguration.java │ │ │ ├── api/ │ │ │ │ ├── ContainerizerIntegrationTest.java │ │ │ │ ├── JibIntegrationTest.java │ │ │ │ ├── JibMultiPlatformIntegrationTest.java │ │ │ │ └── ReproducibleImageTest.java │ │ │ └── registry/ │ │ │ ├── BearerAuthenticationIntegrationTest.java │ │ │ ├── BlobCheckerIntegrationTest.java │ │ │ ├── BlobPullerIntegrationTest.java │ │ │ ├── BlobPusherIntegrationTest.java │ │ │ ├── LocalRegistry.java │ │ │ ├── ManifestCheckerIntegrationTest.java │ │ │ ├── ManifestPullerIntegrationTest.java │ │ │ ├── ManifestPusherIntegrationTest.java │ │ │ └── credentials/ │ │ │ └── DockerCredentialHelperIntegrationTest.java │ │ └── resources/ │ │ ├── core/ │ │ │ └── hello │ │ └── credentials.json │ ├── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── google/ │ │ │ └── cloud/ │ │ │ └── tools/ │ │ │ └── jib/ │ │ │ ├── ProjectInfo.java │ │ │ ├── api/ │ │ │ │ ├── CacheDirectoryCreationException.java │ │ │ │ ├── Containerizer.java │ │ │ │ ├── Credential.java │ │ │ │ ├── CredentialRetriever.java │ │ │ │ ├── DescriptorDigest.java │ │ │ │ ├── DockerClient.java │ │ │ │ ├── DockerDaemonImage.java │ │ │ │ ├── DockerInfoDetails.java │ │ │ │ ├── ImageDetails.java │ │ │ │ ├── ImageReference.java │ │ │ │ ├── InsecureRegistryException.java │ │ │ │ ├── InvalidImageReferenceException.java │ │ │ │ ├── JavaContainerBuilder.java │ │ │ │ ├── Jib.java │ │ │ │ ├── JibContainer.java │ │ │ │ ├── JibContainerBuilder.java │ │ │ │ ├── JibContainerDescription.java │ │ │ │ ├── JibEvent.java │ │ │ │ ├── LayerConfiguration.java │ │ │ │ ├── LayerEntry.java │ │ │ │ ├── LogEvent.java │ │ │ │ ├── MainClassFinder.java │ │ │ │ ├── Ports.java │ │ │ │ ├── RegistryAuthenticationFailedException.java │ │ │ │ ├── RegistryException.java │ │ │ │ ├── RegistryImage.java │ │ │ │ ├── RegistryUnauthorizedException.java │ │ │ │ └── TarImage.java │ │ │ ├── blob/ │ │ │ │ ├── Blob.java │ │ │ │ ├── BlobDescriptor.java │ │ │ │ ├── Blobs.java │ │ │ │ ├── FileBlob.java │ │ │ │ ├── InputStreamBlob.java │ │ │ │ ├── JsonBlob.java │ │ │ │ ├── StringBlob.java │ │ │ │ └── WritableContentsBlob.java │ │ │ ├── builder/ │ │ │ │ ├── ProgressEventDispatcher.java │ │ │ │ ├── Timer.java │ │ │ │ ├── TimerEventDispatcher.java │ │ │ │ └── steps/ │ │ │ │ ├── AuthenticatePushStep.java │ │ │ │ ├── BuildAndCacheApplicationLayerStep.java │ │ │ │ ├── BuildImageStep.java │ │ │ │ ├── BuildManifestListOrSingleManifestStep.java │ │ │ │ ├── BuildResult.java │ │ │ │ ├── CheckManifestStep.java │ │ │ │ ├── LoadDockerStep.java │ │ │ │ ├── LocalBaseImageSteps.java │ │ │ │ ├── ObtainBaseImageLayerStep.java │ │ │ │ ├── PlatformChecker.java │ │ │ │ ├── PreparedLayer.java │ │ │ │ ├── PullBaseImageStep.java │ │ │ │ ├── PushBlobStep.java │ │ │ │ ├── PushContainerConfigurationStep.java │ │ │ │ ├── PushImageStep.java │ │ │ │ ├── PushLayerStep.java │ │ │ │ ├── RegistryCredentialRetriever.java │ │ │ │ ├── StepsRunner.java │ │ │ │ ├── ThrottledProgressEventDispatcherWrapper.java │ │ │ │ └── WriteTarFileStep.java │ │ │ ├── cache/ │ │ │ │ ├── Cache.java │ │ │ │ ├── CacheCorruptedException.java │ │ │ │ ├── CacheStorageFiles.java │ │ │ │ ├── CacheStorageReader.java │ │ │ │ ├── CacheStorageWriter.java │ │ │ │ ├── CachedLayer.java │ │ │ │ ├── LayerEntriesSelector.java │ │ │ │ └── Retry.java │ │ │ ├── configuration/ │ │ │ │ ├── BuildContext.java │ │ │ │ ├── ContainerConfiguration.java │ │ │ │ ├── DockerHealthCheck.java │ │ │ │ └── ImageConfiguration.java │ │ │ ├── docker/ │ │ │ │ ├── CliDockerClient.java │ │ │ │ ├── DockerClientResolver.java │ │ │ │ └── json/ │ │ │ │ └── DockerManifestEntryTemplate.java │ │ │ ├── event/ │ │ │ │ ├── EventHandlers.java │ │ │ │ ├── Handler.java │ │ │ │ ├── events/ │ │ │ │ │ ├── ProgressEvent.java │ │ │ │ │ └── TimerEvent.java │ │ │ │ └── progress/ │ │ │ │ ├── Allocation.java │ │ │ │ ├── AllocationCompletionTracker.java │ │ │ │ ├── ProgressEventHandler.java │ │ │ │ └── ThrottledAccumulatingConsumer.java │ │ │ ├── filesystem/ │ │ │ │ ├── DirectoryWalker.java │ │ │ │ ├── FileOperations.java │ │ │ │ ├── LockFile.java │ │ │ │ ├── PathConsumer.java │ │ │ │ ├── TempDirectoryProvider.java │ │ │ │ └── XdgDirectories.java │ │ │ ├── frontend/ │ │ │ │ └── CredentialRetrieverFactory.java │ │ │ ├── global/ │ │ │ │ └── JibSystemProperties.java │ │ │ ├── hash/ │ │ │ │ ├── CountingDigestOutputStream.java │ │ │ │ ├── Digests.java │ │ │ │ └── WritableContents.java │ │ │ ├── http/ │ │ │ │ ├── Authorization.java │ │ │ │ ├── BlobHttpContent.java │ │ │ │ ├── FailoverHttpClient.java │ │ │ │ ├── NotifyingOutputStream.java │ │ │ │ ├── Request.java │ │ │ │ ├── Response.java │ │ │ │ └── ResponseException.java │ │ │ ├── image/ │ │ │ │ ├── DigestOnlyLayer.java │ │ │ │ ├── Image.java │ │ │ │ ├── ImageTarball.java │ │ │ │ ├── Layer.java │ │ │ │ ├── LayerCountMismatchException.java │ │ │ │ ├── LayerPropertyNotFoundException.java │ │ │ │ ├── ReferenceLayer.java │ │ │ │ ├── ReferenceNoDiffIdLayer.java │ │ │ │ ├── ReproducibleLayerBuilder.java │ │ │ │ └── json/ │ │ │ │ ├── BadContainerConfigurationFormatException.java │ │ │ │ ├── BuildableManifestTemplate.java │ │ │ │ ├── ContainerConfigurationTemplate.java │ │ │ │ ├── DescriptorDigestDeserializer.java │ │ │ │ ├── DescriptorDigestSerializer.java │ │ │ │ ├── HistoryEntry.java │ │ │ │ ├── ImageMetadataTemplate.java │ │ │ │ ├── ImageToJsonTranslator.java │ │ │ │ ├── JsonToImageTranslator.java │ │ │ │ ├── ManifestAndConfigTemplate.java │ │ │ │ ├── ManifestListGenerator.java │ │ │ │ ├── ManifestListTemplate.java │ │ │ │ ├── ManifestTemplate.java │ │ │ │ ├── OciIndexTemplate.java │ │ │ │ ├── OciManifestTemplate.java │ │ │ │ ├── PlatformNotFoundInBaseImageException.java │ │ │ │ ├── UnknownManifestFormatException.java │ │ │ │ ├── UnlistedPlatformInManifestListException.java │ │ │ │ ├── V21ManifestTemplate.java │ │ │ │ ├── V22ManifestListTemplate.java │ │ │ │ └── V22ManifestTemplate.java │ │ │ ├── json/ │ │ │ │ ├── JsonTemplate.java │ │ │ │ └── JsonTemplateMapper.java │ │ │ ├── registry/ │ │ │ │ ├── AbstractManifestPuller.java │ │ │ │ ├── AuthenticationMethodRetriever.java │ │ │ │ ├── BlobChecker.java │ │ │ │ ├── BlobPuller.java │ │ │ │ ├── BlobPusher.java │ │ │ │ ├── ErrorCodes.java │ │ │ │ ├── ErrorResponseUtil.java │ │ │ │ ├── ManifestAndDigest.java │ │ │ │ ├── ManifestChecker.java │ │ │ │ ├── ManifestPuller.java │ │ │ │ ├── ManifestPusher.java │ │ │ │ ├── RegistryAliasGroup.java │ │ │ │ ├── RegistryAuthenticator.java │ │ │ │ ├── RegistryClient.java │ │ │ │ ├── RegistryCredentialsNotSentException.java │ │ │ │ ├── RegistryEndpointCaller.java │ │ │ │ ├── RegistryEndpointProvider.java │ │ │ │ ├── RegistryEndpointRequestProperties.java │ │ │ │ ├── RegistryErrorException.java │ │ │ │ ├── RegistryErrorExceptionBuilder.java │ │ │ │ ├── UnexpectedBlobDigestException.java │ │ │ │ ├── credentials/ │ │ │ │ │ ├── CredentialHelperNotFoundException.java │ │ │ │ │ ├── CredentialHelperUnhandledServerUrlException.java │ │ │ │ │ ├── CredentialRetrievalException.java │ │ │ │ │ ├── DockerConfig.java │ │ │ │ │ ├── DockerConfigCredentialRetriever.java │ │ │ │ │ ├── DockerCredentialHelper.java │ │ │ │ │ └── json/ │ │ │ │ │ └── DockerConfigTemplate.java │ │ │ │ └── json/ │ │ │ │ ├── ErrorEntryTemplate.java │ │ │ │ └── ErrorResponseTemplate.java │ │ │ └── tar/ │ │ │ ├── TarExtractor.java │ │ │ └── TarStreamBuilder.java │ │ └── resources/ │ │ └── commons-logging.properties │ └── test/ │ ├── java/ │ │ └── com/ │ │ └── google/ │ │ └── cloud/ │ │ └── tools/ │ │ └── jib/ │ │ ├── MultithreadedExecutor.java │ │ ├── api/ │ │ │ ├── ContainerizerTest.java │ │ │ ├── CredentialTest.java │ │ │ ├── DescriptorDigestTest.java │ │ │ ├── DockerClientResolverTest.java │ │ │ ├── DockerDaemonImageTest.java │ │ │ ├── ImageReferenceTest.java │ │ │ ├── JavaContainerBuilderTest.java │ │ │ ├── JibContainerBuilderTest.java │ │ │ ├── JibContainerTest.java │ │ │ ├── MainClassFinderTest.java │ │ │ ├── PortsTest.java │ │ │ ├── RegistryImageTest.java │ │ │ └── TarImageTest.java │ │ ├── blob/ │ │ │ └── BlobTest.java │ │ ├── builder/ │ │ │ ├── ProgressEventDispatcherTest.java │ │ │ ├── TimerEventDispatcherTest.java │ │ │ ├── TimerTest.java │ │ │ └── steps/ │ │ │ ├── BuildAndCacheApplicationLayerStepTest.java │ │ │ ├── BuildImageStepTest.java │ │ │ ├── BuildManifestListOrSingleManifestStepTest.java │ │ │ ├── BuildResultTest.java │ │ │ ├── LocalBaseImageStepsTest.java │ │ │ ├── ObtainBaseImageLayerStepTest.java │ │ │ ├── PlatformCheckerTest.java │ │ │ ├── PullBaseImageStepTest.java │ │ │ ├── PushBlobStepTest.java │ │ │ ├── PushImageStepTest.java │ │ │ ├── RegistryCredentialRetrieverTest.java │ │ │ └── StepsRunnerTest.java │ │ ├── cache/ │ │ │ ├── CacheStorageFilesTest.java │ │ │ ├── CacheStorageReaderTest.java │ │ │ ├── CacheStorageWriterTest.java │ │ │ ├── CacheTest.java │ │ │ ├── CachedLayerTest.java │ │ │ ├── LayerEntriesSelectorTest.java │ │ │ └── RetryTest.java │ │ ├── configuration/ │ │ │ ├── BuildContextTest.java │ │ │ ├── ContainerConfigurationTest.java │ │ │ └── DockerHealthCheckTest.java │ │ ├── docker/ │ │ │ ├── AnotherDockerClient.java │ │ │ ├── CliDockerClientTest.java │ │ │ └── json/ │ │ │ └── DockerManifestEntryTemplateTest.java │ │ ├── event/ │ │ │ ├── EventHandlersTest.java │ │ │ ├── events/ │ │ │ │ ├── LogEventTest.java │ │ │ │ └── ProgressEventTest.java │ │ │ └── progress/ │ │ │ ├── AllocationCompletionTrackerTest.java │ │ │ ├── AllocationTest.java │ │ │ └── ProgressEventHandlerTest.java │ │ ├── filesystem/ │ │ │ ├── DirectoryWalkerTest.java │ │ │ ├── FileOperationsTest.java │ │ │ ├── LockFileTest.java │ │ │ ├── TempDirectoryProviderTest.java │ │ │ └── XdgDirectoriesTest.java │ │ ├── frontend/ │ │ │ └── CredentialRetrieverFactoryTest.java │ │ ├── global/ │ │ │ └── JibSystemPropertiesTest.java │ │ ├── hash/ │ │ │ └── CountingDigestOutputStreamTest.java │ │ ├── http/ │ │ │ ├── FailoverHttpClientTest.java │ │ │ ├── NotifyingOutputStreamTest.java │ │ │ ├── RequestTest.java │ │ │ ├── RequestWrapper.java │ │ │ ├── ResponseTest.java │ │ │ ├── TestWebServer.java │ │ │ └── WithServerFailoverHttpClientTest.java │ │ ├── image/ │ │ │ ├── ImageTarballTest.java │ │ │ ├── ImageTest.java │ │ │ ├── LayerTest.java │ │ │ ├── ReproducibleLayerBuilderTest.java │ │ │ └── json/ │ │ │ ├── ContainerConfigurationTemplateTest.java │ │ │ ├── ImageToJsonTranslatorTest.java │ │ │ ├── JsonToImageTranslatorTest.java │ │ │ ├── ManifestListGeneratorTest.java │ │ │ ├── OciIndexTemplateTest.java │ │ │ ├── OciManifestTemplateTest.java │ │ │ ├── V21ManifestTemplateTest.java │ │ │ ├── V22ManifestListTemplateTest.java │ │ │ └── V22ManifestTemplateTest.java │ │ ├── json/ │ │ │ └── JsonTemplateMapperTest.java │ │ ├── registry/ │ │ │ ├── AuthenticationMethodRetrieverTest.java │ │ │ ├── BlobCheckerTest.java │ │ │ ├── BlobPullerTest.java │ │ │ ├── BlobPusherTest.java │ │ │ ├── DockerRegistryBearerTokenTest.java │ │ │ ├── ErrorResponseUtilTest.java │ │ │ ├── ManifestPullerTest.java │ │ │ ├── ManifestPusherTest.java │ │ │ ├── PlainHttpClient.java │ │ │ ├── RegistryAliasGroupTest.java │ │ │ ├── RegistryAuthenticationFailedExceptionTest.java │ │ │ ├── RegistryAuthenticatorTest.java │ │ │ ├── RegistryClientTest.java │ │ │ ├── RegistryEndpointCallerTest.java │ │ │ ├── RegistryErrorExceptionBuilderTest.java │ │ │ └── credentials/ │ │ │ ├── DockerConfigCredentialRetrieverTest.java │ │ │ ├── DockerConfigTest.java │ │ │ └── DockerCredentialHelperTest.java │ │ └── tar/ │ │ ├── TarExtractorTest.java │ │ └── TarStreamBuilderTest.java │ └── resources/ │ ├── META-INF/ │ │ └── services/ │ │ └── com.google.cloud.tools.jib.api.DockerClient │ ├── core/ │ │ ├── TestWebServer-keystore │ │ ├── application/ │ │ │ ├── dependencies/ │ │ │ │ ├── dependency-1.0.0.jar │ │ │ │ ├── libraryA.jar │ │ │ │ ├── libraryB.jar │ │ │ │ └── more/ │ │ │ │ └── dependency-1.0.0.jar │ │ │ ├── resources/ │ │ │ │ ├── resourceA │ │ │ │ ├── resourceB │ │ │ │ └── world │ │ │ └── snapshot-dependencies/ │ │ │ └── dependency-1.0.0-SNAPSHOT.jar │ │ ├── blobA │ │ ├── class-finder-tests/ │ │ │ └── simple/ │ │ │ └── NotEvenAClass.txt │ │ ├── directoryA/ │ │ │ └── .gitkeep │ │ ├── docker/ │ │ │ └── emptyFile │ │ ├── extraction/ │ │ │ └── test-cache/ │ │ │ └── local/ │ │ │ ├── 5e701122d3347fae0758cd5b7f0692c686fcd07b0e7fd9c4a125fbdbbedc04dd/ │ │ │ │ └── 0011328ac5dfe3dde40c7c5e0e00c98d1833a3aeae2bfb668cf9eb965c229c7f │ │ │ ├── config/ │ │ │ │ └── 066872f17ae819f846a6d5abcfc3165abe13fb0a157640fa8cb7af81077670c0 │ │ │ └── f1ac3015bcbf0ada4750d728626eb10f0f585199e2b667dcd79e49f0e926178e/ │ │ │ └── c10ef24a5cef5092bbcb5a5666721cff7b86ce978c203a958d1fc86ee6c19f94 │ │ ├── fileA │ │ ├── fileB │ │ ├── json/ │ │ │ ├── basic.json │ │ │ ├── basic_list.json │ │ │ ├── containerconfig.json │ │ │ ├── dockerconfig.json │ │ │ ├── dockerconfig_extra_matches.json │ │ │ ├── dockerconfig_identity_token.json │ │ │ ├── dockerconfig_index_docker_io_v1.json │ │ │ ├── legacy_dockercfg │ │ │ ├── loadmanifest.json │ │ │ ├── loadmanifest2.json │ │ │ ├── metadata-v2.json │ │ │ ├── metadata-v3.json │ │ │ ├── metadata.json │ │ │ ├── metadata_corrupted.json │ │ │ ├── metadata_windows-v2.json │ │ │ ├── metadata_windows.json │ │ │ ├── ociindex.json │ │ │ ├── ociindex_platforms.json │ │ │ ├── ocimanifest.json │ │ │ ├── translated_ocimanifest.json │ │ │ ├── translated_v22manifest.json │ │ │ ├── v21manifest.json │ │ │ ├── v22manifest.json │ │ │ ├── v22manifest_list.json │ │ │ └── v22manifest_optional_properties.json │ │ ├── layer/ │ │ │ ├── a/ │ │ │ │ └── b/ │ │ │ │ └── bar │ │ │ ├── c/ │ │ │ │ └── cat │ │ │ └── foo │ │ ├── random-contents/ │ │ │ ├── file1 │ │ │ ├── file2 │ │ │ └── sub-directory/ │ │ │ ├── file3 │ │ │ ├── file4 │ │ │ └── leaf/ │ │ │ ├── file5 │ │ │ └── file6 │ │ └── webAppSampleDockerfile │ └── mockito-extensions/ │ └── org.mockito.plugins.MockMaker ├── jib-gradle-plugin/ │ ├── CHANGELOG.md │ ├── README.md │ ├── build.gradle │ ├── gradle.properties │ ├── scripts/ │ │ ├── release.sh │ │ └── update_gcs_latest.sh │ └── src/ │ ├── integration-test/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── google/ │ │ │ └── cloud/ │ │ │ └── tools/ │ │ │ └── jib/ │ │ │ └── gradle/ │ │ │ ├── DefaultTargetProjectIntegrationTest.java │ │ │ ├── EmptyProjectIntegrationTest.java │ │ │ ├── GradleLayerConfigurationIntegrationTest.java │ │ │ ├── JibRunHelper.java │ │ │ ├── SingleProjectIntegrationTest.java │ │ │ ├── SpringBootProjectIntegrationTest.java │ │ │ └── WarProjectIntegrationTest.java │ │ └── resources/ │ │ └── gradle/ │ │ └── projects/ │ │ ├── default-target/ │ │ │ ├── build.gradle │ │ │ ├── gradle.properties │ │ │ ├── libs/ │ │ │ │ └── dependency-1.0.0.jar │ │ │ ├── settings.gradle │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── java/ │ │ │ │ └── com/ │ │ │ │ └── test/ │ │ │ │ └── HelloWorld.java │ │ │ └── resources/ │ │ │ └── world │ │ ├── empty/ │ │ │ ├── build-broken-user.gradle │ │ │ ├── build.gradle │ │ │ └── src/ │ │ │ └── main/ │ │ │ └── java/ │ │ │ └── com/ │ │ │ └── test/ │ │ │ └── Empty.java │ │ ├── multiproject/ │ │ │ ├── a_packaged/ │ │ │ │ ├── build.gradle │ │ │ │ └── src/ │ │ │ │ └── main/ │ │ │ │ └── java/ │ │ │ │ └── com/ │ │ │ │ └── test/ │ │ │ │ └── Empty.java │ │ │ ├── b_dependency/ │ │ │ │ ├── build.gradle │ │ │ │ └── src/ │ │ │ │ └── main/ │ │ │ │ └── java/ │ │ │ │ └── com/ │ │ │ │ └── test/ │ │ │ │ └── Empty.java │ │ │ ├── build.gradle │ │ │ └── settings.gradle │ │ ├── simple/ │ │ │ ├── build-configuration.gradle │ │ │ ├── build-cred-helper.gradle │ │ │ ├── build-dockerclient.gradle │ │ │ ├── build-extra-dirs-filtering.gradle │ │ │ ├── build-extra-dirs.gradle │ │ │ ├── build-extra-dirs2.gradle │ │ │ ├── build-extra-dirs3.gradle │ │ │ ├── build-jar-containerization.gradle │ │ │ ├── build-java11-incompatible.gradle │ │ │ ├── build-java11.gradle │ │ │ ├── build-java17.gradle │ │ │ ├── build-local-base.gradle │ │ │ ├── build-multi-platform.gradle │ │ │ ├── build-timestamps-custom.gradle │ │ │ ├── build.gradle │ │ │ ├── complex-build.gradle │ │ │ ├── libs/ │ │ │ │ ├── dependency-1.0.0.jar │ │ │ │ ├── dependency2 │ │ │ │ └── dependency3 │ │ │ ├── mock-docker.sh │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── custom-extra-dir/ │ │ │ │ ├── bar/ │ │ │ │ │ └── cat │ │ │ │ └── foo │ │ │ ├── custom-extra-dir2/ │ │ │ │ └── baz │ │ │ ├── custom-extra-dir3/ │ │ │ │ ├── cat.json │ │ │ │ ├── cat.txt │ │ │ │ └── sub/ │ │ │ │ ├── a.json │ │ │ │ └── a.txt │ │ │ ├── custom-extra-dir4/ │ │ │ │ ├── bar │ │ │ │ └── foo │ │ │ ├── java/ │ │ │ │ └── com/ │ │ │ │ └── test/ │ │ │ │ └── HelloWorld.java │ │ │ └── resources/ │ │ │ └── world │ │ ├── spring-boot/ │ │ │ ├── build.gradle │ │ │ ├── settings.gradle │ │ │ └── src/ │ │ │ └── main/ │ │ │ └── java/ │ │ │ └── hello/ │ │ │ ├── Application.java │ │ │ └── HelloController.java │ │ └── war_servlet25/ │ │ ├── build-tomcat.gradle │ │ ├── build.gradle │ │ └── src/ │ │ ├── extra_js/ │ │ │ └── bogus.js │ │ ├── extra_static/ │ │ │ └── bogus.html │ │ └── main/ │ │ ├── java/ │ │ │ └── example/ │ │ │ └── HelloWorld.java │ │ ├── resources/ │ │ │ └── world │ │ └── webapp/ │ │ ├── META-INF/ │ │ │ └── MANIFEST.MF │ │ ├── WEB-INF/ │ │ │ └── web.xml │ │ └── index.html │ ├── main/ │ │ └── java/ │ │ └── com/ │ │ └── google/ │ │ └── cloud/ │ │ └── tools/ │ │ └── jib/ │ │ └── gradle/ │ │ ├── AuthParameters.java │ │ ├── BaseImageParameters.java │ │ ├── BuildDockerTask.java │ │ ├── BuildImageTask.java │ │ ├── BuildTarTask.java │ │ ├── ContainerParameters.java │ │ ├── CredHelperParameters.java │ │ ├── DockerClientParameters.java │ │ ├── ExtensionParameters.java │ │ ├── ExtensionParametersSpec.java │ │ ├── ExtraDirectoriesParameters.java │ │ ├── ExtraDirectoryParameters.java │ │ ├── ExtraDirectoryParametersSpec.java │ │ ├── GradleHelpfulSuggestions.java │ │ ├── GradleProjectProperties.java │ │ ├── GradleRawConfiguration.java │ │ ├── JibExtension.java │ │ ├── JibPlugin.java │ │ ├── JibTask.java │ │ ├── OutputPathsParameters.java │ │ ├── PlatformParameters.java │ │ ├── PlatformParametersSpec.java │ │ ├── TargetImageParameters.java │ │ ├── TaskCommon.java │ │ └── skaffold/ │ │ ├── CheckJibVersionTask.java │ │ ├── FilesTaskV2.java │ │ ├── InitTask.java │ │ ├── SkaffoldParameters.java │ │ ├── SkaffoldSyncParameters.java │ │ ├── SkaffoldWatchParameters.java │ │ └── SyncMapTask.java │ └── test/ │ ├── java/ │ │ └── com/ │ │ └── google/ │ │ └── cloud/ │ │ └── tools/ │ │ └── jib/ │ │ └── gradle/ │ │ ├── GradleProjectPropertiesExtensionTest.java │ │ ├── GradleProjectPropertiesTest.java │ │ ├── GradleRawConfigurationTest.java │ │ ├── JibExtensionTest.java │ │ ├── JibPluginTest.java │ │ ├── TaskCommonTest.java │ │ ├── TestProject.java │ │ └── skaffold/ │ │ ├── FilesTaskV2Test.java │ │ ├── InitTaskTest.java │ │ └── SyncMapTaskTest.java │ └── resources/ │ └── gradle/ │ ├── application/ │ │ ├── build/ │ │ │ └── resources/ │ │ │ └── main/ │ │ │ ├── resourceA │ │ │ ├── resourceB │ │ │ └── world │ │ ├── dependencies/ │ │ │ ├── another/ │ │ │ │ └── one/ │ │ │ │ └── dependency-1.0.0.jar │ │ │ ├── dependency-1.0.0.jar │ │ │ ├── dependencyX-1.0.0-SNAPSHOT.jar │ │ │ ├── library.jarC.jar │ │ │ ├── libraryA.jar │ │ │ ├── libraryB.jar │ │ │ └── more/ │ │ │ └── dependency-1.0.0.jar │ │ └── extra-directory/ │ │ └── foo │ ├── plugin-test/ │ │ └── build.gradle │ ├── projects/ │ │ ├── all-local-multi-service/ │ │ │ ├── build.gradle │ │ │ ├── complex-service/ │ │ │ │ ├── build.gradle │ │ │ │ ├── libs/ │ │ │ │ │ ├── dependency-1.0.0.jar │ │ │ │ │ └── dependencyX-1.0.0-SNAPSHOT.jar │ │ │ │ └── src/ │ │ │ │ └── main/ │ │ │ │ ├── extra-resources-1/ │ │ │ │ │ └── resource1.txt │ │ │ │ ├── extra-resources-2/ │ │ │ │ │ └── resource2.txt │ │ │ │ ├── java/ │ │ │ │ │ └── com/ │ │ │ │ │ └── test/ │ │ │ │ │ └── HelloWorld.java │ │ │ │ └── other-jib/ │ │ │ │ └── extra-file │ │ │ ├── gradle.properties │ │ │ ├── lib/ │ │ │ │ ├── build.gradle │ │ │ │ └── src/ │ │ │ │ └── main/ │ │ │ │ ├── java/ │ │ │ │ │ └── com/ │ │ │ │ │ └── lib/ │ │ │ │ │ └── Lib.java │ │ │ │ └── resources/ │ │ │ │ └── hi.txt │ │ │ ├── settings.gradle │ │ │ └── simple-service/ │ │ │ ├── build.gradle │ │ │ └── src/ │ │ │ └── main/ │ │ │ └── java/ │ │ │ └── com/ │ │ │ └── test/ │ │ │ └── HelloWorld.java │ │ ├── lazy-evaluation/ │ │ │ ├── build-extra-dirs.gradle │ │ │ ├── build.gradle │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── java/ │ │ │ │ └── com/ │ │ │ │ └── test/ │ │ │ │ └── HelloWorld.java │ │ │ └── updated-custom-extra-dir/ │ │ │ └── foo │ │ ├── multi-service/ │ │ │ ├── build.gradle │ │ │ ├── complex-service/ │ │ │ │ ├── build.gradle │ │ │ │ ├── local-m2-repo/ │ │ │ │ │ └── com/ │ │ │ │ │ └── google/ │ │ │ │ │ └── cloud/ │ │ │ │ │ └── tools/ │ │ │ │ │ └── tiny-test-lib/ │ │ │ │ │ ├── 0.0.1-SNAPSHOT/ │ │ │ │ │ │ ├── maven-metadata-local.xml │ │ │ │ │ │ ├── tiny-test-lib-0.0.1-SNAPSHOT.jar │ │ │ │ │ │ └── tiny-test-lib-0.0.1-SNAPSHOT.pom │ │ │ │ │ └── maven-metadata-local.xml │ │ │ │ └── src/ │ │ │ │ └── main/ │ │ │ │ ├── extra-resources-1/ │ │ │ │ │ └── resource1.txt │ │ │ │ ├── extra-resources-2/ │ │ │ │ │ └── resource2.txt │ │ │ │ ├── java/ │ │ │ │ │ └── com/ │ │ │ │ │ └── test/ │ │ │ │ │ └── HelloWorld.java │ │ │ │ └── other-jib/ │ │ │ │ └── extra-file │ │ │ ├── gradle.properties │ │ │ ├── lib/ │ │ │ │ ├── build.gradle │ │ │ │ └── src/ │ │ │ │ ├── main/ │ │ │ │ │ ├── java/ │ │ │ │ │ │ └── com/ │ │ │ │ │ │ └── lib/ │ │ │ │ │ │ └── Lib.java │ │ │ │ │ └── resources/ │ │ │ │ │ └── hi.txt │ │ │ │ └── test/ │ │ │ │ └── java/ │ │ │ │ └── com/ │ │ │ │ └── lib/ │ │ │ │ └── LibTest.java │ │ │ ├── settings.gradle │ │ │ └── simple-service/ │ │ │ ├── build.gradle │ │ │ └── src/ │ │ │ └── main/ │ │ │ └── java/ │ │ │ └── com/ │ │ │ └── test/ │ │ │ └── HelloWorld.java │ │ ├── platform/ │ │ │ ├── build.gradle │ │ │ ├── platform/ │ │ │ │ └── build.gradle │ │ │ ├── service/ │ │ │ │ ├── build.gradle │ │ │ │ └── src/ │ │ │ │ └── main/ │ │ │ │ └── java/ │ │ │ │ └── com/ │ │ │ │ └── test/ │ │ │ │ └── HelloWorld.java │ │ │ └── settings.gradle │ │ ├── simple/ │ │ │ ├── build.gradle │ │ │ ├── libs/ │ │ │ │ └── dependency-1.0.0.jar │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── custom-extra-dir/ │ │ │ │ ├── bar/ │ │ │ │ │ └── cat │ │ │ │ └── foo │ │ │ ├── java/ │ │ │ │ └── com/ │ │ │ │ └── test/ │ │ │ │ └── HelloWorld.java │ │ │ └── resources/ │ │ │ └── world │ │ ├── skaffold-config/ │ │ │ ├── build.gradle │ │ │ ├── libs/ │ │ │ │ └── dependency-1.0.0.jar │ │ │ ├── other/ │ │ │ │ └── file.txt │ │ │ ├── script.gradle │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── java/ │ │ │ │ └── com/ │ │ │ │ ├── test/ │ │ │ │ │ └── HelloWorld.java │ │ │ │ └── test2/ │ │ │ │ └── GoodbyeWorld.java │ │ │ ├── jib/ │ │ │ │ ├── bar/ │ │ │ │ │ └── cat │ │ │ │ └── foo │ │ │ └── resources/ │ │ │ └── world │ │ └── war_servlet25/ │ │ ├── build.gradle │ │ ├── pom-tomcat.xml │ │ ├── pom.xml │ │ └── src/ │ │ ├── extra_js/ │ │ │ └── bogus.js │ │ ├── extra_static/ │ │ │ └── bogus.html │ │ └── main/ │ │ ├── java/ │ │ │ └── example/ │ │ │ └── HelloWorld.java │ │ ├── resources/ │ │ │ └── world │ │ └── webapp/ │ │ ├── META-INF/ │ │ │ └── MANIFEST.MF │ │ ├── WEB-INF/ │ │ │ └── web.xml │ │ └── index.html │ └── webapp/ │ ├── META-INF/ │ │ └── context.xml │ ├── Test.jsp │ └── WEB-INF/ │ ├── classes/ │ │ └── package/ │ │ └── test.properties │ ├── lib/ │ │ ├── dependency-1.0.0.jar │ │ └── dependencyX-1.0.0-SNAPSHOT.jar │ └── web.xml ├── jib-gradle-plugin-extension-api/ │ ├── CHANGELOG.md │ ├── build.gradle │ ├── gradle.properties │ ├── kokoro/ │ │ └── release_build.sh │ └── src/ │ └── main/ │ └── java/ │ └── com/ │ └── google/ │ └── cloud/ │ └── tools/ │ └── jib/ │ └── gradle/ │ └── extension/ │ ├── GradleData.java │ └── JibGradlePluginExtension.java ├── jib-maven-plugin/ │ ├── CHANGELOG.md │ ├── README.md │ ├── build.gradle │ ├── gradle.properties │ ├── kokoro/ │ │ └── release_build.sh │ ├── scripts/ │ │ └── update_gcs_latest.sh │ └── src/ │ ├── integration-test/ │ │ └── java/ │ │ └── com/ │ │ └── google/ │ │ └── cloud/ │ │ └── tools/ │ │ └── jib/ │ │ └── maven/ │ │ ├── BuildDockerMojoIntegrationTest.java │ │ ├── BuildImageMojoIntegrationTest.java │ │ └── BuildTarMojoIntegrationTest.java │ ├── main/ │ │ └── java/ │ │ └── com/ │ │ └── google/ │ │ └── cloud/ │ │ └── tools/ │ │ └── jib/ │ │ └── maven/ │ │ ├── BuildDockerMojo.java │ │ ├── BuildImageMojo.java │ │ ├── BuildTarMojo.java │ │ ├── JibPluginConfiguration.java │ │ ├── MavenExtensionData.java │ │ ├── MavenHelpfulSuggestions.java │ │ ├── MavenProjectProperties.java │ │ ├── MavenRawConfiguration.java │ │ ├── MavenSettingsProxyProvider.java │ │ ├── MavenSettingsServerCredentials.java │ │ ├── MojoCommon.java │ │ └── skaffold/ │ │ ├── CheckJibVersionMojo.java │ │ ├── FilesMojoV2.java │ │ ├── InitMojo.java │ │ ├── PackageGoalsMojo.java │ │ ├── SkaffoldBindingMojo.java │ │ ├── SkaffoldConfiguration.java │ │ └── SyncMapMojo.java │ └── test/ │ ├── java/ │ │ └── com/ │ │ └── google/ │ │ └── cloud/ │ │ └── tools/ │ │ └── jib/ │ │ └── maven/ │ │ ├── JibPluginConfigurationTest.java │ │ ├── MavenProjectPropertiesExtensionTest.java │ │ ├── MavenProjectPropertiesTest.java │ │ ├── MavenRawConfigurationTest.java │ │ ├── MavenSettingsProxyProviderTest.java │ │ ├── MavenSettingsServerCredentialsTest.java │ │ ├── MojoCommonTest.java │ │ ├── SettingsFixture.java │ │ ├── SkippedGoalVerifier.java │ │ ├── TestProject.java │ │ ├── TestRepository.java │ │ └── skaffold/ │ │ ├── CheckJibVersionMojoTest.java │ │ ├── FilesMojoV2KotlinTest.java │ │ ├── FilesMojoV2Test.java │ │ ├── InitMojoTest.java │ │ ├── PackageGoalsMojoTest.java │ │ └── SyncMapMojoTest.java │ └── resources/ │ ├── maven/ │ │ ├── application/ │ │ │ ├── dependencies/ │ │ │ │ ├── another/ │ │ │ │ │ └── one/ │ │ │ │ │ └── dependency-1.0.0.jar │ │ │ │ ├── dependency-1.0.0.jar │ │ │ │ ├── dependencyX-1.0.0-SNAPSHOT.jar │ │ │ │ ├── library.jarC.jar │ │ │ │ ├── libraryA.jar │ │ │ │ ├── libraryB.jar │ │ │ │ └── more/ │ │ │ │ └── dependency-1.0.0.jar │ │ │ ├── output/ │ │ │ │ ├── directory/ │ │ │ │ │ └── somefile │ │ │ │ ├── resourceA │ │ │ │ ├── resourceB │ │ │ │ └── world │ │ │ └── source/ │ │ │ ├── HelloWorld.java │ │ │ ├── package/ │ │ │ │ └── some.java │ │ │ └── some.java │ │ ├── projects/ │ │ │ ├── default-target/ │ │ │ │ ├── libs/ │ │ │ │ │ └── dependency-1.0.0.jar │ │ │ │ ├── pom.xml │ │ │ │ └── src/ │ │ │ │ └── main/ │ │ │ │ ├── java/ │ │ │ │ │ └── com/ │ │ │ │ │ └── test/ │ │ │ │ │ └── HelloWorld.java │ │ │ │ └── resources/ │ │ │ │ └── world │ │ │ ├── empty/ │ │ │ │ ├── pom-broken-user.xml │ │ │ │ ├── pom.xml │ │ │ │ └── src/ │ │ │ │ └── main/ │ │ │ │ └── java/ │ │ │ │ └── com/ │ │ │ │ └── test/ │ │ │ │ └── Empty.java │ │ │ ├── multi/ │ │ │ │ ├── complex-service/ │ │ │ │ │ ├── fake-remote-repo/ │ │ │ │ │ │ └── com/ │ │ │ │ │ │ └── google/ │ │ │ │ │ │ └── cloud/ │ │ │ │ │ │ └── tools/ │ │ │ │ │ │ └── tiny-test-lib/ │ │ │ │ │ │ ├── 0.0.1-SNAPSHOT/ │ │ │ │ │ │ │ ├── maven-metadata-local.xml │ │ │ │ │ │ │ ├── tiny-test-lib-0.0.1-SNAPSHOT.jar │ │ │ │ │ │ │ └── tiny-test-lib-0.0.1-SNAPSHOT.pom │ │ │ │ │ │ └── maven-metadata-local.xml │ │ │ │ │ ├── pom.xml │ │ │ │ │ └── src/ │ │ │ │ │ └── main/ │ │ │ │ │ ├── extra-resources-1/ │ │ │ │ │ │ └── resource1.txt │ │ │ │ │ ├── extra-resources-2/ │ │ │ │ │ │ └── resource2.txt │ │ │ │ │ ├── java/ │ │ │ │ │ │ └── com/ │ │ │ │ │ │ └── test/ │ │ │ │ │ │ └── HelloWorld.java │ │ │ │ │ ├── jib1/ │ │ │ │ │ │ └── foo │ │ │ │ │ └── jib2/ │ │ │ │ │ └── bar │ │ │ │ ├── lib/ │ │ │ │ │ ├── pom.xml │ │ │ │ │ └── src/ │ │ │ │ │ ├── main/ │ │ │ │ │ │ └── java/ │ │ │ │ │ │ └── com/ │ │ │ │ │ │ └── lib/ │ │ │ │ │ │ └── Lib.java │ │ │ │ │ └── test/ │ │ │ │ │ └── java/ │ │ │ │ │ └── com/ │ │ │ │ │ └── lib/ │ │ │ │ │ └── LibTest.java │ │ │ │ ├── pom.xml │ │ │ │ └── simple-service/ │ │ │ │ ├── pom.xml │ │ │ │ └── src/ │ │ │ │ └── main/ │ │ │ │ └── java/ │ │ │ │ └── com/ │ │ │ │ └── test/ │ │ │ │ └── HelloWorld.java │ │ │ ├── simple/ │ │ │ │ ├── libs/ │ │ │ │ │ └── dependency-1.0.0.jar │ │ │ │ ├── mock-docker.sh │ │ │ │ ├── pom-complex-properties.xml │ │ │ │ ├── pom-complex.xml │ │ │ │ ├── pom-cred-helper-1.xml │ │ │ │ ├── pom-cred-helper-2.xml │ │ │ │ ├── pom-dockerclient.xml │ │ │ │ ├── pom-extra-dirs-filtering.xml │ │ │ │ ├── pom-extra-dirs.xml │ │ │ │ ├── pom-jar-containerization.xml │ │ │ │ ├── pom-java11-incompatible.xml │ │ │ │ ├── pom-java11.xml │ │ │ │ ├── pom-localbase.xml │ │ │ │ ├── pom-multiplatform-build.xml │ │ │ │ ├── pom-no-to-image.xml │ │ │ │ ├── pom-skaffold-config.xml │ │ │ │ ├── pom-timestamps-custom.xml │ │ │ │ ├── pom.xml │ │ │ │ └── src/ │ │ │ │ └── main/ │ │ │ │ ├── java/ │ │ │ │ │ └── com/ │ │ │ │ │ └── test/ │ │ │ │ │ └── HelloWorld.java │ │ │ │ ├── jib-custom/ │ │ │ │ │ ├── bar/ │ │ │ │ │ │ └── cat │ │ │ │ │ └── foo │ │ │ │ ├── jib-custom-2/ │ │ │ │ │ └── baz │ │ │ │ ├── jib-custom-3/ │ │ │ │ │ ├── cat.json │ │ │ │ │ ├── cat.txt │ │ │ │ │ └── sub/ │ │ │ │ │ ├── a.json │ │ │ │ │ └── a.txt │ │ │ │ ├── jib-custom-4/ │ │ │ │ │ ├── bar │ │ │ │ │ └── foo │ │ │ │ └── resources/ │ │ │ │ └── world │ │ │ ├── spring-boot/ │ │ │ │ ├── pom.xml │ │ │ │ └── src/ │ │ │ │ └── main/ │ │ │ │ └── java/ │ │ │ │ └── hello/ │ │ │ │ ├── Application.java │ │ │ │ └── HelloController.java │ │ │ ├── spring-boot-multi/ │ │ │ │ ├── pom.xml │ │ │ │ ├── service-1/ │ │ │ │ │ ├── pom.xml │ │ │ │ │ └── src/ │ │ │ │ │ └── main/ │ │ │ │ │ └── java/ │ │ │ │ │ └── com/ │ │ │ │ │ └── test/ │ │ │ │ │ └── HelloWorld.java │ │ │ │ └── service-2/ │ │ │ │ ├── pom.xml │ │ │ │ └── src/ │ │ │ │ └── main/ │ │ │ │ └── java/ │ │ │ │ └── com/ │ │ │ │ └── test/ │ │ │ │ └── HelloWorld.java │ │ │ └── war_servlet25/ │ │ │ ├── pom-tomcat.xml │ │ │ ├── pom.xml │ │ │ └── src/ │ │ │ ├── extra_js/ │ │ │ │ └── bogus.js │ │ │ ├── extra_static/ │ │ │ │ └── bogus.html │ │ │ └── main/ │ │ │ ├── java/ │ │ │ │ └── example/ │ │ │ │ └── HelloWorld.java │ │ │ ├── resources/ │ │ │ │ └── world │ │ │ └── webapp/ │ │ │ ├── META-INF/ │ │ │ │ └── MANIFEST.MF │ │ │ ├── WEB-INF/ │ │ │ │ └── web.xml │ │ │ └── index.html │ │ ├── settings/ │ │ │ ├── bad-encrypted-proxy-settings.xml │ │ │ ├── encrypted-proxy-settings.xml │ │ │ ├── http-only-proxy-settings.xml │ │ │ ├── https-only-proxy-settings.xml │ │ │ ├── no-active-proxy-settings.xml │ │ │ ├── readme │ │ │ ├── settings-security.empty.xml │ │ │ ├── settings-security.xml │ │ │ └── settings.xml │ │ ├── testM2/ │ │ │ └── com/ │ │ │ └── test/ │ │ │ ├── dependency/ │ │ │ │ ├── 1.0.0/ │ │ │ │ │ ├── _remote.repositories │ │ │ │ │ ├── dependency-1.0.0.jar │ │ │ │ │ └── dependency-1.0.0.pom │ │ │ │ └── maven-metadata-local.xml │ │ │ └── dependencyX/ │ │ │ ├── 1.0.0-SNAPSHOT/ │ │ │ │ ├── _remote.repositories │ │ │ │ ├── dependencyX-1.0.0-SNAPSHOT.jar │ │ │ │ ├── dependencyX-1.0.0-SNAPSHOT.pom │ │ │ │ └── maven-metadata-local.xml │ │ │ └── maven-metadata-local.xml │ │ └── webapp/ │ │ └── final-name/ │ │ ├── META-INF/ │ │ │ └── context.xml │ │ ├── Test.jsp │ │ └── WEB-INF/ │ │ ├── classes/ │ │ │ └── package/ │ │ │ └── test.properties │ │ ├── lib/ │ │ │ ├── dependency-1.0.0.jar │ │ │ └── dependencyX-1.0.0-SNAPSHOT.jar │ │ └── web.xml │ └── mockito-extensions/ │ └── org.mockito.plugins.MockMaker ├── jib-maven-plugin-extension-api/ │ ├── CHANGELOG.md │ ├── build.gradle │ ├── gradle.properties │ ├── kokoro/ │ │ └── release_build.sh │ └── src/ │ └── main/ │ └── java/ │ └── com/ │ └── google/ │ └── cloud/ │ └── tools/ │ └── jib/ │ └── maven/ │ └── extension/ │ ├── JibMavenPluginExtension.java │ └── MavenData.java ├── jib-plugins-common/ │ ├── README.md │ ├── build.gradle │ ├── gradle.properties │ └── src/ │ ├── main/ │ │ └── java/ │ │ └── com/ │ │ └── google/ │ │ └── cloud/ │ │ └── tools/ │ │ └── jib/ │ │ └── plugins/ │ │ └── common/ │ │ ├── AuthProperty.java │ │ ├── BuildStepsExecutionException.java │ │ ├── ConfigurationPropertyValidator.java │ │ ├── ContainerizingMode.java │ │ ├── DefaultCredentialRetrievers.java │ │ ├── ExtraDirectoryNotFoundException.java │ │ ├── HelpfulSuggestions.java │ │ ├── ImageMetadataOutput.java │ │ ├── IncompatibleBaseImageJavaVersionException.java │ │ ├── InferredAuthException.java │ │ ├── InferredAuthProvider.java │ │ ├── InvalidAppRootException.java │ │ ├── InvalidContainerVolumeException.java │ │ ├── InvalidContainerizingModeException.java │ │ ├── InvalidCreationTimeException.java │ │ ├── InvalidFilesModificationTimeException.java │ │ ├── InvalidPlatformException.java │ │ ├── InvalidWorkingDirectoryException.java │ │ ├── JavaContainerBuilderHelper.java │ │ ├── JibBuildRunner.java │ │ ├── MainClassInferenceException.java │ │ ├── MainClassResolver.java │ │ ├── PluginConfigurationProcessor.java │ │ ├── PluginExtensionLogger.java │ │ ├── ProjectProperties.java │ │ ├── PropertyNames.java │ │ ├── RawConfiguration.java │ │ ├── SkaffoldFilesOutput.java │ │ ├── SkaffoldInitOutput.java │ │ ├── SkaffoldSyncMapTemplate.java │ │ ├── TimerEventHandler.java │ │ ├── UpdateChecker.java │ │ ├── VersionChecker.java │ │ ├── ZipUtil.java │ │ ├── globalconfig/ │ │ │ ├── GlobalConfig.java │ │ │ ├── GlobalConfigTemplate.java │ │ │ ├── InvalidGlobalConfigException.java │ │ │ └── RegistryMirrorsTemplate.java │ │ └── logging/ │ │ ├── AnsiLoggerWithFooter.java │ │ ├── ConsoleLogger.java │ │ ├── ConsoleLoggerBuilder.java │ │ ├── PlainConsoleLogger.java │ │ ├── ProgressDisplayGenerator.java │ │ └── SingleThreadedExecutor.java │ └── test/ │ ├── java/ │ │ └── com/ │ │ └── google/ │ │ └── cloud/ │ │ └── tools/ │ │ └── jib/ │ │ ├── api/ │ │ │ ├── HttpRequestTester.java │ │ │ └── JibContainerBuilderTestHelper.java │ │ └── plugins/ │ │ └── common/ │ │ ├── ConfigurationPropertyValidatorTest.java │ │ ├── ContainerizingModeTest.java │ │ ├── DefaultCredentialRetrieversTest.java │ │ ├── HelpfulSuggestionsTest.java │ │ ├── ImageMetadataOutputTest.java │ │ ├── JavaContainerBuilderHelperTest.java │ │ ├── JibBuildRunnerTest.java │ │ ├── MainClassResolverTest.java │ │ ├── PluginConfigurationProcessorTest.java │ │ ├── SkaffoldFilesOutputTest.java │ │ ├── SkaffoldSyncMapTemplateTest.java │ │ ├── TimerEventHandlerTest.java │ │ ├── UpdateCheckerTest.java │ │ ├── VersionCheckerTest.java │ │ ├── ZipUtilTest.java │ │ ├── globalconfig/ │ │ │ └── GlobalConfigTest.java │ │ └── logging/ │ │ ├── AnsiLoggerWithFooterTest.java │ │ ├── ConsoleLoggerBuilderTest.java │ │ ├── PlainConsoleLoggerTest.java │ │ ├── ProgressDisplayGeneratorTest.java │ │ └── SingleThreadedExecutorTest.java │ └── resources/ │ └── plugins-common/ │ └── exploded-war/ │ ├── META-INF/ │ │ └── context.xml │ ├── Test.jsp │ └── WEB-INF/ │ ├── classes/ │ │ └── package/ │ │ └── test.properties │ ├── lib/ │ │ ├── dependency-1.0.0.jar │ │ └── dependencyX-1.0.0-SNAPSHOT.jar │ └── web.xml ├── jib-plugins-extension-common/ │ ├── build.gradle │ ├── gradle.properties │ ├── kokoro/ │ │ └── release_build.sh │ └── src/ │ └── main/ │ └── java/ │ └── com/ │ └── google/ │ └── cloud/ │ └── tools/ │ └── jib/ │ └── plugins/ │ └── extension/ │ ├── ExtensionLogger.java │ ├── JibPluginExtension.java │ ├── JibPluginExtensionException.java │ └── NullExtension.java ├── kokoro/ │ ├── continuous.bat │ ├── continuous.sh │ ├── docker_setup_macos.sh │ ├── docker_setup_ubuntu.sh │ ├── presubmit.bat │ └── presubmit.sh ├── proposals/ │ ├── README.md │ ├── archives/ │ │ ├── README.md │ │ ├── build_tarball.md │ │ ├── cache_v2.md │ │ ├── docker_build.md │ │ ├── events.md │ │ ├── java_agents_and_more_layers.md │ │ ├── jib_core_library.md │ │ ├── log_output_v2.md │ │ ├── maven_configuration_v2.md │ │ ├── output_files.md │ │ ├── progress_output.md │ │ ├── reproducible_base_image.md │ │ ├── reproducible_jars.md │ │ └── skaffold_config.md │ ├── buildfile.md │ ├── cli-jar-processing.md │ ├── container-build-plan-spec.md │ ├── jib-cli-surface.md │ └── tags-on-existing-images.md └── settings.gradle
Showing preview only (426K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (5001 symbols across 597 files)
FILE: examples/dropwizard/.mvn/wrapper/MavenWrapperDownloader.java
class MavenWrapperDownloader (line 25) | public class MavenWrapperDownloader {
method main (line 51) | public static void main(String args[]) {
method downloadFileFromURL (line 100) | private static void downloadFileFromURL(String urlString, File destina...
FILE: examples/dropwizard/src/main/java/example/JibExampleApplication.java
class JibExampleApplication (line 31) | public class JibExampleApplication extends Application<JibExampleConfigu...
method main (line 33) | public static void main(final String[] args) throws Exception {
method getName (line 37) | @Override
method initialize (line 42) | @Override
method run (line 48) | @Override
FILE: examples/dropwizard/src/main/java/example/JibExampleConfiguration.java
class JibExampleConfiguration (line 27) | @SuppressWarnings("unused")
method getHelloConfiguration (line 32) | @JsonProperty("hello")
FILE: examples/dropwizard/src/main/java/example/api/Saying.java
class Saying (line 21) | public class Saying {
method Saying (line 26) | public Saying() {
method Saying (line 30) | public Saying(long id, String content) {
method getId (line 35) | @JsonProperty
method getContent (line 40) | @JsonProperty
FILE: examples/dropwizard/src/main/java/example/config/HelloWorldConfiguration.java
class HelloWorldConfiguration (line 25) | @SuppressWarnings("unused")
method getTemplate (line 32) | @JsonProperty
method getDefaultName (line 37) | @JsonProperty
FILE: examples/dropwizard/src/main/java/example/health/TemplateHealthCheck.java
class TemplateHealthCheck (line 21) | public class TemplateHealthCheck extends HealthCheck {
method TemplateHealthCheck (line 24) | public TemplateHealthCheck(String template) {
method check (line 28) | @Override
FILE: examples/dropwizard/src/main/java/example/resources/HelloWorldResource.java
class HelloWorldResource (line 34) | @Path("/")
method HelloWorldResource (line 42) | public HelloWorldResource(String template, String defaultName) {
method from (line 48) | public static HelloWorldResource from(JibExampleConfiguration conf) {
method sayHello (line 54) | @GET
FILE: examples/helloworld/src/main/java/example/HelloWorld.java
class HelloWorld (line 27) | public class HelloWorld {
method main (line 29) | public static void main(String[] args) throws URISyntaxException, IOEx...
FILE: examples/java-agent/src/main/java/example/HelloWorld.java
class HelloWorld (line 22) | public class HelloWorld {
method main (line 23) | public static void main(String[] args) {
FILE: examples/multi-module/.mvn/wrapper/MavenWrapperDownloader.java
class MavenWrapperDownloader (line 25) | public class MavenWrapperDownloader {
method main (line 51) | public static void main(String args[]) {
method downloadFileFromURL (line 100) | private static void downloadFileFromURL(String urlString, File destina...
FILE: examples/multi-module/hello-service/src/main/java/hello/Application.java
class Application (line 6) | @SpringBootApplication
method main (line 9) | public static void main(String[] args) {
FILE: examples/multi-module/hello-service/src/main/java/hello/HelloController.java
class HelloController (line 7) | @RestController
method sayHello (line 10) | @RequestMapping("/")
FILE: examples/multi-module/name-service/src/main/java/name/Application.java
class Application (line 6) | @SpringBootApplication
method main (line 9) | public static void main(String[] args) {
FILE: examples/multi-module/name-service/src/main/java/name/NameController.java
class NameController (line 7) | @RestController
method getText (line 10) | @RequestMapping("/")
FILE: examples/multi-module/shared-library/src/main/java/common/SharedUtils.java
class SharedUtils (line 3) | public class SharedUtils {
method getText (line 5) | public static String getText() {
FILE: examples/spring-boot/.mvn/wrapper/MavenWrapperDownloader.java
class MavenWrapperDownloader (line 25) | public class MavenWrapperDownloader {
method main (line 51) | public static void main(String args[]) {
method downloadFileFromURL (line 100) | private static void downloadFileFromURL(String urlString, File destina...
FILE: examples/spring-boot/src/main/java/hello/Application.java
class Application (line 6) | @SpringBootApplication
method main (line 9) | public static void main(String[] args) {
FILE: examples/spring-boot/src/main/java/hello/HelloController.java
class HelloController (line 6) | @RestController
method index (line 9) | @RequestMapping("/")
FILE: examples/vertx/src/main/java/example/vertx/MainVerticle.java
class MainVerticle (line 12) | public class MainVerticle extends AbstractVerticle {
method main (line 14) | public static void main(String[] args) {
method start (line 20) | @Override
method hello (line 40) | private void hello(RoutingContext context) {
method now (line 47) | private void now(RoutingContext context) {
FILE: jib-build-plan/src/main/java/com/google/cloud/tools/jib/api/buildplan/AbsoluteUnixPath.java
class AbsoluteUnixPath (line 33) | @Immutable
method get (line 43) | public static AbsoluteUnixPath get(String unixPath) {
method fromPath (line 58) | public static AbsoluteUnixPath fromPath(Path path) {
method AbsoluteUnixPath (line 78) | private AbsoluteUnixPath(List<String> pathComponents) {
method resolve (line 94) | public AbsoluteUnixPath resolve(RelativeUnixPath relativeUnixPath) {
method resolve (line 110) | public AbsoluteUnixPath resolve(Path relativePath) {
method resolve (line 124) | public AbsoluteUnixPath resolve(String relativeUnixPath) {
method toString (line 133) | @Override
method equals (line 138) | @Override
method hashCode (line 150) | @Override
FILE: jib-build-plan/src/main/java/com/google/cloud/tools/jib/api/buildplan/ContainerBuildPlan.java
class ContainerBuildPlan (line 32) | @Immutable
class Builder (line 36) | public static class Builder {
method Builder (line 58) | private Builder() {}
method setBaseImage (line 66) | public Builder setBaseImage(String baseImage) {
method addPlatform (line 86) | public Builder addPlatform(String architecture, String os) {
method setPlatforms (line 103) | public Builder setPlatforms(Set<Platform> platforms) {
method setCreationTime (line 117) | public Builder setCreationTime(Instant creationTime) {
method setFormat (line 129) | public Builder setFormat(ImageFormat format) {
method setEnvironment (line 147) | public Builder setEnvironment(Map<String, String> environment) {
method addEnvironmentVariable (line 160) | public Builder addEnvironmentVariable(String name, String value) {
method setVolumes (line 176) | public Builder setVolumes(Set<AbsoluteUnixPath> volumes) {
method addVolume (line 188) | public Builder addVolume(AbsoluteUnixPath volume) {
method setLabels (line 204) | public Builder setLabels(Map<String, String> labels) {
method addLabel (line 216) | public Builder addLabel(String key, String value) {
method setExposedPorts (line 238) | public Builder setExposedPorts(Set<Port> exposedPorts) {
method addExposedPort (line 250) | public Builder addExposedPort(Port exposedPort) {
method setUser (line 275) | public Builder setUser(@Nullable String user) {
method setWorkingDirectory (line 287) | public Builder setWorkingDirectory(@Nullable AbsoluteUnixPath workin...
method setEntrypoint (line 306) | public Builder setEntrypoint(@Nullable List<String> entrypoint) {
method setCmd (line 332) | public Builder setCmd(@Nullable List<String> cmd) {
method addLayer (line 341) | public Builder addLayer(LayerObject layer) {
method setLayers (line 346) | public Builder setLayers(List<? extends LayerObject> layer) {
method build (line 356) | public ContainerBuildPlan build() {
method builder (line 374) | public static Builder builder() {
method ContainerBuildPlan (line 395) | private ContainerBuildPlan(
method getBaseImage (line 424) | public String getBaseImage() {
method getPlatforms (line 434) | public Set<Platform> getPlatforms() {
method getFormat (line 438) | public ImageFormat getFormat() {
method getCreationTime (line 442) | public Instant getCreationTime() {
method getEnvironment (line 446) | public Map<String, String> getEnvironment() {
method getVolumes (line 450) | public Set<AbsoluteUnixPath> getVolumes() {
method getLabels (line 454) | public Map<String, String> getLabels() {
method getExposedPorts (line 458) | public Set<Port> getExposedPorts() {
method getUser (line 462) | @Nullable
method getWorkingDirectory (line 467) | @Nullable
method getEntrypoint (line 472) | @Nullable
method getCmd (line 477) | @Nullable
method getLayers (line 482) | public List<? extends LayerObject> getLayers() {
method toBuilder (line 491) | public Builder toBuilder() {
FILE: jib-build-plan/src/main/java/com/google/cloud/tools/jib/api/buildplan/FileEntriesLayer.java
class FileEntriesLayer (line 30) | @Immutable
class Builder (line 34) | public static class Builder {
method Builder (line 39) | private Builder() {}
method setName (line 47) | public Builder setName(String name) {
method setEntries (line 58) | public Builder setEntries(List<FileEntry> entries) {
method addEntry (line 69) | public Builder addEntry(FileEntry entry) {
method addEntry (line 92) | public Builder addEntry(Path sourceFile, AbsoluteUnixPath pathInCont...
method addEntry (line 113) | public Builder addEntry(
method addEntry (line 130) | public Builder addEntry(
method addEntry (line 154) | public Builder addEntry(
method addEntry (line 180) | public Builder addEntry(
method addEntryRecursive (line 205) | public Builder addEntryRecursive(Path sourceFile, AbsoluteUnixPath p...
method addEntryRecursive (line 222) | public Builder addEntryRecursive(
method addEntryRecursive (line 245) | public Builder addEntryRecursive(
method addEntryRecursive (line 275) | public Builder addEntryRecursive(
method build (line 307) | public FileEntriesLayer build() {
method builder (line 338) | public static Builder builder() {
method FileEntriesLayer (line 351) | private FileEntriesLayer(String name, List<FileEntry> entries) {
method getType (line 356) | @Override
method getName (line 366) | @Override
method getEntries (line 376) | public List<FileEntry> getEntries() {
method toBuilder (line 385) | public Builder toBuilder() {
FILE: jib-build-plan/src/main/java/com/google/cloud/tools/jib/api/buildplan/FileEntry.java
class FileEntry (line 30) | @Immutable
method FileEntry (line 65) | public FileEntry(
method FileEntry (line 91) | public FileEntry(
method getModificationTime (line 109) | public Instant getModificationTime() {
method getSourceFile (line 120) | public Path getSourceFile() {
method getExtractionPath (line 129) | public AbsoluteUnixPath getExtractionPath() {
method getPermissions (line 138) | public FilePermissions getPermissions() {
method getOwnership (line 147) | public String getOwnership() {
method equals (line 151) | @Override
method hashCode (line 167) | @Override
method toString (line 172) | @Override
FILE: jib-build-plan/src/main/java/com/google/cloud/tools/jib/api/buildplan/FilePermissions.java
class FilePermissions (line 32) | @Immutable
method fromOctalString (line 71) | public static FilePermissions fromOctalString(String octalPermissions) {
method fromPosixFilePermissions (line 85) | public static FilePermissions fromPosixFilePermissions(
method FilePermissions (line 97) | FilePermissions(int permissionBits) {
method getPermissionBits (line 106) | public int getPermissionBits() {
method toOctalString (line 115) | public String toOctalString() {
method equals (line 119) | @Override
method hashCode (line 131) | @Override
method toString (line 136) | @Override
FILE: jib-build-plan/src/main/java/com/google/cloud/tools/jib/api/buildplan/FilePermissionsProvider.java
type FilePermissionsProvider (line 22) | @FunctionalInterface
method get (line 34) | public FilePermissions get(Path sourcePath, AbsoluteUnixPath destinati...
FILE: jib-build-plan/src/main/java/com/google/cloud/tools/jib/api/buildplan/ImageFormat.java
type ImageFormat (line 20) | public enum ImageFormat {
FILE: jib-build-plan/src/main/java/com/google/cloud/tools/jib/api/buildplan/LayerObject.java
type LayerObject (line 28) | @Immutable
type Type (line 31) | public static enum Type {
method getType (line 35) | public Type getType();
method getName (line 37) | public String getName();
FILE: jib-build-plan/src/main/java/com/google/cloud/tools/jib/api/buildplan/ModificationTimeProvider.java
type ModificationTimeProvider (line 23) | @FunctionalInterface
method get (line 35) | public Instant get(Path sourcePath, AbsoluteUnixPath destinationPath);
FILE: jib-build-plan/src/main/java/com/google/cloud/tools/jib/api/buildplan/OwnershipProvider.java
type OwnershipProvider (line 22) | @FunctionalInterface
method get (line 34) | public String get(Path sourcePath, AbsoluteUnixPath destinationPath);
FILE: jib-build-plan/src/main/java/com/google/cloud/tools/jib/api/buildplan/Platform.java
class Platform (line 23) | @Immutable
method Platform (line 28) | public Platform(String architecture, String os) {
method getArchitecture (line 33) | public String getArchitecture() {
method getOs (line 37) | public String getOs() {
method equals (line 41) | @Override
method hashCode (line 53) | @Override
FILE: jib-build-plan/src/main/java/com/google/cloud/tools/jib/api/buildplan/Port.java
class Port (line 23) | @Immutable
method tcp (line 35) | public static Port tcp(int port) {
method udp (line 45) | public static Port udp(int port) {
method parseProtocol (line 57) | public static Port parseProtocol(int port, String protocolString) {
method Port (line 65) | private Port(int portNumber, String protocol) {
method getPort (line 75) | public int getPort() {
method getProtocol (line 84) | public String getProtocol() {
method equals (line 88) | @Override
method hashCode (line 100) | @Override
method toString (line 111) | @Override
FILE: jib-build-plan/src/main/java/com/google/cloud/tools/jib/api/buildplan/RelativeUnixPath.java
class RelativeUnixPath (line 29) | @Immutable
method get (line 39) | public static RelativeUnixPath get(String relativePath) {
method RelativeUnixPath (line 50) | private RelativeUnixPath(List<String> pathComponents) {
method getRelativePathComponents (line 59) | List<String> getRelativePathComponents() {
FILE: jib-build-plan/src/main/java/com/google/cloud/tools/jib/buildplan/UnixPathParser.java
class UnixPathParser (line 23) | public class UnixPathParser {
method parse (line 31) | public static List<String> parse(String unixPath) {
method UnixPathParser (line 42) | private UnixPathParser() {}
FILE: jib-build-plan/src/test/java/com/google/cloud/tools/jib/api/buildplan/AbsoluteUnixPathTest.java
class AbsoluteUnixPathTest (line 26) | public class AbsoluteUnixPathTest {
method testGet_notAbsolute (line 28) | @Test
method testFromPath (line 40) | @Test
method testFromPath_windows (line 46) | @Test
method testEquals (line 54) | @Test
method testResolve_relativeUnixPath (line 63) | @Test
method testResolve_Path_notRelative (line 77) | @Test
method testResolve_Path (line 86) | @Test
FILE: jib-build-plan/src/test/java/com/google/cloud/tools/jib/api/buildplan/ContainerBuildPlanTest.java
class ContainerBuildPlanTest (line 31) | public class ContainerBuildPlanTest {
method testDefaults (line 33) | @Test
method testBuilder (line 52) | @Test
method testToBuilder (line 85) | @Test
method testAddPlatform_duplicatePlatforms (line 118) | @Test
method testSetPlatforms_emptyPlatformsSet (line 130) | @Test
method createSamplePlan (line 140) | private ContainerBuildPlan createSamplePlan() {
FILE: jib-build-plan/src/test/java/com/google/cloud/tools/jib/api/buildplan/FileEntriesLayerTest.java
class FileEntriesLayerTest (line 30) | public class FileEntriesLayerTest {
method defaultFileEntry (line 32) | private static FileEntry defaultFileEntry(Path source, AbsoluteUnixPat...
method testAddEntryRecursive_defaults (line 40) | @Test
method testAddEntryRecursive_otherFileEntryProperties (line 67) | @Test
FILE: jib-build-plan/src/test/java/com/google/cloud/tools/jib/api/buildplan/FileEntryTest.java
class FileEntryTest (line 25) | public class FileEntryTest {
method testToString (line 27) | @Test
FILE: jib-build-plan/src/test/java/com/google/cloud/tools/jib/api/buildplan/FilePermissionsTest.java
class FilePermissionsTest (line 26) | public class FilePermissionsTest {
method testFromOctalString (line 28) | @Test
method testFromPosixFilePermissions (line 48) | @Test
FILE: jib-build-plan/src/test/java/com/google/cloud/tools/jib/api/buildplan/PortTest.java
class PortTest (line 23) | public class PortTest {
method testTcp (line 25) | @Test
method testUdp (line 32) | @Test
method testParseProtocol (line 39) | @Test
FILE: jib-build-plan/src/test/java/com/google/cloud/tools/jib/api/buildplan/RelativeUnixPathTest.java
class RelativeUnixPathTest (line 24) | public class RelativeUnixPathTest {
method testGet_absolute (line 26) | @Test
method testGet (line 37) | @Test
FILE: jib-build-plan/src/test/java/com/google/cloud/tools/jib/buildplan/UnixPathParserTest.java
class UnixPathParserTest (line 24) | public class UnixPathParserTest {
method testParse (line 26) | @Test
FILE: jib-cli/src/integration-test/java/com/google/cloud/tools/jib/cli/JarCommandTest.java
class JarCommandTest (line 53) | public class JarCommandTest {
method createJars (line 60) | @BeforeClass
method tearDown (line 69) | @After
method testErrorLogging_fileDoesNotExist (line 76) | @Test
method testErrorLogging_directoryGiven (line 88) | @Test
method testStandardJar_explodedMode_toDocker (line 105) | @Test
method testNoDependencyStandardJar_explodedMode_toDocker (line 132) | @Test
method testStandardJar_packagedMode_toDocker (line 159) | @Test
method testNoDependencyStandardJar_packagedMode_toDocker (line 187) | @Test
method testSpringBootLayeredJar_explodedMode (line 215) | @Test
method testSpringBootNonLayeredJar_explodedMode (line 253) | @Test
method testSpringBootJar_packagedMode (line 291) | @Test
method createJarFile (line 326) | public static void createJarFile(
FILE: jib-cli/src/integration-test/java/com/google/cloud/tools/jib/cli/TestProject.java
class TestProject (line 33) | public class TestProject extends TemporaryFolder implements Closeable {
method copyProject (line 36) | private static void copyProject(String projectName, Path destination)
method TestProject (line 58) | public TestProject(String testProjectName) {
method close (line 62) | @Override
method before (line 67) | @Override
method build (line 75) | public void build(String... gradleArguments) throws IOException, Inter...
method getProjectRoot (line 82) | public Path getProjectRoot() {
FILE: jib-cli/src/integration-test/java/com/google/cloud/tools/jib/cli/WarCommandTest.java
class WarCommandTest (line 35) | public class WarCommandTest {
method tearDown (line 41) | @After
method testErrorLogging_fileDoesNotExist (line 48) | @Test
method testErrorLogging_directoryGiven (line 60) | @Test
method testWar_jetty (line 77) | @Test
method testWar_customJettySpecified (line 104) | @Test
method testWar_tomcat (line 128) | @Test
FILE: jib-cli/src/integration-test/resources/jarTest/spring-boot/src/main/java/hello/Application.java
class Application (line 6) | @SpringBootApplication
method main (line 9) | public static void main(String[] args) {
FILE: jib-cli/src/integration-test/resources/jarTest/spring-boot/src/main/java/hello/HelloController.java
class HelloController (line 6) | @RestController
method index (line 9) | @RequestMapping("/")
FILE: jib-cli/src/integration-test/resources/jarTest/standard/HelloWorld.java
class HelloWorld (line 1) | public class HelloWorld {
method main (line 2) | public static void main(String[] args) {
FILE: jib-cli/src/integration-test/resources/jarTest/standard/dep/A.java
class A (line 3) | public class A {
method getResult (line 4) | public static void getResult() {
FILE: jib-cli/src/integration-test/resources/jarTest/standard/dep2/B.java
class B (line 3) | public class B {
method getResult (line 4) | public static void getResult() {
FILE: jib-cli/src/integration-test/resources/warTest/src/main/java/example/HelloWorld.java
class HelloWorld (line 30) | public class HelloWorld extends HttpServlet {
method doGet (line 32) | @Override
FILE: jib-cli/src/main/java/com/google/cloud/tools/jib/cli/ArtifactLayers.java
class ArtifactLayers (line 26) | public class ArtifactLayers {
method ArtifactLayers (line 34) | private ArtifactLayers() {}
method getDirectoryContentsAsLayer (line 47) | public static FileEntriesLayer getDirectoryContentsAsLayer(
FILE: jib-cli/src/main/java/com/google/cloud/tools/jib/cli/ArtifactProcessor.java
type ArtifactProcessor (line 25) | public interface ArtifactProcessor {
method createLayers (line 34) | List<FileEntriesLayer> createLayers() throws IOException;
method computeEntrypoint (line 43) | ImmutableList<String> computeEntrypoint(List<String> jvmFlags) throws ...
method getJavaVersion (line 45) | Integer getJavaVersion();
FILE: jib-cli/src/main/java/com/google/cloud/tools/jib/cli/ArtifactProcessors.java
class ArtifactProcessors (line 42) | public class ArtifactProcessors {
method ArtifactProcessors (line 48) | private ArtifactProcessors() {}
method fromJar (line 60) | public static ArtifactProcessor fromJar(
method fromWar (line 99) | public static ArtifactProcessor fromWar(
method determineJarType (line 122) | private static String determineJarType(Path jarPath) throws IOException {
method determineJavaMajorVersion (line 139) | public static Integer determineJavaMajorVersion(Path jarPath) throws I...
FILE: jib-cli/src/main/java/com/google/cloud/tools/jib/cli/Build.java
class Build (line 42) | @CommandLine.Command(
method getBuildFile (line 88) | @VisibleForTesting
method getTemplateParameters (line 96) | public Map<String, String> getTemplateParameters() {
method call (line 100) | @Override
FILE: jib-cli/src/main/java/com/google/cloud/tools/jib/cli/CacheDirectories.java
class CacheDirectories (line 32) | public class CacheDirectories {
method from (line 48) | public static CacheDirectories from(CommonCliOptions commonCliOptions,...
method getProjectCacheDirectoryFromProject (line 63) | @VisibleForTesting
method CacheDirectories (line 86) | public CacheDirectories(@Nullable Path baseImageCache, Path projectCac...
method getBaseImageCache (line 91) | public Optional<Path> getBaseImageCache() {
method getProjectCache (line 95) | public Path getProjectCache() {
method getApplicationLayersCache (line 99) | public Path getApplicationLayersCache() {
method getExplodedArtifactDirectory (line 103) | public Path getExplodedArtifactDirectory() {
FILE: jib-cli/src/main/java/com/google/cloud/tools/jib/cli/CommonCliOptions.java
class CommonCliOptions (line 33) | public class CommonCliOptions {
class Credentials (line 96) | private static class Credentials {
class SingleUsernamePassword (line 114) | private static class SingleUsernamePassword {
class SeparateCredentials (line 132) | private static class SeparateCredentials {
class ToCredentials (line 142) | private static class ToCredentials {
class FromCredentials (line 156) | private static class FromCredentials {
class ToUsernamePassword (line 170) | private static class ToUsernamePassword {
class FromUsernamePassword (line 188) | private static class FromUsernamePassword {
method getVerbosity (line 256) | public Verbosity getVerbosity() {
method getConsoleOutput (line 260) | public ConsoleOutput getConsoleOutput() {
method isStacktrace (line 264) | public boolean isStacktrace() {
method getHttpTrace (line 268) | public HttpTraceLevel getHttpTrace() {
method isSerialize (line 272) | public boolean isSerialize() {
method getTargetImage (line 276) | public String getTargetImage() {
method getName (line 280) | public String getName() {
method getCredentialHelper (line 290) | public Optional<String> getCredentialHelper() {
method getToCredentialHelper (line 303) | public Optional<String> getToCredentialHelper() {
method getFromCredentialHelper (line 319) | public Optional<String> getFromCredentialHelper() {
method getUsernamePassword (line 334) | public Optional<Credential> getUsernamePassword() {
method getToUsernamePassword (line 350) | public Optional<Credential> getToUsernamePassword() {
method getFromUsernamePassword (line 369) | public Optional<Credential> getFromUsernamePassword() {
method isAllowInsecureRegistries (line 382) | public boolean isAllowInsecureRegistries() {
method isSendCredentialsOverHttp (line 386) | public boolean isSendCredentialsOverHttp() {
method getBaseImageCache (line 395) | public Optional<Path> getBaseImageCache() {
method getProjectCache (line 404) | public Optional<Path> getProjectCache() {
method getAdditionalTags (line 408) | public List<String> getAdditionalTags() {
method getImageJsonPath (line 417) | public Optional<Path> getImageJsonPath() {
method validate (line 422) | public void validate() {
FILE: jib-cli/src/main/java/com/google/cloud/tools/jib/cli/CommonContainerConfigCliOptions.java
class CommonContainerConfigCliOptions (line 36) | public class CommonContainerConfigCliOptions {
method getFrom (line 120) | public Optional<String> getFrom() {
method getExposedPorts (line 129) | public Set<Port> getExposedPorts() {
method getVolumes (line 139) | public Set<AbsoluteUnixPath> getVolumes() {
method getEnvironment (line 146) | public Map<String, String> getEnvironment() {
method getLabels (line 150) | public Map<String, String> getLabels() {
method getUser (line 154) | public Optional<String> getUser() {
method getFormat (line 158) | public Optional<ImageFormat> getFormat() {
method getProgramArguments (line 162) | public List<String> getProgramArguments() {
method getEntrypoint (line 166) | public List<String> getEntrypoint() {
method getCreationTime (line 175) | public Optional<Instant> getCreationTime() {
method isJettyBaseimage (line 189) | public Boolean isJettyBaseimage() throws InvalidImageReferenceException {
FILE: jib-cli/src/main/java/com/google/cloud/tools/jib/cli/ContainerBuilders.java
class ContainerBuilders (line 39) | public class ContainerBuilders {
method ContainerBuilders (line 41) | private ContainerBuilders() {}
method create (line 54) | public static JibContainerBuilder create(
FILE: jib-cli/src/main/java/com/google/cloud/tools/jib/cli/Containerizers.java
class Containerizers (line 42) | public class Containerizers {
method Containerizers (line 44) | private Containerizers() {}
method from (line 56) | public static Containerizer from(
method create (line 67) | private static Containerizer create(CommonCliOptions commonCliOptions,...
method applyConfiguration (line 93) | private static void applyConfiguration(
method applyHandlers (line 116) | private static void applyHandlers(Containerizer containerizer, Console...
FILE: jib-cli/src/main/java/com/google/cloud/tools/jib/cli/Credentials.java
class Credentials (line 27) | public class Credentials {
method Credentials (line 29) | private Credentials() {}
method getToCredentialRetrievers (line 39) | public static List<CredentialRetriever> getToCredentialRetrievers(
method getFromCredentialRetrievers (line 73) | public static List<CredentialRetriever> getFromCredentialRetrievers(
FILE: jib-cli/src/main/java/com/google/cloud/tools/jib/cli/Instants.java
class Instants (line 25) | public class Instants {
method Instants (line 27) | private Instants() {}
method fromMillisOrIso8601 (line 37) | public static Instant fromMillisOrIso8601(String time, String fieldNam...
FILE: jib-cli/src/main/java/com/google/cloud/tools/jib/cli/Jar.java
class Jar (line 44) | @CommandLine.Command(
method call (line 85) | @Override
method getJvmFlags (line 150) | public List<String> getJvmFlags() {
method getMode (line 154) | public ProcessingMode getMode() {
FILE: jib-cli/src/main/java/com/google/cloud/tools/jib/cli/JibCli.java
class JibCli (line 46) | @CommandLine.Command(
method configureHttpLogging (line 58) | static Logger configureHttpLogging(Level level) {
method logTerminatingException (line 71) | static void logTerminatingException(
method newUpdateChecker (line 88) | static Future<Optional<String>> newUpdateChecker(
method finishUpdateChecker (line 102) | static void finishUpdateChecker(
method writeImageJson (line 133) | static void writeImageJson(Optional<Path> imageJsonOutputPath, JibCont...
method main (line 147) | public static void main(String[] args) {
FILE: jib-cli/src/main/java/com/google/cloud/tools/jib/cli/ShortErrorMessageHandler.java
class ShortErrorMessageHandler (line 26) | public class ShortErrorMessageHandler implements IParameterExceptionHand...
method handleParseException (line 28) | @Override
FILE: jib-cli/src/main/java/com/google/cloud/tools/jib/cli/War.java
class War (line 41) | @CommandLine.Command(
method call (line 72) | @Override
method getAppRoot (line 139) | public Optional<AbsoluteUnixPath> getAppRoot() {
FILE: jib-cli/src/main/java/com/google/cloud/tools/jib/cli/buildfile/ArchiveLayerSpec.java
class ArchiveLayerSpec (line 40) | @JsonDeserialize(using = JsonDeserializer.None.class) // required since ...
method ArchiveLayerSpec (line 55) | @JsonCreator
method getName (line 68) | public String getName() {
method getArchive (line 72) | public Path getArchive() {
method getMediaType (line 76) | public Optional<String> getMediaType() {
FILE: jib-cli/src/main/java/com/google/cloud/tools/jib/cli/buildfile/BaseImageSpec.java
class BaseImageSpec (line 36) | public class BaseImageSpec {
method BaseImageSpec (line 46) | @JsonCreator
method getImage (line 56) | public String getImage() {
method getPlatforms (line 60) | public List<PlatformSpec> getPlatforms() {
FILE: jib-cli/src/main/java/com/google/cloud/tools/jib/cli/buildfile/BuildFileSpec.java
class BuildFileSpec (line 66) | public class BuildFileSpec {
method BuildFileSpec (line 109) | @JsonCreator
method getApiVersion (line 163) | public String getApiVersion() {
method getKind (line 167) | public String getKind() {
method getFrom (line 171) | public Optional<BaseImageSpec> getFrom() {
method getCreationTime (line 175) | public Optional<Instant> getCreationTime() {
method getFormat (line 179) | public Optional<ImageFormat> getFormat() {
method getEnvironment (line 183) | public Map<String, String> getEnvironment() {
method getLabels (line 187) | public Map<String, String> getLabels() {
method getVolumes (line 191) | public Set<AbsoluteUnixPath> getVolumes() {
method getExposedPorts (line 195) | public Set<Port> getExposedPorts() {
method getUser (line 199) | public Optional<String> getUser() {
method getWorkingDirectory (line 203) | public Optional<AbsoluteUnixPath> getWorkingDirectory() {
method getEntrypoint (line 207) | public Optional<List<String>> getEntrypoint() {
method getCmd (line 211) | public Optional<List<String>> getCmd() {
method getLayers (line 215) | public Optional<LayersSpec> getLayers() {
FILE: jib-cli/src/main/java/com/google/cloud/tools/jib/cli/buildfile/BuildFiles.java
class BuildFiles (line 42) | public class BuildFiles {
method BuildFiles (line 44) | private BuildFiles() {}
method toBuildFileSpec (line 47) | private static BuildFileSpec toBuildFileSpec(
method toJibContainerBuilder (line 73) | public static JibContainerBuilder toJibContainerBuilder(
method createJibContainerBuilder (line 106) | private static JibContainerBuilder createJibContainerBuilder(
FILE: jib-cli/src/main/java/com/google/cloud/tools/jib/cli/buildfile/CopySpec.java
class CopySpec (line 45) | public class CopySpec {
method CopySpec (line 64) | @JsonCreator
method getSrc (line 83) | public Path getSrc() {
method getDest (line 87) | public AbsoluteUnixPath getDest() {
method isDestEndsWithSlash (line 91) | public boolean isDestEndsWithSlash() {
method getExcludes (line 95) | public List<String> getExcludes() {
method getIncludes (line 99) | public List<String> getIncludes() {
method getProperties (line 103) | public Optional<FilePropertiesSpec> getProperties() {
FILE: jib-cli/src/main/java/com/google/cloud/tools/jib/cli/buildfile/FileLayerSpec.java
class FileLayerSpec (line 41) | @JsonDeserialize(using = JsonDeserializer.None.class) // required since ...
method FileLayerSpec (line 54) | @JsonCreator
method getName (line 66) | public String getName() {
method getFiles (line 70) | public List<CopySpec> getFiles() {
method getProperties (line 74) | public Optional<FilePropertiesSpec> getProperties() {
FILE: jib-cli/src/main/java/com/google/cloud/tools/jib/cli/buildfile/FilePropertiesSpec.java
class FilePropertiesSpec (line 40) | public class FilePropertiesSpec {
method FilePropertiesSpec (line 56) | @JsonCreator
method getFilePermissions (line 78) | public Optional<FilePermissions> getFilePermissions() {
method getDirectoryPermissions (line 82) | public Optional<FilePermissions> getDirectoryPermissions() {
method getUser (line 86) | public Optional<String> getUser() {
method getGroup (line 90) | public Optional<String> getGroup() {
method getTimestamp (line 94) | public Optional<Instant> getTimestamp() {
FILE: jib-cli/src/main/java/com/google/cloud/tools/jib/cli/buildfile/FilePropertiesStack.java
class FilePropertiesStack (line 30) | class FilePropertiesStack {
method FilePropertiesStack (line 41) | public FilePropertiesStack() {
method setDefaults (line 45) | private void setDefaults() {
method push (line 57) | public void push(FilePropertiesSpec filePropertiesSpec) {
method pop (line 65) | public void pop() {
method updateProperties (line 71) | private void updateProperties() {
method getFilePermissions (line 90) | public FilePermissions getFilePermissions() {
method getDirectoryPermissions (line 94) | public FilePermissions getDirectoryPermissions() {
method getModificationTime (line 98) | public Instant getModificationTime() {
method getOwnership (line 102) | public String getOwnership() {
FILE: jib-cli/src/main/java/com/google/cloud/tools/jib/cli/buildfile/LayerSpec.java
type LayerSpec (line 30) | @JsonDeserialize(using = LayerSpec.Deserializer.class)
class Deserializer (line 32) | class Deserializer extends StdDeserializer<LayerSpec> {
method Deserializer (line 34) | public Deserializer() {
method deserialize (line 43) | @Override
FILE: jib-cli/src/main/java/com/google/cloud/tools/jib/cli/buildfile/Layers.java
class Layers (line 39) | class Layers {
method Layers (line 41) | private Layers() {}
method toLayers (line 56) | static List<FileEntriesLayer> toLayers(Path buildRoot, LayersSpec laye...
method toPathMatcher (line 186) | @VisibleForTesting
FILE: jib-cli/src/main/java/com/google/cloud/tools/jib/cli/buildfile/LayersSpec.java
class LayersSpec (line 37) | public class LayersSpec {
method LayersSpec (line 47) | @JsonCreator
method getProperties (line 56) | public Optional<FilePropertiesSpec> getProperties() {
method getEntries (line 60) | public List<LayerSpec> getEntries() {
FILE: jib-cli/src/main/java/com/google/cloud/tools/jib/cli/buildfile/PlatformSpec.java
class PlatformSpec (line 41) | public class PlatformSpec {
method PlatformSpec (line 51) | @JsonCreator
method getArchitecture (line 61) | public String getArchitecture() {
method getOs (line 65) | public String getOs() {
FILE: jib-cli/src/main/java/com/google/cloud/tools/jib/cli/buildfile/Validator.java
class Validator (line 28) | public class Validator {
method Validator (line 30) | private Validator() {}
method checkNotNullAndNotEmpty (line 40) | public static void checkNotNullAndNotEmpty(@Nullable String value, Str...
method checkNullOrNotEmpty (line 53) | public static void checkNullOrNotEmpty(@Nullable String value, String ...
method checkNotNullAndNotEmpty (line 70) | public static void checkNotNullAndNotEmpty(@Nullable Collection<?> val...
method checkNullOrNonNullNonEmptyEntries (line 84) | public static void checkNullOrNonNullNonEmptyEntries(
method checkNullOrNonNullNonEmptyEntries (line 106) | public static void checkNullOrNonNullNonEmptyEntries(
method checkNullOrNonNullEntries (line 133) | public static void checkNullOrNonNullEntries(
method checkEquals (line 154) | public static void checkEquals(
FILE: jib-cli/src/main/java/com/google/cloud/tools/jib/cli/jar/JarFiles.java
class JarFiles (line 33) | public class JarFiles {
method JarFiles (line 35) | private JarFiles() {}
method toJibContainerBuilder (line 51) | public static JibContainerBuilder toJibContainerBuilder(
method getDefaultBaseImage (line 85) | private static String getDefaultBaseImage(ArtifactProcessor processor) {
FILE: jib-cli/src/main/java/com/google/cloud/tools/jib/cli/jar/JarLayers.java
class JarLayers (line 34) | public class JarLayers {
method JarLayers (line 39) | private JarLayers() {}
method getDependenciesLayers (line 41) | static List<FileEntriesLayer> getDependenciesLayers(Path jarPath, Proc...
method addDependency (line 97) | private static void addDependency(
FILE: jib-cli/src/main/java/com/google/cloud/tools/jib/cli/jar/ProcessingMode.java
type ProcessingMode (line 19) | public enum ProcessingMode {
FILE: jib-cli/src/main/java/com/google/cloud/tools/jib/cli/jar/SpringBootExplodedProcessor.java
class SpringBootExplodedProcessor (line 43) | public class SpringBootExplodedProcessor implements ArtifactProcessor {
method SpringBootExplodedProcessor (line 58) | public SpringBootExplodedProcessor(
method createLayers (line 65) | @Override
method computeEntrypoint (line 137) | @Override
method getJavaVersion (line 148) | @Override
method createLayersForLayeredSpringBootJar (line 161) | private static List<FileEntriesLayer> createLayersForLayeredSpringBoot...
method isInListedDirectoryOrIsSameFile (line 207) | private static Predicate<Path> isInListedDirectoryOrIsSameFile(
FILE: jib-cli/src/main/java/com/google/cloud/tools/jib/cli/jar/SpringBootPackagedProcessor.java
class SpringBootPackagedProcessor (line 26) | public class SpringBootPackagedProcessor implements ArtifactProcessor {
method SpringBootPackagedProcessor (line 37) | public SpringBootPackagedProcessor(Path jarPath, Integer jarJavaVersio...
method createLayers (line 42) | @Override
method computeEntrypoint (line 52) | @Override
method getJavaVersion (line 62) | @Override
FILE: jib-cli/src/main/java/com/google/cloud/tools/jib/cli/jar/StandardExplodedProcessor.java
class StandardExplodedProcessor (line 34) | public class StandardExplodedProcessor implements ArtifactProcessor {
method StandardExplodedProcessor (line 47) | public StandardExplodedProcessor(
method createLayers (line 54) | @Override
method computeEntrypoint (line 92) | @Override
method getJavaVersion (line 114) | @Override
FILE: jib-cli/src/main/java/com/google/cloud/tools/jib/cli/jar/StandardPackagedProcessor.java
class StandardPackagedProcessor (line 28) | public class StandardPackagedProcessor implements ArtifactProcessor {
method StandardPackagedProcessor (line 39) | public StandardPackagedProcessor(Path jarPath, Integer jarJavaVersion) {
method createLayers (line 44) | @Override
method computeEntrypoint (line 61) | @Override
method getJavaVersion (line 80) | @Override
FILE: jib-cli/src/main/java/com/google/cloud/tools/jib/cli/logging/CliLogger.java
class CliLogger (line 26) | public class CliLogger {
method CliLogger (line 28) | private CliLogger() {}
method newLogger (line 42) | public static ConsoleLogger newLogger(
method isRichConsole (line 79) | @VisibleForTesting
FILE: jib-cli/src/main/java/com/google/cloud/tools/jib/cli/logging/ConsoleOutput.java
type ConsoleOutput (line 19) | public enum ConsoleOutput {
FILE: jib-cli/src/main/java/com/google/cloud/tools/jib/cli/logging/HttpTraceLevel.java
type HttpTraceLevel (line 21) | public enum HttpTraceLevel {
method HttpTraceLevel (line 28) | private HttpTraceLevel(String value) {
method toJulLevel (line 32) | public Level toJulLevel() {
FILE: jib-cli/src/main/java/com/google/cloud/tools/jib/cli/logging/Verbosity.java
type Verbosity (line 19) | public enum Verbosity {
method Verbosity (line 29) | private Verbosity(int value) {
method value (line 33) | public int value() {
method atLeast (line 37) | public boolean atLeast(Verbosity target) {
FILE: jib-cli/src/main/java/com/google/cloud/tools/jib/cli/war/StandardWarExplodedProcessor.java
class StandardWarExplodedProcessor (line 34) | public class StandardWarExplodedProcessor implements ArtifactProcessor {
method StandardWarExplodedProcessor (line 47) | public StandardWarExplodedProcessor(
method createLayers (line 54) | @Override
method computeEntrypoint (line 120) | @Override
method getJavaVersion (line 125) | @Override
FILE: jib-cli/src/main/java/com/google/cloud/tools/jib/cli/war/WarFiles.java
class WarFiles (line 32) | public class WarFiles {
method WarFiles (line 34) | private WarFiles() {}
method toJibContainerBuilder (line 48) | public static JibContainerBuilder toJibContainerBuilder(
method computeEntrypoint (line 75) | @Nullable
FILE: jib-cli/src/test/java/com/google/cloud/tools/jib/ArtifactProcessorsTest.java
class ArtifactProcessorsTest (line 53) | @RunWith(MockitoJUnitRunner.class)
method testFromJar_standardExploded (line 70) | @Test
method testFromJar_standardPackaged (line 85) | @Test
method testFromJar_springBootPackaged (line 98) | @Test
method testFromJar_springBootExploded (line 111) | @Test
method testFromJar_incompatibleDefaultBaseImage (line 126) | @Test
method testFromJar_incompatibleDefaultBaseImage_baseImageSpecified (line 145) | @Test
method testDetermineJavaMajorVersion_versionNotFound (line 160) | @Test
method testDetermineJavaMajorVersion_invalidClassFile (line 168) | @Test
method testDetermineJavaMajorVersion_emptyClassFile (line 180) | @Test
method testFromWar_noJettyBaseImageAndNoAppRoot (line 190) | @Test
method testFromWar_noJettyBaseImageAndAppRootPresent_success (line 207) | @Test
method testFromWar_jettyBaseImageSpecified_success (line 223) | @Test
FILE: jib-cli/src/test/java/com/google/cloud/tools/jib/api/ContainerizerTestProxy.java
class ContainerizerTestProxy (line 26) | public class ContainerizerTestProxy {
method ContainerizerTestProxy (line 30) | public ContainerizerTestProxy(Containerizer containerizer) {
method getAllowInsecureRegistries (line 34) | public boolean getAllowInsecureRegistries() {
method isOfflineMode (line 38) | public boolean isOfflineMode() {
method getToolName (line 42) | public String getToolName() {
method getToolVersion (line 46) | public String getToolVersion() {
method getAlwaysCacheBaseImage (line 50) | public boolean getAlwaysCacheBaseImage() {
method getDescription (line 54) | public String getDescription() {
method getImageConfiguration (line 58) | public ImageConfiguration getImageConfiguration() {
method getBaseImageLayersCacheDirectory (line 62) | public Path getBaseImageLayersCacheDirectory() {
method getApplicationsLayersCacheDirectory (line 66) | public Path getApplicationsLayersCacheDirectory() throws CacheDirector...
method getAdditionalTags (line 70) | public Set<String> getAdditionalTags() {
FILE: jib-cli/src/test/java/com/google/cloud/tools/jib/api/HttpRequestTester.java
class HttpRequestTester (line 28) | public class HttpRequestTester {
method verifyBody (line 34) | public static void verifyBody(String expectedBody, URL url) throws Int...
method fetchDockerHostForHttpRequest (line 39) | public static String fetchDockerHostForHttpRequest() {
method getContent (line 51) | @Nullable
method HttpRequestTester (line 69) | private HttpRequestTester() {}
FILE: jib-cli/src/test/java/com/google/cloud/tools/jib/api/JibContainerBuilderTestHelper.java
class JibContainerBuilderTestHelper (line 22) | public class JibContainerBuilderTestHelper {
method toBuildContext (line 24) | public static BuildContext toBuildContext(
method JibContainerBuilderTestHelper (line 30) | private JibContainerBuilderTestHelper() {}
FILE: jib-cli/src/test/java/com/google/cloud/tools/jib/cli/BuildTest.java
class BuildTest (line 37) | @RunWith(JUnitParamsRunner.class)
method testParse_missingRequiredParams (line 39) | @Test
method testParse_defaults (line 47) | @Test
method testParse_shortFormParams (line 74) | @Test
method testParse_longFormParams (line 110) | @Test
method testParse_buildFileDefaultForContext (line 159) | @Test
method testParse_credentialHelper (line 169) | @Test
method testParse_toCredentialHelper (line 183) | @Test
method testParse_fromCredentialHelper (line 198) | @Test
method testParse_usernamePassword (line 213) | @Test
method testParse_toUsernamePassword (line 232) | @Test
method testParse_fromUsernamePassword (line 250) | @Test
method testParse_toAndFromUsernamePassword (line 269) | @Test
method testParse_toAndFromCredentialHelper (line 291) | @Test
method testParse_toUsernamePasswordAndFromCredentialHelper (line 309) | @Test
method testParse_toCredentialHelperAndFromUsernamePassword (line 329) | @Test
method usernamePasswordPairs (line 349) | private Object usernamePasswordPairs() {
method testParse_usernameWithoutPassword (line 357) | @Test
method testParse_passwordWithoutUsername (line 369) | @Test
method incompatibleCredentialOptions (line 382) | public String[][] incompatibleCredentialOptions() {
method testParse_incompatibleCredentialOptions (line 398) | @Test
method testValidate_nameMissingFail (line 412) | @Test
method testValidate_pass (line 421) | @Test
FILE: jib-cli/src/test/java/com/google/cloud/tools/jib/cli/CacheDirectoriesTest.java
class CacheDirectoriesTest (line 32) | public class CacheDirectoriesTest {
method testCacheDirectories_defaults (line 36) | @Test
method testCacheDirectories_configuredValuesIgnoresBuildContext (line 56) | @Test
method testCacheDirectories_failIfContextIsNotDirectory (line 75) | @Test
method testGetProjectCacheDirectoryFromProject_sameFileDifferentPaths (line 90) | @Test
method testGetProjectCacheDirectoryFromProject_different (line 104) | @Test
FILE: jib-cli/src/test/java/com/google/cloud/tools/jib/cli/ContainerBuildersTest.java
class ContainerBuildersTest (line 42) | @RunWith(MockitoJUnitRunner.class)
method testCreate_dockerBaseImage (line 49) | @Test
method testCreate_registry (line 65) | @Test
method testCreate_tarBase (line 84) | @Test
method testCreate_platforms (line 99) | @Test
FILE: jib-cli/src/test/java/com/google/cloud/tools/jib/cli/ContainerizersTest.java
class ContainerizersTest (line 45) | public class ContainerizersTest {
method initCaches (line 59) | @Before
method testApplyConfiguration_defaults (line 65) | @Test
method testApplyConfiguration_withValues (line 86) | @Test
method testFrom_dockerDaemonImage (line 110) | @Test
method testFrom_tarImage (line 129) | @Test
method testFrom_registryImage (line 150) | @Test
FILE: jib-cli/src/test/java/com/google/cloud/tools/jib/cli/CredentialsTest.java
class CredentialsTest (line 39) | @RunWith(JUnitParamsRunner.class)
method paramsToNone (line 46) | private String[][] paramsToNone() {
method testGetToCredentialRetriever_none (line 52) | @Test
method paramsFromNone (line 62) | private String[][] paramsFromNone() {
method testGetFromCredentialRetriever_none (line 68) | @Test
method paramsToCredHelper (line 78) | private String[][] paramsToCredHelper() {
method testGetToCredentialRetriever_credHelper (line 87) | @Test
method paramsFromCredHelper (line 98) | private String[][] paramsFromCredHelper() {
method testGetFromCredentialHelper (line 107) | @Test
method paramsToUsernamePassword (line 118) | public Object paramsToUsernamePassword() {
method testGetToUsernamePassword (line 138) | @Test
method paramsFromUsernamePassword (line 153) | public Object paramsFromUsernamePassword() {
method testGetFromUsernamePassword (line 178) | @Test
FILE: jib-cli/src/test/java/com/google/cloud/tools/jib/cli/InstantsTest.java
class InstantsTest (line 24) | public class InstantsTest {
method testFromMillisOrIso8601_millis (line 26) | @Test
method testFromMillisOrIso8601_iso8601 (line 32) | @Test
method testFromMillisOrIso8601_failed (line 38) | @Test
FILE: jib-cli/src/test/java/com/google/cloud/tools/jib/cli/JarTest.java
class JarTest (line 44) | @RunWith(JUnitParamsRunner.class)
method testParse_missingRequiredParams_targetImage (line 47) | @Test
method testParse_missingRequiredParams_jarfile (line 58) | @Test
method testParse_defaults (line 67) | @Test
method testParse_shortFormParams (line 105) | @Test
method testParse_longFormParams (line 129) | @Test
method testParse_credentialHelper (line 170) | @Test
method testParse_toCredentialHelper (line 187) | @Test
method testParse_fromCredentialHelper (line 205) | @Test
method testParse_usernamePassword (line 223) | @Test
method testParse_toUsernamePassword (line 243) | @Test
method testParse_fromUsernamePassword (line 262) | @Test
method testParse_toAndFromUsernamePassword (line 282) | @Test
method testParse_toAndFromCredentialHelper (line 305) | @Test
method testParse_toUsernamePasswordAndFromCredentialHelper (line 324) | @Test
method testParse_toCredentialHelperAndFromUsernamePassword (line 345) | @Test
method usernamePasswordPairs (line 366) | private Object usernamePasswordPairs() {
method testParse_usernameWithoutPassword (line 374) | @Test
method testParse_passwordWithoutUsername (line 392) | @Test
method incompatibleCredentialOptions (line 410) | public String[][] incompatibleCredentialOptions() {
method testParse_incompatibleCredentialOptions (line 426) | @Test
method testParse_from (line 440) | @Test
method testParse_jvmFlags (line 448) | @Test
method testParse_exposedPorts (line 456) | @Test
method testParse_volumes (line 465) | @Test
method testParse_environment (line 475) | @Test
method testParse_labels (line 487) | @Test
method testParse_user (line 499) | @Test
method testParse_imageFormat (line 507) | @Test
method testParse_invalidImageFormat (line 515) | @Test
method testParse_programArguments (line 529) | @Test
method testParse_entrypoint (line 538) | @Test
method testParse_creationTime_milliseconds (line 547) | @Test
method testParse_creationTime_iso8601 (line 556) | @Test
method testParse_mode (line 568) | @Test
method testParse_invalidMode (line 576) | @Test
method testValidate_nameMissingFail (line 590) | @Test
method testValidate_pass (line 601) | @Test
method testIsJetty_noCustomBaseImage (line 610) | @Test
method testIsJetty_nonJetty (line 617) | @Test
method testIsJetty_customJetty (line 625) | @Test
FILE: jib-cli/src/test/java/com/google/cloud/tools/jib/cli/JibCliTest.java
class JibCliTest (line 59) | @RunWith(MockitoJUnitRunner.class)
method testConfigureHttpLogging (line 69) | @Test
method testLogTerminatingException (line 81) | @Test
method testLogTerminatingException_stackTrace (line 90) | @Test
method testNewUpdateChecker_noUpdateCheck (line 102) | @Test
method testFinishUpdateChecker_correctMessageLogged (line 110) | @Test
method testWriteImageJson (line 125) | @Test
FILE: jib-cli/src/test/java/com/google/cloud/tools/jib/cli/WarTest.java
class WarTest (line 43) | @RunWith(JUnitParamsRunner.class)
method testParse_missingRequiredParams_targetImage (line 46) | @Test
method testParse_missingRequiredParams_warfile (line 57) | @Test
method testParse_defaults (line 66) | @Test
method testParse_shortFormParams (line 103) | @Test
method testParse_longFormParams (line 127) | @Test
method testParse_credentialHelper (line 168) | @Test
method testParse_toCredentialHelper (line 185) | @Test
method testParse_fromCredentialHelper (line 203) | @Test
method testParse_usernamePassword (line 221) | @Test
method testParse_toUsernamePassword (line 241) | @Test
method testParse_fromUsernamePassword (line 260) | @Test
method testParse_toAndFromUsernamePassword (line 280) | @Test
method testParse_toAndFromCredentialHelper (line 303) | @Test
method testParse_toUsernamePasswordAndFromCredentialHelper (line 322) | @Test
method testParse_toCredentialHelperAndFromUsernamePassword (line 343) | @Test
method usernamePasswordPairs (line 364) | private Object usernamePasswordPairs() {
method testParse_usernameWithoutPassword (line 372) | @Test
method testParse_passwordWithoutUsername (line 390) | @Test
method incompatibleCredentialOptions (line 408) | public String[][] incompatibleCredentialOptions() {
method testParse_incompatibleCredentialOptions (line 424) | @Test
method testParse_from (line 438) | @Test
method testParse_appRoot (line 446) | @Test
method testParse_exposedPorts (line 454) | @Test
method testParse_volumes (line 463) | @Test
method testParse_environment (line 473) | @Test
method testParse_labels (line 485) | @Test
method testParse_user (line 497) | @Test
method testParse_imageFormat (line 505) | @Test
method testParse_invalidImageFormat (line 513) | @Test
method testParse_programArguments (line 527) | @Test
method testParse_entrypoint (line 536) | @Test
method testParse_creationTime_milliseconds (line 545) | @Test
method testParse_creationTime_iso8601 (line 554) | @Test
method testValidate_nameMissingFail (line 566) | @Test
method testValidate_pass (line 577) | @Test
method testIsJetty_noCustomBaseImage (line 586) | @Test
method testIsJetty_nonJetty (line 593) | @Test
method testIsJetty_customJetty (line 601) | @Test
FILE: jib-cli/src/test/java/com/google/cloud/tools/jib/cli/buildfile/ArchiveLayerSpecTest.java
class ArchiveLayerSpecTest (line 29) | public class ArchiveLayerSpecTest {
method testArchiveLayerSpec_full (line 33) | @Test
method testArchiveLayerSpec_nameRequired (line 44) | @Test
method testArchiveLayerSpec_nameNonNull (line 57) | @Test
method testArchiveLayerSpec_nameNonEmpty (line 70) | @Test
method testArchiveLayerSpec_archiveRequired (line 86) | @Test
method testArchiveLayerSpec_archiveNonNull (line 99) | @Test
method testArchiveLayerSpec_archiveNonEmpty (line 112) | @Test
method testArchiveLayerSpec_mediaTypeNonEmpty (line 126) | @Test
FILE: jib-cli/src/test/java/com/google/cloud/tools/jib/cli/buildfile/BaseImageSpecTest.java
class BaseImageSpecTest (line 29) | public class BaseImageSpecTest {
method testBaseImageSpec_full (line 33) | @Test
method testBaseImageSpec_imageRequired (line 47) | @Test
method testBaseImageSpec_imageNotNull (line 62) | @Test
method testBaseImageSpec_imageNotEmpty (line 78) | @Test
method testBaseImageSpec_nullCollections (line 95) | @Test
method testBaseImageSpec_platformsNoNullEntries (line 103) | @Test
FILE: jib-cli/src/test/java/com/google/cloud/tools/jib/cli/buildfile/BuildFileSpecTest.java
class BuildFileSpecTest (line 38) | @RunWith(JUnitParamsRunner.class)
method testBuildFileSpec_full (line 43) | @Test
method testBuildFileSpec_apiVersionRequired (line 92) | @Test
method testBuildFileSpec_apiVersionNotNull (line 104) | @Test
method testBuildFileSpec_apiVersionNotEmpty (line 114) | @Test
method testBuildFileSpec_kindRequired (line 126) | @Test
method testBuildFileSpec_kindMustBeBuildFile (line 136) | @Test
method testBuildFileSpec_kindNotNull (line 148) | @Test
method testBuildFileSpec_nullCollections (line 158) | @Test
method testBuildFileSpec_noNullEntries (line 172) | @Test
method testBuildFileSpec_noEmptyEntries (line 185) | @Test
method testBuildFileSpec_emptyListOkay (line 198) | @Test
method testBuildFileSpec_nullOkay (line 206) | @Test
method testBuildFileSpec_noEmptyValues (line 226) | @Test
method invalidMapEntries (line 238) | @SuppressWarnings("unused")
method testBuildFileSpec_invalidMapEntries (line 250) | @Test
method testBuildFileSpec_yamlNullKeysPass (line 264) | @Test
method testBuildFileSpec_emptyMapOkay (line 273) | @Test
FILE: jib-cli/src/test/java/com/google/cloud/tools/jib/cli/buildfile/BuildFilesTest.java
class BuildFilesTest (line 53) | public class BuildFilesTest {
method setUp (line 62) | @Before
method testToJibContainerBuilder_allProperties (line 67) | @Test
method testToJibContainerBuilder_requiredProperties (line 109) | @Test
method testToBuildFileSpec_withTemplating (line 133) | @Test
method testToBuildFileSpec_failWithMissingTemplateVariable (line 163) | @Test
method testToBuildFileSpec_templateMultiLineBehavior (line 179) | @Test
method testToBuildFileSpec_alternativeRootContext (line 194) | @Test
FILE: jib-cli/src/test/java/com/google/cloud/tools/jib/cli/buildfile/CopySpecTest.java
class CopySpecTest (line 35) | @RunWith(JUnitParamsRunner.class)
method testCopySpec_full (line 40) | @Test
method testCopySpec_required (line 61) | @Test
method testCopySpec_destEndsWithSlash (line 73) | @Test
method testCopySpec_destDoesNotEndWithSlash (line 82) | @Test
method testCopySpec_nullEmptyCheck (line 91) | @Test
method testCopySpec_nullCollections (line 105) | @Test
method testCopySpec_noNullEntries (line 114) | @Test
method testCopySpec_noEmptyEntries (line 128) | @Test
method testCopySpec_emptyOkay (line 141) | @Test
method testCopySpec_nullOkay (line 149) | @Test
FILE: jib-cli/src/test/java/com/google/cloud/tools/jib/cli/buildfile/FileLayerSpecTest.java
class FileLayerSpecTest (line 31) | public class FileLayerSpecTest {
method testFileLayerSpec_full (line 35) | @Test
method testFileLayerSpec_nameRequired (line 52) | @Test
method testFileLayerSpec_nameNotNull (line 65) | @Test
method testFileLayerSpec_nameNotEmpty (line 78) | @Test
method testFileLayerSpec_filesRequired (line 92) | @Test
method testFileLayerSpec_filesNotNull (line 105) | @Test
method testFileLayerSpec_filesNotEmpty (line 118) | @Test
FILE: jib-cli/src/test/java/com/google/cloud/tools/jib/cli/buildfile/FilePropertiesSpecTest.java
class FilePropertiesSpecTest (line 35) | @RunWith(JUnitParamsRunner.class)
method testFilePropertiesSpec_full (line 40) | @Test
method testFilePropertiesSpec_badFilePermissions (line 58) | @Test
method testFilePropertiesSpec_badDirectoryPermissions (line 71) | @Test
method testFilePropertiesSpec_timestampSpecIso8601 (line 84) | @Test
method testFilePropertiesSpec_badTimestamp (line 92) | @Test
method testFilePropertiesSpec_failOnUnknown (line 106) | @Test
method testFilePropertiesSpec_noEmptyValues (line 117) | @Test
method testFilePropertiesSpec_nullOkay (line 131) | @Test
FILE: jib-cli/src/test/java/com/google/cloud/tools/jib/cli/buildfile/FilePropertiesStackTest.java
class FilePropertiesStackTest (line 24) | public class FilePropertiesStackTest {
method testDefaults (line 26) | @Test
method testPush_simple (line 37) | @Test
method testPush_stacking (line 50) | @Test
method testPush_tooMany (line 65) | @Test
method testPop_toZero (line 81) | @Test
method testPop_toOlderState (line 95) | @Test
method testPop_nothingToPop (line 111) | @Test
method testGetOwnership_onlyUser (line 123) | @Test
method testGetOwnership_onlyGroup (line 131) | @Test
method testGetOwnership_userAndGroup (line 139) | @Test
method testGetOwnership_noUserNoGroup (line 147) | @Test
FILE: jib-cli/src/test/java/com/google/cloud/tools/jib/cli/buildfile/LayerSpecTest.java
class LayerSpecTest (line 28) | public class LayerSpecTest {
method deserialize_toFileLayer (line 32) | @Test
method deserialize_toArchiveLayer (line 44) | @Test
method deserialize_error (line 52) | @Test
method deserialize_nameMissing (line 66) | @Test
FILE: jib-cli/src/test/java/com/google/cloud/tools/jib/cli/buildfile/LayersSpecTest.java
class LayersSpecTest (line 30) | public class LayersSpecTest {
method testLayersSpec_full (line 34) | @Test
method testLayersSpec_entriesRequired (line 50) | @Test
method testLayersSpec_entriesNotNull (line 65) | @Test
method testLayersSpec_entriesNotEmpty (line 81) | @Test
FILE: jib-cli/src/test/java/com/google/cloud/tools/jib/cli/buildfile/LayersTest.java
class LayersTest (line 40) | public class LayersTest {
method parseLayers (line 44) | public static List<FileEntriesLayer> parseLayers(Path testDir, int exp...
method getLayersTestRoot (line 58) | private static Path getLayersTestRoot(String testName) throws URISynta...
method testToLayers_properties (line 62) | @Test
method testToLayers_includeExcludes (line 96) | @Test
method testToLayers_file (line 201) | @Test
method testToLayers_fileWithIncludes (line 214) | @Test
method testToLayers_fileWithExcludes (line 226) | @Test
method newEntry (line 238) | private static FileEntry newEntry(
method checkLayer (line 253) | private static void checkLayer(
method testToLayers_pathDoesNotExist (line 284) | @Test
method testToLayers_archiveLayersNotSupported (line 298) | @Test
method testToLayers_writeToRoot (line 309) | @Test
FILE: jib-cli/src/test/java/com/google/cloud/tools/jib/cli/buildfile/PlatformSpecTest.java
class PlatformSpecTest (line 28) | public class PlatformSpecTest {
method testPlatformSpec_full (line 32) | @Test
method testPlatformSpec_osRequired (line 41) | @Test
method testPlatformSpec_osNotNull (line 54) | @Test
method testPlatformSpec_osNotEmpty (line 67) | @Test
method testPlatformSpec_architectureRequired (line 80) | @Test
method testPlatformSpec_architectureNotNull (line 94) | @Test
method testPlatformSpec_architectureNotEmpty (line 107) | @Test
FILE: jib-cli/src/test/java/com/google/cloud/tools/jib/cli/buildfile/ValidatorTest.java
class ValidatorTest (line 30) | public class ValidatorTest {
method testCheckNotNullAndNotEmpty_stringPass (line 32) | @Test
method testCheckNotNullAndNotEmpty_stringFailNull (line 38) | @Test
method testCheckNotNullAndNotEmpty_stringFailEmpty (line 48) | @Test
method testCheckNullOrNotEmpty_valuePass (line 58) | @Test
method testCheckNullOrNotEmpty_nullPass (line 63) | @Test
method testCheckNullOrNotEmpty_fail (line 68) | @Test
method testCheckNotEmpty_collectionPass (line 78) | @Test
method testCheckNotEmpty_collectionFailNull (line 84) | @Test
method testCheckNotEmpty_collectionFailEmpty (line 94) | @Test
method testCheckNullOrNonNullNonEmptyEntries_nullMapPass (line 104) | @Test
method testCheckNullOrNonNullNonEmptyEntries_emptyMapPass (line 110) | @Test
method testCheckNullOrNonNullNonEmptyEntries_mapWithValuesPass (line 116) | @Test
method testCheckNullOrNonNullNonEmptyEntries_mapNullKeyFail (line 123) | @Test
method testCheckNullOrNonNullNonEmptyEntries_mapEmptyKeyFail (line 133) | @Test
method testCheckNullOrNonNullNonEmptyEntries_mapNullValueFail (line 143) | @Test
method testCheckNullOrNonNullNonEmptyEntries_mapEmptyValueFail (line 153) | @Test
method testCheckNullOrNonNullNonEmptyEntries_nullPass (line 163) | @Test
method testCheckNullOrNonNullNonEmptyEntries_emptyPass (line 169) | @Test
method testCheckNullNonNullNonEmptyEntries_valuesPass (line 175) | @Test
method testCheckNullNonNullNonEmptyEntries_nullValueFail (line 181) | @Test
method testCheckNullOrNonNullNonEmptyEntries_emptyValueFail (line 191) | @Test
method testCheckNullOrNonNullEntries_nullPass (line 201) | @Test
method testCheckNullOrNonNullEntries_emptyPass (line 207) | @Test
method testCheckNullOrNonNullEntries_valuesPass (line 213) | @Test
method testCheckNullOrNonNullEntries_nullFail (line 219) | @Test
method testCheckEquals_pass (line 230) | @Test
method testCheckEquals_failsNull (line 236) | @Test
method testCheckEquals_failsNotEquals (line 246) | @Test
FILE: jib-cli/src/test/java/com/google/cloud/tools/jib/cli/jar/JarFilesTest.java
class JarFilesTest (line 53) | @RunWith(JUnitParamsRunner.class)
method testToJibContainer_defaultBaseImage (line 67) | @Test
method testToJibContainerBuilder_explodedStandard_basicInfo (line 93) | @Test
method testToJibContainerBuilder_packagedStandard_basicInfo (line 144) | @Test
method testToJibContainerBuilder_explodedLayeredSpringBoot_basicInfo (line 192) | @Test
method testToJibContainerBuilder_packagedSpringBoot_basicInfo (line 244) | @Test
method testToJibContainerBuilder_optionalParameters (line 293) | @Test
FILE: jib-cli/src/test/java/com/google/cloud/tools/jib/cli/jar/SpringBootExplodedProcessorTest.java
class SpringBootExplodedProcessorTest (line 38) | public class SpringBootExplodedProcessorTest {
method testCreateLayers_layered_allListed (line 50) | @Test
method testCreateLayers_layered_singleEmptyLayerListed (line 113) | @Test
method testCreateLayers_layered_allEmptyLayersListed (line 169) | @Test
method testCreateLayers_nonLayered (line 188) | @Test
method testComputeEntrypoint (line 241) | @Test
method testComputeEntrypoint_withJvmFlags (line 252) | @Test
method testGetJavaVersion (line 265) | @Test
FILE: jib-cli/src/test/java/com/google/cloud/tools/jib/cli/jar/SpringBootPackagedProcessorTest.java
class SpringBootPackagedProcessorTest (line 32) | public class SpringBootPackagedProcessorTest {
method testCreateLayers (line 37) | @Test
method testComputeEntrypoint (line 55) | @Test
method testComputeEntrypoint_jvmFlag (line 68) | @Test
method testGetJavaVersion (line 81) | @Test
FILE: jib-cli/src/test/java/com/google/cloud/tools/jib/cli/jar/StandardExplodedProcessorTest.java
class StandardExplodedProcessorTest (line 38) | public class StandardExplodedProcessorTest {
method testCreateLayers_emptyJar (line 52) | @Test
method testCreateLayers_withClassPathInManifest (line 70) | @Test
method testCreateLayers_withoutClassPathInManifest (line 132) | @Test
method testCreateLayers_withoutClassPathInManifest_containsOnlyClasses (line 176) | @Test
method testCreateLayers_dependencyDoesNotExist (line 207) | @Test
method testComputeEntrypoint_noMainClass (line 225) | @Test
method testComputeEntrypoint_withMainClass (line 243) | @Test
method testComputeEntrypoint_withMainClass_jvmFlags (line 258) | @Test
method testGetJavaVersion (line 275) | @Test
FILE: jib-cli/src/test/java/com/google/cloud/tools/jib/cli/jar/StandardPackagedProcessorTest.java
class StandardPackagedProcessorTest (line 36) | public class StandardPackagedProcessorTest {
method testCreateLayers_emptyJar (line 44) | @Test
method testCreateLayers_withClassPathInManifest (line 61) | @Test
method testCreateLayers_dependencyDoesNotExist (line 101) | @Test
method testComputeEntrypoint_noMainClass (line 118) | @Test
method testComputeEntrypoint_withMainClass (line 136) | @Test
method testComputeEntrypoint_withMainClass_jvmFlags (line 150) | @Test
method testGetJavaVersion (line 166) | @Test
FILE: jib-cli/src/test/java/com/google/cloud/tools/jib/cli/logging/CliLoggerTest.java
class CliLoggerTest (line 36) | @RunWith(MockitoJUnitRunner.class)
method createLoggerAndSendMessages (line 47) | private void createLoggerAndSendMessages(Verbosity verbosity, ConsoleO...
method testLog_quiet_plainConsole (line 63) | @Test
method testLog_error_plainConsole (line 71) | @Test
method testLog_warn_plainConsole (line 80) | @Test
method testLog_lifecycle_plainConsole (line 90) | @Test
method testLog_info_plainConsole (line 102) | @Test
method testLog_debug_plainConsole (line 115) | @Test
method testLog_quiet_richConsole (line 129) | @Test
method testLog_error_richConsole (line 137) | @Test
method testLog_warn_richConsole (line 146) | @Test
method testLog_lifecycle_richConsole (line 156) | @Test
method testLog_info_richConsole (line 167) | @Test
method testLog_debug_richConsole (line 179) | @Test
method testIsRichConsole_true (line 192) | @Test
method testIsRichConsole_falseIfHttpTrace (line 197) | @Test
method testIsRichConsole_false (line 202) | @Test
method testIsRightConsole_autoWindowsTrue (line 207) | @Test
method testIsRightConsole_autoDumbTermFalse (line 213) | @Test
FILE: jib-cli/src/test/java/com/google/cloud/tools/jib/cli/war/StandardWarExplodedProcessorTest.java
class StandardWarExplodedProcessorTest (line 44) | public class StandardWarExplodedProcessorTest {
method testCreateLayers_allLayers_correctExtractionPaths (line 53) | @Test
method testCreateLayers_webInfLibDoesNotExist_correctExtractionPaths (line 93) | @Test
method testCreateLayers_webInfClassesDoesNotExist_correctExtractionPaths (line 121) | @Test
method testComputeEntrypoint (line 151) | @Test
method testGetJavaVersion (line 164) | @Test
method zipUpDirectory (line 175) | private static Path zipUpDirectory(Path sourceRoot, Path targetZip) th...
FILE: jib-cli/src/test/java/com/google/cloud/tools/jib/cli/war/WarFilesTest.java
class WarFilesTest (line 46) | @RunWith(MockitoJUnitRunner.class)
method testToJibContainerBuilder_explodedStandard_basicInfo (line 54) | @Test
method testToJibContainerBuilder_optionalParameters (line 91) | @Test
method testToJibContainerBuilder_nonJettyBaseImageSpecifiedAndNoEntrypoint (line 135) | @Test
method testToJibContainerBuilder_noProgramArgumentsSpecified (line 150) | @Test
FILE: jib-core/src/integration-test/java/com/google/cloud/tools/jib/Command.java
class Command (line 30) | public class Command {
method Command (line 36) | public Command(String... command) {
method Command (line 41) | public Command(List<String> command) {
method setWorkingDir (line 45) | public Command setWorkingDir(Path workingDir) {
method run (line 51) | public String run() throws IOException, InterruptedException {
method run (line 56) | public String run(@Nullable byte[] stdin) throws IOException, Interrup...
FILE: jib-core/src/integration-test/java/com/google/cloud/tools/jib/IntegrationTestingConfiguration.java
class IntegrationTestingConfiguration (line 23) | public class IntegrationTestingConfiguration {
method getTestRepositoryLocation (line 25) | public static String getTestRepositoryLocation() {
method IntegrationTestingConfiguration (line 40) | private IntegrationTestingConfiguration() {}
FILE: jib-core/src/integration-test/java/com/google/cloud/tools/jib/api/ContainerizerIntegrationTest.java
class ContainerizerIntegrationTest (line 54) | public class ContainerizerIntegrationTest {
class ProgressChecker (line 63) | private static class ProgressChecker {
method checkCompletion (line 75) | private void checkCompletion() {
method setUp (line 90) | @BeforeClass
method makeLayerConfiguration (line 103) | private static FileEntriesLayer makeLayerConfiguration(
method assertDockerInspect (line 116) | private static void assertDockerInspect(String imageReference)
method assertLayerSize (line 140) | private static void assertLayerSize(int expected, String imageReference)
method testSteps_forBuildToDockerRegistry (line 152) | @Test
method testSteps_forBuildToDockerRegistry_multipleTags (line 201) | @Test
method testSteps_forBuildToDockerRegistry_skipExistingDigest (line 231) | @Test
method testBuildToDockerRegistry_dockerHubBaseImage (line 277) | @Test
method testBuildToDockerDaemon_multipleTags (line 294) | @Test
method testBuildTarball (line 319) | @Test
method buildImage (line 337) | private JibContainer buildImage(
FILE: jib-core/src/integration-test/java/com/google/cloud/tools/jib/api/JibIntegrationTest.java
class JibIntegrationTest (line 50) | public class JibIntegrationTest {
method pullAndRunBuiltImage (line 89) | private static String pullAndRunBuiltImage(String imageReference)
method setUpClass (line 95) | @BeforeClass
method setUp (line 100) | @Before
method tearDown (line 105) | @After
method testBasic_helloWorld (line 113) | @Test
method testBasic_dockerDaemonBaseImage (line 130) | @Test
method testBasic_dockerDaemonBaseImageToDockerDaemon (line 147) | @Test
method testBasic_tarBaseImage_dockerSavedCommand (line 161) | @Test
method testBasic_tarBaseImage_dockerSavedFile (line 181) | @Test
method testBasic_tarBaseImage_jibImage (line 200) | @Test
method testBasic_tarBaseImage_jibImageToDockerDaemon (line 224) | @Test
method testScratch_defaultPlatform (line 244) | @Test
method testScratch_singlePlatform (line 267) | @Test
method testScratch_multiPlatform (line 291) | @Test
method testBasic_jibImageToDockerDaemon (line 316) | @Test
method testDistroless_ociManifest (line 330) | @Test
method testOffline (line 357) | @Test
method testProvidedExecutorNotDisposed (line 408) | @Test
method testManifestListReferenceByShaDoesNotFail (line 425) | @Test
FILE: jib-core/src/integration-test/java/com/google/cloud/tools/jib/api/JibMultiPlatformIntegrationTest.java
class JibMultiPlatformIntegrationTest (line 32) | public class JibMultiPlatformIntegrationTest {
method tearDown (line 40) | @After
method testBasic_jibImageToDockerDaemon_arm64 (line 48) | @Test
method testBasicMultiPlatform_toDockerDaemon_pickFirstPlatformWhenNoMatchingImage (line 69) | @Test
method testBasicMultiPlatform_toDockerDaemon (line 91) | @Test
FILE: jib-core/src/integration-test/java/com/google/cloud/tools/jib/api/ReproducibleImageTest.java
class ReproducibleImageTest (line 55) | public class ReproducibleImageTest {
method createImage (line 61) | @BeforeClass
method testTarballStructure (line 91) | @Test
method testManifest (line 113) | @Test
method testConfiguration (line 122) | @Test
method testImageLayout (line 133) | @Test
method testAllFileAndDirectories (line 151) | @Test
method testTimestampsEpochPlus1s (line 158) | @Test
method testPermissions (line 167) | @Test
method testNoImplicitParentDirectories (line 181) | @Test
method testFileOrdering (line 203) | @Test
method layerEntriesDo (line 215) | private void layerEntriesDo(BiConsumer<String, TarArchiveEntry> layerC...
method extractFromTarFileAsString (line 236) | private static String extractFromTarFileAsString(File tarFile, String ...
FILE: jib-core/src/integration-test/java/com/google/cloud/tools/jib/registry/BearerAuthenticationIntegrationTest.java
class BearerAuthenticationIntegrationTest (line 26) | public class BearerAuthenticationIntegrationTest {
method testGetRegistryAuthenticator (line 30) | @Test
FILE: jib-core/src/integration-test/java/com/google/cloud/tools/jib/registry/BlobCheckerIntegrationTest.java
class BlobCheckerIntegrationTest (line 30) | public class BlobCheckerIntegrationTest {
method testCheck_exists (line 34) | @Test
method testCheck_doesNotExist (line 49) | @Test
FILE: jib-core/src/integration-test/java/com/google/cloud/tools/jib/registry/BlobPullerIntegrationTest.java
class BlobPullerIntegrationTest (line 35) | public class BlobPullerIntegrationTest {
method testPull (line 39) | @Test
method testPull_unknownBlob (line 68) | @Test
FILE: jib-core/src/integration-test/java/com/google/cloud/tools/jib/registry/BlobPusherIntegrationTest.java
class BlobPusherIntegrationTest (line 32) | public class BlobPusherIntegrationTest {
method testPush (line 40) | @Test
FILE: jib-core/src/integration-test/java/com/google/cloud/tools/jib/registry/LocalRegistry.java
class LocalRegistry (line 41) | public class LocalRegistry extends ExternalResource {
method LocalRegistry (line 50) | public LocalRegistry(int port) {
method LocalRegistry (line 54) | public LocalRegistry(int port, String username, String password) {
method before (line 61) | @Override
method after (line 66) | @Override
method start (line 72) | public void start() throws IOException, InterruptedException {
method stop (line 115) | public void stop() {
method pull (line 132) | public void pull(String from) throws IOException, InterruptedException {
method pullAndPushToLocal (line 146) | public void pullAndPushToLocal(String from, String to) throws IOExcept...
method login (line 154) | private void login() throws IOException, InterruptedException {
method logout (line 161) | private void logout() throws IOException, InterruptedException {
method waitUntilReady (line 167) | private void waitUntilReady() throws InterruptedException, MalformedUR...
FILE: jib-core/src/integration-test/java/com/google/cloud/tools/jib/registry/ManifestCheckerIntegrationTest.java
class ManifestCheckerIntegrationTest (line 31) | public class ManifestCheckerIntegrationTest {
method testExistingManifest (line 43) | @Test
method testNonExistingManifest (line 56) | @Test
FILE: jib-core/src/integration-test/java/com/google/cloud/tools/jib/registry/ManifestPullerIntegrationTest.java
class ManifestPullerIntegrationTest (line 37) | public class ManifestPullerIntegrationTest {
method setUp (line 59) | @BeforeClass
method testPull_v21 (line 66) | @Test
method testPull_v22 (line 79) | @Test
method testPull_ociManifest (line 94) | @Test
method testPull_v22ManifestList (line 109) | @Test
method testPull_ociIndex (line 131) | @Test
method testPull_unknownManifest (line 151) | @Test
FILE: jib-core/src/integration-test/java/com/google/cloud/tools/jib/registry/ManifestPusherIntegrationTest.java
class ManifestPusherIntegrationTest (line 37) | public class ManifestPusherIntegrationTest {
method testPush_missingBlobs (line 45) | @Test
method testPush (line 67) | @Test
FILE: jib-core/src/integration-test/java/com/google/cloud/tools/jib/registry/credentials/DockerCredentialHelperIntegrationTest.java
class DockerCredentialHelperIntegrationTest (line 32) | public class DockerCredentialHelperIntegrationTest {
method testRetrieveGcr (line 38) | @Test
method testRetrieve_nonexistentCredentialHelper (line 53) | @Test
method testRetrieve_nonexistentServerUrl (line 69) | @Test
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/ProjectInfo.java
class ProjectInfo (line 20) | public class ProjectInfo {
method ProjectInfo (line 28) | private ProjectInfo() {}
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/api/CacheDirectoryCreationException.java
class CacheDirectoryCreationException (line 20) | public class CacheDirectoryCreationException extends Exception {
method CacheDirectoryCreationException (line 24) | public CacheDirectoryCreationException(Throwable cause) {
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/api/Containerizer.java
class Containerizer (line 48) | public class Containerizer {
method to (line 74) | public static Containerizer to(RegistryImage registryImage) {
method to (line 93) | public static Containerizer to(DockerDaemonImage dockerDaemonImage) {
method to (line 110) | public static Containerizer to(TarImage tarImage) {
method to (line 135) | public static Containerizer to(DockerClient dockerClient, DockerDaemon...
method Containerizer (line 164) | private Containerizer(
method withAdditionalTag (line 187) | public Containerizer withAdditionalTag(String tag) {
method setExecutorService (line 200) | public Containerizer setExecutorService(@Nullable ExecutorService exec...
method setBaseImageLayersCache (line 214) | public Containerizer setBaseImageLayersCache(Path cacheDirectory) {
method setApplicationLayersCache (line 227) | public Containerizer setApplicationLayersCache(Path cacheDirectory) {
method addEventHandler (line 244) | public <E extends JibEvent> Containerizer addEventHandler(
method addEventHandler (line 257) | public Containerizer addEventHandler(Consumer<JibEvent> eventConsumer) {
method setAllowInsecureRegistries (line 268) | public Containerizer setAllowInsecureRegistries(boolean allowInsecureR...
method setOfflineMode (line 281) | public Containerizer setOfflineMode(boolean offline) {
method setToolName (line 297) | public Containerizer setToolName(String toolName) {
method setToolVersion (line 310) | public Containerizer setToolVersion(@Nullable String toolVersion) {
method setAlwaysCacheBaseImage (line 324) | public Containerizer setAlwaysCacheBaseImage(boolean alwaysCacheBaseIm...
method addRegistryMirrors (line 337) | public Containerizer addRegistryMirrors(String registry, List<String> ...
method getAdditionalTags (line 342) | Set<String> getAdditionalTags() {
method getRegistryMirrors (line 346) | ListMultimap<String, String> getRegistryMirrors() {
method getExecutorService (line 350) | Optional<ExecutorService> getExecutorService() {
method getBaseImageLayersCacheDirectory (line 354) | Path getBaseImageLayersCacheDirectory() {
method getApplicationLayersCacheDirectory (line 358) | Path getApplicationLayersCacheDirectory() throws CacheDirectoryCreatio...
method buildEventHandlers (line 372) | EventHandlers buildEventHandlers() {
method getAllowInsecureRegistries (line 376) | boolean getAllowInsecureRegistries() {
method isOfflineMode (line 380) | boolean isOfflineMode() {
method getToolName (line 384) | String getToolName() {
method getToolVersion (line 388) | @Nullable
method getAlwaysCacheBaseImage (line 393) | boolean getAlwaysCacheBaseImage() {
method getDescription (line 397) | String getDescription() {
method getImageConfiguration (line 401) | ImageConfiguration getImageConfiguration() {
method run (line 405) | BuildResult run(BuildContext buildContext) throws ExecutionException, ...
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/api/Credential.java
class Credential (line 22) | public class Credential {
method from (line 34) | public static Credential from(String username, String password) {
method Credential (line 41) | private Credential(String username, String password) {
method getUsername (line 51) | public String getUsername() {
method getPassword (line 60) | public String getPassword() {
method isOAuth2RefreshToken (line 69) | public boolean isOAuth2RefreshToken() {
method equals (line 73) | @Override
method hashCode (line 85) | @Override
method toString (line 90) | @Override
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/api/CredentialRetriever.java
type CredentialRetriever (line 23) | @FunctionalInterface
method retrieve (line 37) | Optional<Credential> retrieve() throws CredentialRetrievalException;
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/api/DescriptorDigest.java
class DescriptorDigest (line 33) | @JsonSerialize(using = DescriptorDigestSerializer.class)
method fromHash (line 57) | public static DescriptorDigest fromHash(String hash) throws DigestExce...
method fromDigest (line 72) | public static DescriptorDigest fromDigest(String digest) throws Digest...
method DescriptorDigest (line 82) | private DescriptorDigest(String hash) {
method getHash (line 86) | public String getHash() {
method toString (line 90) | @Override
method hashCode (line 96) | @Override
method equals (line 102) | @Override
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/api/DockerClient.java
type DockerClient (line 25) | public interface DockerClient {
method supported (line 33) | boolean supported(Map<String, String> parameters);
method load (line 46) | String load(ImageTarball imageTarball, Consumer<Long> writtenByteCount...
method save (line 60) | void save(ImageReference imageReference, Path outputPath, Consumer<Lon...
method inspect (line 71) | ImageDetails inspect(ImageReference imageReference) throws IOException...
method info (line 80) | default DockerInfoDetails info() throws IOException, InterruptedExcept...
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/api/DockerDaemonImage.java
class DockerDaemonImage (line 25) | public class DockerDaemonImage {
method named (line 34) | public static DockerDaemonImage named(ImageReference imageReference) {
method named (line 46) | public static DockerDaemonImage named(String imageReference)
method DockerDaemonImage (line 56) | private DockerDaemonImage(ImageReference imageReference) {
method setDockerExecutable (line 66) | public DockerDaemonImage setDockerExecutable(Path dockerExecutable) {
method setDockerEnvironment (line 77) | public DockerDaemonImage setDockerEnvironment(Map<String, String> dock...
method getImageReference (line 82) | ImageReference getImageReference() {
method getDockerExecutable (line 86) | Path getDockerExecutable() {
method getDockerEnvironment (line 90) | Map<String, String> getDockerEnvironment() {
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/api/DockerInfoDetails.java
class DockerInfoDetails (line 24) | @JsonIgnoreProperties(ignoreUnknown = true)
method getOsType (line 33) | public String getOsType() {
method getArchitecture (line 37) | public String getArchitecture() {
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/api/ImageDetails.java
type ImageDetails (line 22) | public interface ImageDetails {
method getSize (line 24) | long getSize();
method getImageId (line 26) | DescriptorDigest getImageId() throws DigestException;
method getDiffIds (line 28) | List<DescriptorDigest> getDiffIds() throws DigestException;
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/api/ImageReference.java
class ImageReference (line 36) | public class ImageReference {
method parse (line 97) | public static ImageReference parse(String reference) throws InvalidIma...
method of (line 165) | public static ImageReference of(
method of (line 184) | public static ImageReference of(
method scratch (line 207) | public static ImageReference scratch() {
method isValidRegistry (line 218) | public static boolean isValidRegistry(String registry) {
method isValidRepository (line 229) | public static boolean isValidRepository(String repository) {
method isValidTag (line 240) | public static boolean isValidTag(String tag) {
method isValidDigest (line 251) | public static boolean isValidDigest(String digest) {
method isDefaultTag (line 261) | public static boolean isDefaultTag(@Nullable String tag) {
method ImageReference (line 271) | private ImageReference(
method getRegistry (line 287) | public String getRegistry() {
method getRepository (line 296) | public String getRepository() {
method getTag (line 305) | public Optional<String> getTag() {
method getDigest (line 314) | public Optional<String> getDigest() {
method getQualifier (line 323) | public String getQualifier() {
method usesDefaultTag (line 336) | public boolean usesDefaultTag() {
method isScratch (line 345) | public boolean isScratch() {
method withQualifier (line 359) | public ImageReference withQualifier(String newQualifier) {
method toString (line 371) | @Override
method toStringWithQualifier (line 383) | public String toStringWithQualifier() {
method toString (line 395) | private String toString(boolean singleQualifier) {
method equals (line 433) | @Override
method hashCode (line 448) | @Override
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/api/InsecureRegistryException.java
class InsecureRegistryException (line 24) | public class InsecureRegistryException extends RegistryException {
method InsecureRegistryException (line 32) | public InsecureRegistryException(URL insecureUrl, Throwable cause) {
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/api/InvalidImageReferenceException.java
class InvalidImageReferenceException (line 20) | public class InvalidImageReferenceException extends Exception {
method InvalidImageReferenceException (line 24) | public InvalidImageReferenceException(String reference) {
method getInvalidReference (line 29) | public String getInvalidReference() {
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/api/JavaContainerBuilder.java
class JavaContainerBuilder (line 45) | public class JavaContainerBuilder {
class PathPredicatePair (line 48) | private static class PathPredicatePair {
method PathPredicatePair (line 53) | private PathPredicatePair(Path path, Predicate<Path> predicate) {
type LayerType (line 60) | public enum LayerType {
method LayerType (line 76) | LayerType(String name) {
method getName (line 80) | public String getName() {
method fromDistroless (line 94) | @Deprecated
method fromDistrolessJetty (line 128) | @Deprecated
method from (line 147) | public static JavaContainerBuilder from(String baseImageReference)
method from (line 158) | public static JavaContainerBuilder from(ImageReference baseImageRefere...
method from (line 169) | public static JavaContainerBuilder from(RegistryImage registryImage) {
method from (line 181) | public static JavaContainerBuilder from(DockerDaemonImage dockerDaemon...
method from (line 191) | public static JavaContainerBuilder from(TarImage tarImage) {
method JavaContainerBuilder (line 216) | private JavaContainerBuilder(JibContainerBuilder jibContainerBuilder) {
method setAppRoot (line 226) | public JavaContainerBuilder setAppRoot(String appRoot) {
method setAppRoot (line 236) | public JavaContainerBuilder setAppRoot(AbsoluteUnixPath appRoot) {
method setClassesDestination (line 248) | public JavaContainerBuilder setClassesDestination(RelativeUnixPath cla...
method setResourcesDestination (line 260) | public JavaContainerBuilder setResourcesDestination(RelativeUnixPath r...
method setDependenciesDestination (line 272) | public JavaContainerBuilder setDependenciesDestination(RelativeUnixPat...
method setOthersDestination (line 284) | public JavaContainerBuilder setOthersDestination(RelativeUnixPath othe...
method addDependencies (line 297) | public JavaContainerBuilder addDependencies(List<Path> dependencyFiles...
method addDependencies (line 317) | public JavaContainerBuilder addDependencies(Path... dependencyFiles) t...
method addSnapshotDependencies (line 329) | public JavaContainerBuilder addSnapshotDependencies(List<Path> depende...
method addSnapshotDependencies (line 350) | public JavaContainerBuilder addSnapshotDependencies(Path... dependency...
method addProjectDependencies (line 363) | public JavaContainerBuilder addProjectDependencies(List<Path> dependen...
method addProjectDependencies (line 385) | public JavaContainerBuilder addProjectDependencies(Path... dependencyF...
method addResources (line 396) | public JavaContainerBuilder addResources(Path resourceFilesDirectory) ...
method addResources (line 408) | public JavaContainerBuilder addResources(Path resourceFilesDirectory, ...
method addClasses (line 421) | public JavaContainerBuilder addClasses(Path classFilesDirectory) throw...
method addClasses (line 433) | public JavaContainerBuilder addClasses(Path classFilesDirectory, Predi...
method addToClasspath (line 450) | public JavaContainerBuilder addToClasspath(List<Path> otherFiles) thro...
method addToClasspath (line 473) | public JavaContainerBuilder addToClasspath(Path... otherFiles) throws ...
method addJvmFlag (line 483) | public JavaContainerBuilder addJvmFlag(String jvmFlag) {
method addJvmFlags (line 494) | public JavaContainerBuilder addJvmFlags(List<String> jvmFlags) {
method addJvmFlags (line 505) | public JavaContainerBuilder addJvmFlags(String... jvmFlags) {
method setMainClass (line 519) | public JavaContainerBuilder setMainClass(String mainClass) {
method setModificationTimeProvider (line 531) | public JavaContainerBuilder setModificationTimeProvider(
method toContainerBuilder (line 545) | public JibContainerBuilder toContainerBuilder() throws IOException {
method addDirectory (line 676) | private JavaContainerBuilder addDirectory(
method addFileToLayer (line 689) | private void addFileToLayer(
method addDirectoryContentsToLayer (line 701) | private void addDirectoryContentsToLayer(
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/api/Jib.java
class Jib (line 22) | public class Jib {
method from (line 44) | public static JibContainerBuilder from(String baseImageReference)
method from (line 63) | public static JibContainerBuilder from(ImageReference baseImageReferen...
method from (line 74) | public static JibContainerBuilder from(RegistryImage registryImage) {
method from (line 86) | public static JibContainerBuilder from(DockerDaemonImage dockerDaemonI...
method from (line 96) | public static JibContainerBuilder from(TarImage tarImage) {
method fromScratch (line 105) | public static JibContainerBuilder fromScratch() {
method from (line 118) | public static JibContainerBuilder from(
method Jib (line 123) | private Jib() {}
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/api/JibContainer.java
class JibContainer (line 26) | public class JibContainer {
method JibContainer (line 34) | @VisibleForTesting
method from (line 48) | static JibContainer from(BuildContext buildContext, BuildResult buildR...
method getTargetImage (line 61) | public ImageReference getTargetImage() {
method isImagePushed (line 70) | public boolean isImagePushed() {
method getDigest (line 80) | public DescriptorDigest getDigest() {
method getImageId (line 89) | public DescriptorDigest getImageId() {
method getTags (line 98) | public Set<String> getTags() {
method hashCode (line 102) | @Override
method equals (line 107) | @Override
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/api/JibContainerBuilder.java
class JibContainerBuilder (line 69) | public class JibContainerBuilder {
method capitalizeFirstLetter (line 71) | private static String capitalizeFirstLetter(String string) {
method JibContainerBuilder (line 91) | JibContainerBuilder(RegistryImage baseImage) {
method JibContainerBuilder (line 100) | JibContainerBuilder(DockerDaemonImage baseImage) {
method JibContainerBuilder (line 113) | JibContainerBuilder(TarImage baseImage) {
method JibContainerBuilder (line 123) | JibContainerBuilder(DockerClient dockerClient, DockerDaemonImage baseI...
method JibContainerBuilder (line 131) | @VisibleForTesting
method addLayer (line 168) | public JibContainerBuilder addLayer(List<Path> files, AbsoluteUnixPath...
method addLayer (line 192) | public JibContainerBuilder addLayer(List<Path> files, String pathInCon...
method addLayer (line 203) | @Deprecated
method addFileEntriesLayer (line 214) | public JibContainerBuilder addFileEntriesLayer(FileEntriesLayer layer) {
method setLayers (line 228) | @Deprecated
method setFileEntriesLayers (line 243) | public JibContainerBuilder setFileEntriesLayers(List<FileEntriesLayer>...
method setLayers (line 256) | @Deprecated
method setFileEntriesLayers (line 267) | public JibContainerBuilder setFileEntriesLayers(FileEntriesLayer... la...
method setEntrypoint (line 284) | public JibContainerBuilder setEntrypoint(@Nullable List<String> entryp...
method setEntrypoint (line 297) | public JibContainerBuilder setEntrypoint(String... entrypoint) {
method setProgramArguments (line 317) | public JibContainerBuilder setProgramArguments(@Nullable List<String> ...
method setProgramArguments (line 330) | public JibContainerBuilder setProgramArguments(String... programArgume...
method setEnvironment (line 347) | public JibContainerBuilder setEnvironment(Map<String, String> environm...
method addEnvironmentVariable (line 361) | public JibContainerBuilder addEnvironmentVariable(String name, String ...
method setVolumes (line 376) | public JibContainerBuilder setVolumes(Set<AbsoluteUnixPath> volumes) {
method setVolumes (line 389) | public JibContainerBuilder setVolumes(AbsoluteUnixPath... volumes) {
method addVolume (line 400) | public JibContainerBuilder addVolume(AbsoluteUnixPath volume) {
method setExposedPorts (line 421) | public JibContainerBuilder setExposedPorts(Set<Port> ports) {
method setExposedPorts (line 434) | public JibContainerBuilder setExposedPorts(Port... ports) {
method addExposedPort (line 445) | public JibContainerBuilder addExposedPort(Port port) {
method setLabels (line 460) | public JibContainerBuilder setLabels(Map<String, String> labelMap) {
method addLabel (line 473) | public JibContainerBuilder addLabel(String key, String value) {
method setFormat (line 486) | public JibContainerBuilder setFormat(ImageFormat imageFormat) {
method setCreationTime (line 498) | public JibContainerBuilder setCreationTime(Instant creationTime) {
method setPlatforms (line 516) | public JibContainerBuilder setPlatforms(Set<Platform> platforms) {
method addPlatform (line 538) | public JibContainerBuilder addPlatform(String architecture, String os) {
method setUser (line 564) | public JibContainerBuilder setUser(@Nullable String user) {
method setWorkingDirectory (line 576) | public JibContainerBuilder setWorkingDirectory(@Nullable AbsoluteUnixP...
method containerize (line 601) | public JibContainer containerize(Containerizer containerizer)
method describeContainer (line 629) | @Deprecated
method toContainerBuildPlan (line 643) | public ContainerBuildPlan toContainerBuildPlan() {
method applyContainerBuildPlan (line 661) | public JibContainerBuilder applyContainerBuildPlan(ContainerBuildPlan ...
method toBuildContext (line 722) | @VisibleForTesting
method logSources (line 742) | private void logSources(EventHandlers eventHandlers) {
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/api/JibContainerDescription.java
class JibContainerDescription (line 31) | public class JibContainerDescription {
method JibContainerDescription (line 35) | JibContainerDescription(List<FileEntriesLayer> layers) {
method getFileEntriesLayers (line 44) | public List<FileEntriesLayer> getFileEntriesLayers() {
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/api/JibEvent.java
type JibEvent (line 23) | public interface JibEvent {}
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/api/LayerConfiguration.java
class LayerConfiguration (line 38) | @Deprecated
class Builder (line 43) | public static class Builder {
method Builder (line 47) | private Builder() {}
method setName (line 55) | public Builder setName(String name) {
method setEntries (line 66) | public Builder setEntries(List<LayerEntry> entries) {
method addEntry (line 78) | public Builder addEntry(LayerEntry entry) {
method addEntry (line 101) | public Builder addEntry(Path sourceFile, AbsoluteUnixPath pathInCont...
method addEntry (line 120) | public Builder addEntry(
method addEntry (line 138) | public Builder addEntry(
method addEntry (line 159) | public Builder addEntry(
method addEntryRecursive (line 184) | public Builder addEntryRecursive(Path sourceFile, AbsoluteUnixPath p...
method addEntryRecursive (line 202) | public Builder addEntryRecursive(
method addEntryRecursive (line 225) | public Builder addEntryRecursive(
method build (line 241) | public LayerConfiguration build() {
method builder (line 263) | public static Builder builder() {
method LayerConfiguration (line 269) | private LayerConfiguration(FileEntriesLayer fileEntriesLayer) {
method getName (line 278) | public String getName() {
method getLayerEntries (line 287) | public ImmutableList<LayerEntry> getLayerEntries() {
method toFileEntriesLayer (line 292) | FileEntriesLayer toFileEntriesLayer() {
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/api/LayerEntry.java
class LayerEntry (line 34) | @Deprecated
method LayerEntry (line 66) | public LayerEntry(
method LayerEntry (line 74) | LayerEntry(FileEntry entry) {
method getModificationTime (line 83) | public Instant getModificationTime() {
method getSourceFile (line 94) | public Path getSourceFile() {
method getExtractionPath (line 103) | public AbsoluteUnixPath getExtractionPath() {
method getPermissions (line 112) | public FilePermissions getPermissions() {
method equals (line 116) | @Override
method hashCode (line 128) | @Override
method toFileEntry (line 133) | FileEntry toFileEntry() {
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/api/LogEvent.java
class LogEvent (line 23) | public class LogEvent implements JibEvent {
type Level (line 26) | public enum Level {
method error (line 51) | public static LogEvent error(String message) {
method lifecycle (line 55) | public static LogEvent lifecycle(String message) {
method progress (line 59) | public static LogEvent progress(String message) {
method warn (line 63) | public static LogEvent warn(String message) {
method info (line 67) | public static LogEvent info(String message) {
method debug (line 71) | public static LogEvent debug(String message) {
method LogEvent (line 78) | private LogEvent(Level level, String message) {
method getLevel (line 88) | public Level getLevel() {
method getMessage (line 97) | public String getMessage() {
method equals (line 101) | @VisibleForTesting
method hashCode (line 115) | @VisibleForTesting
method toString (line 121) | @Override
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/api/MainClassFinder.java
class MainClassFinder (line 50) | public class MainClassFinder {
class Result (line 53) | public static class Result {
type Type (line 56) | public enum Type {
method success (line 68) | private static Result success(String foundMainClass) {
method mainClassNotFound (line 72) | private static Result mainClassNotFound() {
method multipleMainClasses (line 76) | private static Result multipleMainClasses(List<String> foundMainClas...
method Result (line 83) | private Result(Type type, List<String> foundMainClasses) {
method getFoundMainClass (line 93) | public String getFoundMainClass() {
method getType (line 104) | public Type getType() {
method getFoundMainClasses (line 113) | public List<String> getFoundMainClasses() {
class MainClassVisitor (line 119) | private static class MainClassVisitor extends ClassVisitor {
method MainClassVisitor (line 140) | private MainClassVisitor() {
method visit (line 144) | @Override
method visitMethod (line 156) | @Override
method find (line 205) | public static Result find(List<Path> files, Consumer<LogEvent> logger) {
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/api/Ports.java
class Ports (line 28) | public class Ports {
method parse (line 49) | public static Set<Port> parse(List<String> ports) throws NumberFormatE...
method Ports (line 92) | private Ports() {}
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/api/RegistryAuthenticationFailedException.java
class RegistryAuthenticationFailedException (line 22) | public class RegistryAuthenticationFailedException extends RegistryExcep...
method RegistryAuthenticationFailedException (line 35) | public RegistryAuthenticationFailedException(
method RegistryAuthenticationFailedException (line 49) | public RegistryAuthenticationFailedException(String serverUrl, String ...
method getServerUrl (line 60) | public String getServerUrl() {
method getImageName (line 69) | public String getImageName() {
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/api/RegistryException.java
class RegistryException (line 22) | public class RegistryException extends Exception {
method RegistryException (line 24) | public RegistryException(String message, @Nullable Throwable cause) {
method RegistryException (line 28) | public RegistryException(String message) {
method RegistryException (line 32) | public RegistryException(Throwable cause) {
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/api/RegistryImage.java
class RegistryImage (line 35) | public class RegistryImage {
method named (line 43) | public static RegistryImage named(ImageReference imageReference) {
method named (line 54) | public static RegistryImage named(String imageReference) throws Invali...
method RegistryImage (line 62) | private RegistryImage(ImageReference imageReference) {
method addCredential (line 74) | public RegistryImage addCredential(String username, String password) {
method addCredentialRetriever (line 104) | public RegistryImage addCredentialRetriever(CredentialRetriever creden...
method getImageReference (line 109) | ImageReference getImageReference() {
method getCredentialRetrievers (line 113) | List<CredentialRetriever> getCredentialRetrievers() {
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/api/RegistryUnauthorizedException.java
class RegistryUnauthorizedException (line 23) | public class RegistryUnauthorizedException extends RegistryException {
method RegistryUnauthorizedException (line 35) | public RegistryUnauthorizedException(
method getImageReference (line 42) | public String getImageReference() {
method getHttpResponseException (line 46) | public HttpResponseException getHttpResponseException() {
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/api/TarImage.java
class TarImage (line 33) | public class TarImage {
method at (line 41) | public static TarImage at(Path path) {
method TarImage (line 49) | private TarImage(Path path) {
method named (line 60) | public TarImage named(ImageReference imageReference) {
method named (line 73) | public TarImage named(String imageReference) throws InvalidImageRefere...
method getPath (line 77) | Path getPath() {
method getImageReference (line 81) | Optional<ImageReference> getImageReference() {
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/blob/Blob.java
type Blob (line 23) | public interface Blob {
method writeTo (line 32) | BlobDescriptor writeTo(OutputStream outputStream) throws IOException;
method isRetryable (line 40) | boolean isRetryable();
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/blob/BlobDescriptor.java
class BlobDescriptor (line 22) | public class BlobDescriptor {
method BlobDescriptor (line 29) | public BlobDescriptor(long size, DescriptorDigest digest) {
method BlobDescriptor (line 39) | public BlobDescriptor(DescriptorDigest digest) {
method hasSize (line 43) | public boolean hasSize() {
method getDigest (line 47) | public DescriptorDigest getDigest() {
method getSize (line 51) | public long getSize() {
method equals (line 65) | @Override
method hashCode (line 78) | @Override
method toString (line 85) | @Override
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/blob/Blobs.java
class Blobs (line 28) | public class Blobs {
method from (line 30) | public static Blob from(InputStream inputStream) {
method from (line 34) | public static Blob from(Path file) {
method from (line 38) | public static Blob from(JsonTemplate template) {
method from (line 48) | public static Blob from(String content) {
method from (line 52) | public static Blob from(WritableContents writable, boolean retryable) {
method writeToString (line 63) | public static String writeToString(Blob blob) throws IOException {
method writeToByteArray (line 74) | public static byte[] writeToByteArray(Blob blob) throws IOException {
method Blobs (line 80) | private Blobs() {}
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/blob/FileBlob.java
class FileBlob (line 28) | class FileBlob implements Blob {
method FileBlob (line 32) | FileBlob(Path file) {
method writeTo (line 36) | @Override
method isRetryable (line 43) | @Override
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/blob/InputStreamBlob.java
class InputStreamBlob (line 25) | class InputStreamBlob implements Blob {
method InputStreamBlob (line 32) | InputStreamBlob(InputStream inputStream) {
method writeTo (line 36) | @Override
method isRetryable (line 50) | @Override
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/blob/JsonBlob.java
class JsonBlob (line 25) | class JsonBlob implements Blob {
method JsonBlob (line 29) | JsonBlob(JsonTemplate template) {
method writeTo (line 33) | @Override
method isRetryable (line 38) | @Override
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/blob/StringBlob.java
class StringBlob (line 27) | class StringBlob implements Blob {
method StringBlob (line 31) | StringBlob(String content) {
method writeTo (line 35) | @Override
method isRetryable (line 43) | @Override
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/blob/WritableContentsBlob.java
class WritableContentsBlob (line 25) | class WritableContentsBlob implements Blob {
method WritableContentsBlob (line 30) | WritableContentsBlob(WritableContents writableContents, boolean retrya...
method writeTo (line 35) | @Override
method isRetryable (line 40) | @Override
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/builder/ProgressEventDispatcher.java
class ProgressEventDispatcher (line 33) | public class ProgressEventDispatcher implements Closeable {
type Factory (line 39) | @FunctionalInterface
method create (line 49) | ProgressEventDispatcher create(String description, long allocationUn...
method newRoot (line 60) | public static ProgressEventDispatcher newRoot(
method newProgressEventDispatcher (line 74) | private static ProgressEventDispatcher newProgressEventDispatcher(
method ProgressEventDispatcher (line 88) | private ProgressEventDispatcher(EventHandlers eventHandlers, Allocatio...
method newChildProducer (line 102) | public Factory newChildProducer() {
method close (line 120) | @Override
method dispatchProgress (line 134) | public void dispatchProgress(long progressUnits) {
method decrementRemainingAllocationUnits (line 147) | private long decrementRemainingAllocationUnits(long units) {
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/builder/Timer.java
class Timer (line 27) | class Timer implements TimerEvent.Timer {
method Timer (line 35) | Timer(Clock clock, @Nullable Timer parentTimer) {
method getParent (line 43) | @Override
method lap (line 53) | Duration lap() {
method getElapsedTime (line 65) | Duration getElapsedTime() {
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/builder/TimerEventDispatcher.java
class TimerEventDispatcher (line 29) | public class TimerEventDispatcher implements Closeable {
method TimerEventDispatcher (line 45) | public TimerEventDispatcher(EventHandlers eventHandlers, String descri...
method TimerEventDispatcher (line 49) | @VisibleForTesting
method subTimer (line 66) | public TimerEventDispatcher subTimer(String description) {
method lap (line 76) | public void lap() {
method lap (line 87) | public void lap(String newDescription) {
method close (line 92) | @Override
method dispatchTimerEvent (line 97) | private void dispatchTimerEvent(State state, Duration duration, String...
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/builder/steps/AuthenticatePushStep.java
class AuthenticatePushStep (line 35) | class AuthenticatePushStep implements Callable<RegistryClient> {
method AuthenticatePushStep (line 43) | AuthenticatePushStep(
method call (line 49) | @Override
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/builder/steps/BuildAndCacheApplicationLayerStep.java
class BuildAndCacheApplicationLayerStep (line 38) | class BuildAndCacheApplicationLayerStep implements Callable<PreparedLaye...
method makeList (line 47) | static ImmutableList<BuildAndCacheApplicationLayerStep> makeList(
method BuildAndCacheApplicationLayerStep (line 77) | private BuildAndCacheApplicationLayerStep(
method call (line 88) | @Override
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/builder/steps/BuildImageStep.java
class BuildImageStep (line 37) | class BuildImageStep implements Callable<Image> {
method truncateLongClasspath (line 41) | @VisibleForTesting
method BuildImageStep (line 67) | BuildImageStep(
method call (line 80) | @Override
method computeEntrypoint (line 164) | @Nullable
method computeProgramArguments (line 198) | @Nullable
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/builder/steps/BuildManifestListOrSingleManifestStep.java
class BuildManifestListOrSingleManifestStep (line 36) | class BuildManifestListOrSingleManifestStep implements Callable<Manifest...
method BuildManifestListOrSingleManifestStep (line 44) | BuildManifestListOrSingleManifestStep(
method call (line 53) | @Override
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/builder/steps/BuildResult.java
class BuildResult (line 29) | public class BuildResult {
method fromImage (line 39) | static BuildResult fromImage(Image image, Class<? extends BuildableMan...
method BuildResult (line 56) | BuildResult(DescriptorDigest imageDigest, DescriptorDigest imageId, bo...
method getImageDigest (line 62) | public DescriptorDigest getImageDigest() {
method getImageId (line 66) | public DescriptorDigest getImageId() {
method isImagePushed (line 70) | public boolean isImagePushed() {
method hashCode (line 74) | @Override
method equals (line 79) | @Override
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/builder/steps/CheckManifestStep.java
class CheckManifestStep (line 36) | class CheckManifestStep implements Callable<Optional<ManifestAndDigest<M...
method CheckManifestStep (line 45) | CheckManifestStep(
method call (line 56) | @Override
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/builder/steps/LoadDockerStep.java
class LoadDockerStep (line 32) | class LoadDockerStep implements Callable<BuildResult> {
method LoadDockerStep (line 40) | LoadDockerStep(
method call (line 51) | @Override
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/builder/steps/LocalBaseImageSteps.java
class LocalBaseImageSteps (line 66) | public class LocalBaseImageSteps {
class LocalImage (line 69) | static class LocalImage {
method LocalImage (line 73) | LocalImage(
method LocalBaseImageSteps (line 80) | private LocalBaseImageSteps() {}
method isGzipped (line 90) | @VisibleForTesting
method retrieveDockerDaemonLayersStep (line 99) | static Callable<LocalImage> retrieveDockerDaemonLayersStep(
method retrieveTarLayersStep (line 144) | static Callable<LocalImage> retrieveTarLayersStep(
method returnImageAndRegistryClientStep (line 158) | static Callable<ImagesAndRegistryClient> returnImageAndRegistryClientS...
method getCachedDockerImage (line 178) | @VisibleForTesting
method cacheDockerImageTar (line 202) | @VisibleForTesting
method compressAndCacheTarLayer (line 279) | private static PreparedLayer compressAndCacheTarLayer(
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/builder/steps/ObtainBaseImageLayerStep.java
class ObtainBaseImageLayerStep (line 39) | class ObtainBaseImageLayerStep implements Callable<PreparedLayer> {
type BlobExistenceChecker (line 44) | @FunctionalInterface
method check (line 47) | StateInTarget check(DescriptorDigest digest) throws IOException, Reg...
method forForcedDownload (line 50) | static ObtainBaseImageLayerStep forForcedDownload(
method forSelectiveDownload (line 60) | static ObtainBaseImageLayerStep forSelectiveDownload(
method ObtainBaseImageLayerStep (line 90) | private ObtainBaseImageLayerStep(
method call (line 103) | @Override
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/builder/steps/PlatformChecker.java
class PlatformChecker (line 29) | public class PlatformChecker {
method PlatformChecker (line 31) | private PlatformChecker() {}
method checkManifestPlatform (line 39) | static void checkManifestPlatform(
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/builder/steps/PreparedLayer.java
class PreparedLayer (line 29) | class PreparedLayer implements Layer {
type StateInTarget (line 31) | enum StateInTarget {
class Builder (line 37) | static class Builder {
method Builder (line 43) | Builder(Layer layer) {
method setName (line 47) | Builder setName(String name) {
method setStateInTarget (line 53) | Builder setStateInTarget(StateInTarget stateInTarget) {
method build (line 58) | PreparedLayer build() {
method PreparedLayer (line 67) | private PreparedLayer(Layer layer, String name, StateInTarget stateInT...
method getName (line 73) | String getName() {
method getStateInTarget (line 77) | StateInTarget getStateInTarget() {
method getBlob (line 81) | @Override
method getBlobDescriptor (line 86) | @Override
method getDiffId (line 91) | @Override
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/builder/steps/PullBaseImageStep.java
class PullBaseImageStep (line 70) | class PullBaseImageStep implements Callable<ImagesAndRegistryClient> {
class ImagesAndRegistryClient (line 75) | static class ImagesAndRegistryClient {
method ImagesAndRegistryClient (line 80) | ImagesAndRegistryClient(List<Image> images, @Nullable RegistryClient...
method PullBaseImageStep (line 89) | PullBaseImageStep(
method call (line 95) | @Override
method tryMirrors (line 211) | @VisibleForTesting
method pullPublicImages (line 252) | private List<Image> pullPublicImages(
method pullBaseImages (line 282) | private List<Image> pullBaseImages(
method lookUpPlatformSpecificImageManifest (line 362) | @VisibleForTesting
method pullContainerConfigJson (line 395) | private ContainerConfigurationTemplate pullContainerConfigJson(
method getCachedBaseImages (line 441) | @VisibleForTesting
method getBaseImageIfAllLayersCached (line 504) | private Optional<Image> getBaseImageIfAllLayersCached(
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/builder/steps/PushBlobStep.java
class PushBlobStep (line 34) | class PushBlobStep implements Callable<BlobDescriptor> {
method PushBlobStep (line 46) | PushBlobStep(
method call (line 61) | @Override
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/builder/steps/PushContainerConfigurationStep.java
class PushContainerConfigurationStep (line 34) | class PushContainerConfigurationStep implements Callable<BlobDescriptor> {
method PushContainerConfigurationStep (line 44) | PushContainerConfigurationStep(
method call (line 55) | @Override
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/builder/steps/PushImageStep.java
class PushImageStep (line 47) | class PushImageStep implements Callable<BuildResult> {
method makeList (line 51) | static ImmutableList<PushImageStep> makeList(
method getImageQualifiers (line 94) | private static Set<String> getImageQualifiers(
method makeListForManifestList (line 108) | static ImmutableList<PushImageStep> makeListForManifestList(
method PushImageStep (line 157) | PushImageStep(
method call (line 174) | @Override
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/builder/steps/PushLayerStep.java
class PushLayerStep (line 33) | class PushLayerStep implements Callable<BlobDescriptor> {
method makeList (line 35) | static ImmutableList<PushLayerStep> makeList(
method PushLayerStep (line 64) | private PushLayerStep(
method call (line 75) | @Override
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/builder/steps/RegistryCredentialRetriever.java
class RegistryCredentialRetriever (line 29) | class RegistryCredentialRetriever {
method RegistryCredentialRetriever (line 31) | private RegistryCredentialRetriever() {}
method getBaseImageCredential (line 34) | static Optional<Credential> getBaseImageCredential(BuildContext buildC...
method getTargetImageCredential (line 40) | static Optional<Credential> getTargetImageCredential(BuildContext buil...
method retrieve (line 45) | private static Optional<Credential> retrieve(
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/builder/steps/StepsRunner.java
class StepsRunner (line 68) | public class StepsRunner {
class StepResults (line 71) | private static class StepResults {
method failedFuture (line 73) | private static <E> Future<E> failedFuture() {
method begin (line 102) | public static StepsRunner begin(BuildContext buildContext) {
method realizeFutures (line 111) | private static <E> List<E> realizeFutures(Collection<Future<E>> futures)
method StepsRunner (line 137) | @VisibleForTesting
method dockerLoadSteps (line 149) | public StepsRunner dockerLoadSteps(DockerClient dockerClient) {
method tarBuildSteps (line 168) | public StepsRunner tarBuildSteps(Path outputPath) {
method registryPushSteps (line 187) | public StepsRunner registryPushSteps() {
method run (line 215) | public BuildResult run() throws ExecutionException, InterruptedExcepti...
method addRetrievalSteps (line 236) | private void addRetrievalSteps(boolean layersRequiredLocally) {
method authenticateBearerPush (line 256) | private void authenticateBearerPush(ProgressEventDispatcher.Factory pr...
method saveDocker (line 261) | private void saveDocker(ProgressEventDispatcher.Factory progressDispat...
method extractTar (line 275) | private void extractTar(ProgressEventDispatcher.Factory progressDispat...
method assignLocalImageResult (line 285) | private void assignLocalImageResult(Future<LocalImage> localImage) {
method pullBaseImages (line 302) | @VisibleForTesting
method obtainBaseImagesLayers (line 308) | private void obtainBaseImagesLayers(
method obtainBaseImageLayers (line 335) | @VisibleForTesting
method pushBaseImagesLayers (line 376) | private void pushBaseImagesLayers(ProgressEventDispatcher.Factory prog...
method pushBaseImageLayers (line 400) | private List<Future<BlobDescriptor>> pushBaseImageLayers(
method buildAndCacheApplicationLayers (line 412) | private void buildAndCacheApplicationLayers(
method buildImages (line 419) | @VisibleForTesting
method buildImage (line 443) | private Future<Image> buildImage(
method buildManifestListOrSingleManifest (line 458) | private void buildManifestListOrSingleManifest(
method pushContainerConfigurations (line 470) | private void pushContainerConfigurations(
method pushContainerConfiguration (line 495) | private Future<BlobDescriptor> pushContainerConfiguration(
method pushApplicationLayers (line 507) | private void pushApplicationLayers(ProgressEventDispatcher.Factory pro...
method checkManifestInTargetRegistry (line 519) | private void checkManifestInTargetRegistry(
method pushImages (line 532) | private void pushImages(ProgressEventDispatcher.Factory progressDispat...
method pushImage (line 557) | private Future<BuildResult> pushImage(
method isImagePushed (line 591) | @VisibleForTesting
method pushManifestList (line 597) | private void pushManifestList(ProgressEventDispatcher.Factory progress...
method loadDocker (line 618) | private void loadDocker(
method writeTarFile (line 635) | private void writeTarFile(
method scheduleCallables (line 652) | private <E> List<Future<E>> scheduleCallables(ImmutableList<? extends ...
method normalizeArchitecture (line 656) | @VisibleForTesting
method fetchBuiltImageForLocalBuild (line 667) | @VisibleForTesting
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/builder/steps/ThrottledProgressEventDispatcherWrapper.java
class ThrottledProgressEventDispatcherWrapper (line 34) | class ThrottledProgressEventDispatcherWrapper implements Closeable {
method ThrottledProgressEventDispatcherWrapper (line 41) | ThrottledProgressEventDispatcherWrapper(
method dispatchProgress (line 47) | public void dispatchProgress(Long progressUnits) {
method close (line 52) | @Override
method setProgressTarget (line 60) | void setProgressTarget(long allocationUnits) {
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/builder/steps/WriteTarFileStep.java
class WriteTarFileStep (line 31) | public class WriteTarFileStep implements Callable<BuildResult> {
method WriteTarFileStep (line 39) | WriteTarFileStep(
method call (line 50) | @Override
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/cache/Cache.java
class Cache (line 44) | @Immutable
method withDirectory (line 55) | public static Cache withDirectory(Path cacheDirectory) throws CacheDir...
method Cache (line 67) | private Cache(CacheStorageFiles cacheStorageFiles) {
method writeMetadata (line 80) | public void writeMetadata(ImageReference imageReference, ImageMetadata...
method writeMetadata (line 95) | public void writeMetadata(
method writeMetadata (line 114) | public void writeMetadata(ImageReference imageReference, V21ManifestTe...
method writeCompressedLayer (line 130) | public CachedLayer writeCompressedLayer(Blob compressedLayerBlob) thro...
method writeUncompressedLayer (line 143) | public CachedLayer writeUncompressedLayer(
method writeTarLayer (line 158) | public CachedLayer writeTarLayer(DescriptorDigest diffId, Blob compres...
method writeLocalConfig (line 176) | public void writeLocalConfig(
method retrieveMetadata (line 191) | public Optional<ImageMetadataTemplate> retrieveMetadata(ImageReference...
method areAllLayersCached (line 202) | public boolean areAllLayersCached(ManifestTemplate manifest) {
method retrieve (line 214) | public Optional<CachedLayer> retrieve(ImmutableList<FileEntry> layerEn...
method retrieve (line 233) | public Optional<CachedLayer> retrieve(DescriptorDigest layerDigest)
method retrieveTarLayer (line 246) | public Optional<CachedLayer> retrieveTarLayer(DescriptorDigest diffId)
method retrieveLocalConfig (line 265) | public Optional<ContainerConfigurationTemplate> retrieveLocalConfig(De...
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/cache/CacheCorruptedException.java
class CacheCorruptedException (line 22) | public class CacheCorruptedException extends Exception {
method CacheCorruptedException (line 24) | CacheCorruptedException(Path cacheDirectory, String message, Throwable...
method CacheCorruptedException (line 33) | CacheCorruptedException(Path cacheDirectory, String message) {
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/cache/CacheStorageFiles.java
class CacheStorageFiles (line 26) | class CacheStorageFiles {
method isLayerFile (line 41) | static boolean isLayerFile(Path file) {
method CacheStorageFiles (line 47) | CacheStorageFiles(Path cacheDirectory) {
method getDigestFromFilename (line 58) | DescriptorDigest getDigestFromFilename(Path layerFile) throws CacheCor...
method getCacheDirectory (line 74) | Path getCacheDirectory() {
method getLayerFile (line 85) | Path getLayerFile(DescriptorDigest layerDigest, DescriptorDigest layer...
method getLayerFilename (line 96) | String getLayerFilename(DescriptorDigest layerDiffId) {
method getSelectorFile (line 106) | Path getSelectorFile(DescriptorDigest selector) {
method getLayersDirectory (line 115) | Path getLayersDirectory() {
method getLayerDirectory (line 125) | Path getLayerDirectory(DescriptorDigest layerDigest) {
method getLocalDirectory (line 134) | Path getLocalDirectory() {
method getImagesDirectory (line 143) | Path getImagesDirectory() {
method getImageDirectory (line 154) | Path getImageDirectory(ImageReference imageReference) {
method getTemporaryDirectory (line 173) | Path getTemporaryDirectory() {
method getTemporaryLayerFile (line 183) | Path getTemporaryLayerFile(Path layerDirectory) {
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/cache/CacheStorageReader.java
class CacheStorageReader (line 42) | class CacheStorageReader {
method verifyImageMetadata (line 44) | @VisibleForTesting
method CacheStorageReader (line 80) | CacheStorageReader(CacheStorageFiles cacheStorageFiles) {
method areAllLayersCached (line 91) | boolean areAllLayersCached(ManifestTemplate manifest) {
method retrieveMetadata (line 125) | Optional<ImageMetadataTemplate> retrieveMetadata(ImageReference imageR...
method retrieve (line 149) | Optional<CachedLayer> retrieve(DescriptorDigest layerDigest)
method retrieveTarLayer (line 187) | Optional<CachedLayer> retrieveTarLayer(DescriptorDigest diffId)
method retrieveLocalConfig (line 224) | Optional<ContainerConfigurationTemplate> retrieveLocalConfig(Descripto...
method select (line 245) | Optional<DescriptorDigest> select(DescriptorDigest selector)
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/cache/CacheStorageWriter.java
class CacheStorageWriter (line 59) | class CacheStorageWriter {
class WrittenLayer (line 62) | private static class WrittenLayer {
method WrittenLayer (line 68) | private WrittenLayer(
method verifyImageMetadata (line 76) | private static void verifyImageMetadata(ImageMetadataTemplate metadata) {
method moveIfDoesNotExist (line 116) | @VisibleForTesting
method getDiffIdByDecompressingFile (line 161) | private static DescriptorDigest getDiffIdByDecompressingFile(Path comp...
method writeJsonTemplate (line 181) | private static void writeJsonTemplate(JsonTemplate jsonTemplate, Path ...
method CacheStorageWriter (line 205) | CacheStorageWriter(CacheStorageFiles cacheStorageFiles) {
method writeCompressed (line 219) | CachedLayer writeCompressed(Blob compressedLayerBlob) throws IOExcepti...
method writeUncompressed (line 268) | CachedLayer writeUncompressed(Blob uncompressedLayerBlob, @Nullable De...
method writeTarLayer (line 314) | CachedLayer writeTarLayer(DescriptorDigest diffId, Blob compressedBlob...
method writeMetadata (line 355) | void writeMetadata(ImageReference imageReference, ImageMetadataTemplat...
method writeLocalConfig (line 373) | void writeLocalConfig(
method writeCompressedLayerBlobToDirectory (line 389) | private WrittenLayer writeCompressedLayerBlobToDirectory(
method writeUncompressedLayerBlobToDirectory (line 419) | private WrittenLayer writeUncompressedLayerBlobToDirectory(
method writeSelector (line 454) | private void writeSelector(DescriptorDigest selector, DescriptorDigest...
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/cache/CachedLayer.java
class CachedLayer (line 27) | public class CachedLayer implements Layer {
class Builder (line 30) | public static class Builder {
method Builder (line 37) | private Builder() {}
method setLayerDigest (line 39) | public Builder setLayerDigest(DescriptorDigest layerDigest) {
method setLayerDiffId (line 44) | public Builder setLayerDiffId(DescriptorDigest layerDiffId) {
method setLayerSize (line 49) | public Builder setLayerSize(long layerSize) {
method setLayerBlob (line 54) | public Builder setLayerBlob(Blob layerBlob) {
method hasLayerBlob (line 59) | boolean hasLayerBlob() {
method build (line 68) | public CachedLayer build() {
method builder (line 82) | public static Builder builder() {
method CachedLayer (line 90) | private CachedLayer(
method getDigest (line 97) | public DescriptorDigest getDigest() {
method getSize (line 101) | public long getSize() {
method getDiffId (line 105) | @Override
method getBlob (line 110) | @Override
method getBlobDescriptor (line 115) | @Override
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/cache/LayerEntriesSelector.java
class LayerEntriesSelector (line 60) | class LayerEntriesSelector {
class LayerEntryTemplate (line 63) | @VisibleForTesting
method LayerEntryTemplate (line 73) | @VisibleForTesting
method compareTo (line 83) | @Override
method equals (line 111) | @Override
method hashCode (line 128) | @Override
method toSortedJsonTemplates (line 148) | @VisibleForTesting
method generateSelector (line 167) | static DescriptorDigest generateSelector(ImmutableList<FileEntry> laye...
method LayerEntriesSelector (line 172) | private LayerEntriesSelector() {}
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/cache/Retry.java
class Retry (line 38) | public class Retry<E extends Exception> {
type Action (line 41) | @FunctionalInterface
method run (line 49) | boolean run() throws E;
method action (line 59) | public static <E extends Exception> Retry<E> action(Action<E> action) {
method Retry (line 68) | private Retry(Action<E> action) {
method maximumRetries (line 78) | public Retry<E> maximumRetries(int maximumRetries) {
method retryOnException (line 90) | public Retry<E> retryOnException(Predicate<Exception> retryOnException) {
method sleep (line 102) | public Retry<E> sleep(long duration, TimeUnit unit) {
method run (line 117) | public boolean run() throws E {
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/configuration/BuildContext.java
class BuildContext (line 57) | public class BuildContext implements Closeable {
class Builder (line 67) | public static class Builder {
method Builder (line 88) | private Builder() {}
method setBaseImageConfiguration (line 96) | public Builder setBaseImageConfiguration(ImageConfiguration imageCon...
method setTargetImageConfiguration (line 107) | public Builder setTargetImageConfiguration(ImageConfiguration imageC...
method setAdditionalTargetImageTags (line 119) | public Builder setAdditionalTargetImageTags(Set<String> tags) {
method setEnablePlatformTags (line 132) | public Builder setEnablePlatformTags(boolean enablePlatformTags) {
method setContainerConfiguration (line 143) | public Builder setContainerConfiguration(ContainerConfiguration cont...
method setApplicationLayersCacheDirectory (line 154) | public Builder setApplicationLayersCacheDirectory(Path applicationLa...
method setBaseImageLayersCacheDirectory (line 165) | public Builder setBaseImageLayersCacheDirectory(Path baseImageLayers...
method setTargetFormat (line 176) | public Builder setTargetFormat(ImageFormat targetFormat) {
method setAllowInsecureRegistries (line 190) | public Builder setAllowInsecureRegistries(boolean allowInsecureRegis...
method setOffline (line 201) | public Builder setOffline(boolean offline) {
method setAlwaysCacheBaseImage (line 215) | public Builder setAlwaysCacheBaseImage(boolean alwaysCacheBaseImage) {
method setLayerConfigurations (line 226) | public Builder setLayerConfigurations(List<FileEntriesLayer> layerCo...
method setToolName (line 237) | public Builder setToolName(String toolName) {
method setToolVersion (line 248) | public Builder setToolVersion(@Nullable String toolVersion) {
method setEventHandlers (line 259) | public Builder setEventHandlers(EventHandlers eventHandlers) {
method setExecutorService (line 271) | public Builder setExecutorService(@Nullable ExecutorService executor...
method setRegistryMirrors (line 282) | public Builder setRegistryMirrors(ListMultimap<String, String> regis...
method build (line 293) | public BuildContext build() throws CacheDirectoryCreationException {
method getBaseImageLayersCacheDirectory (line 365) | @Nullable
method getApplicationLayersCacheDirectory (line 371) | @Nullable
method builder (line 383) | public static Builder builder() {
method BuildContext (line 407) | private BuildContext(
method getBaseImageConfiguration (line 446) | public ImageConfiguration getBaseImageConfiguration() {
method getEnablePlatformTags (line 450) | public boolean getEnablePlatformTags() {
method getTargetImageConfiguration (line 454) | public ImageConfiguration getTargetImageConfiguration() {
method getAllTargetImageTags (line 463) | public ImmutableSet<String> getAllTargetImageTags() {
method getContainerConfiguration (line 471) | public ContainerConfiguration getContainerConfiguration() {
method getTargetFormat (line 475) | public Class<? extends BuildableManifestTemplate> getTargetFormat() {
method getToolName (line 479) | public String getToolName() {
method getToolVersion (line 483) | @Nullable
method getEventHandlers (line 488) | public EventHandlers getEventHandlers() {
method getExecutorService (line 492) | public ExecutorService getExecutorService() {
method getBaseImageLayersCache (line 501) | public Cache getBaseImageLayersCache() {
method getApplicationLayersCache (line 510) | public Cache getApplicationLayersCache() {
method isOffline (line 519) | public boolean isOffline() {
method getAlwaysCacheBaseImage (line 528) | public boolean getAlwaysCacheBaseImage() {
method getLayerConfigurations (line 537) | public ImmutableList<FileEntriesLayer> getLayerConfigurations() {
method getRegistryMirrors (line 546) | public ImmutableListMultimap<String, String> getRegistryMirrors() {
method newBaseImageRegistryClientFactory (line 557) | public RegistryClient.Factory newBaseImageRegistryClientFactory() {
method newBaseImageRegistryClientFactory (line 569) | public RegistryClient.Factory newBaseImageRegistryClientFactory(String...
method newTargetImageRegistryClientFactory (line 581) | public RegistryClient.Factory newTargetImageRegistryClientFactory() {
method close (line 602) | @Override
method makeUserAgent (line 618) | @VisibleForTesting
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/configuration/ContainerConfiguration.java
class ContainerConfiguration (line 41) | public class ContainerConfiguration {
class Builder (line 44) | public static class Builder {
method setPlatforms (line 76) | public Builder setPlatforms(Set<Platform> platforms) {
method addPlatform (line 98) | public Builder addPlatform(String architecture, String os) {
method setCreationTime (line 109) | public Builder setCreationTime(Instant creationTime) {
method setProgramArguments (line 120) | public Builder setProgramArguments(@Nullable List<String> programArg...
method setEnvironment (line 138) | public Builder setEnvironment(@Nullable Map<String, String> environm...
method addEnvironment (line 164) | public void addEnvironment(String name, String value) {
method setExposedPorts (line 177) | public Builder setExposedPorts(@Nullable Set<Port> exposedPorts) {
method addExposedPort (line 193) | public void addExposedPort(Port port) {
method setVolumes (line 206) | public Builder setVolumes(@Nullable Set<AbsoluteUnixPath> volumes) {
method addVolume (line 222) | public void addVolume(AbsoluteUnixPath volume) {
method setLabels (line 235) | public Builder setLabels(@Nullable Map<String, String> labels) {
method addLabel (line 254) | public void addLabel(String key, String value) {
method setEntrypoint (line 267) | public Builder setEntrypoint(@Nullable List<String> entrypoint) {
method setUser (line 286) | public Builder setUser(@Nullable String user) {
method setWorkingDirectory (line 297) | public Builder setWorkingDirectory(@Nullable AbsoluteUnixPath workin...
method build (line 307) | public ContainerConfiguration build() {
method Builder (line 321) | private Builder() {}
method builder (line 329) | public static Builder builder() {
method ContainerConfiguration (line 344) | private ContainerConfiguration(
method getPlatforms (line 367) | public ImmutableSet<Platform> getPlatforms() {
method getCreationTime (line 371) | public Instant getCreationTime() {
method getEntrypoint (line 375) | @Nullable
method getProgramArguments (line 380) | @Nullable
method getEnvironmentMap (line 385) | @Nullable
method getExposedPorts (line 390) | @Nullable
method getVolumes (line 395) | @Nullable
method getUser (line 400) | @Nullable
method getLabels (line 405) | @Nullable
method getWorkingDirectory (line 410) | @Nullable
method equals (line 415) | @Override
method hashCode (line 436) | @Override
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/configuration/DockerHealthCheck.java
class DockerHealthCheck (line 28) | public class DockerHealthCheck {
class Builder (line 31) | public static class Builder {
method Builder (line 39) | private Builder(ImmutableList<String> command) {
method setInterval (line 49) | public Builder setInterval(Duration interval) {
method setTimeout (line 60) | public Builder setTimeout(Duration timeout) {
method setStartPeriod (line 71) | public Builder setStartPeriod(Duration startPeriod) {
method setRetries (line 83) | public Builder setRetries(int retries) {
method build (line 88) | public DockerHealthCheck build() {
method fromCommand (line 99) | public static DockerHealthCheck.Builder fromCommand(List<String> comma...
method DockerHealthCheck (line 112) | private DockerHealthCheck(
method getCommand (line 131) | public List<String> getCommand() {
method getInterval (line 141) | public Optional<Duration> getInterval() {
method getTimeout (line 151) | public Optional<Duration> getTimeout() {
method getStartPeriod (line 161) | public Optional<Duration> getStartPeriod() {
method getRetries (line 171) | public Optional<Integer> getRetries() {
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/configuration/ImageConfiguration.java
class ImageConfiguration (line 31) | public class ImageConfiguration {
class Builder (line 34) | public static class Builder {
method setCredentialRetrievers (line 48) | public Builder setCredentialRetrievers(List<CredentialRetriever> cre...
method setDockerClient (line 62) | public Builder setDockerClient(DockerClient dockerClient) {
method setTarPath (line 73) | public Builder setTarPath(Path tarPath) {
method build (line 83) | public ImageConfiguration build() {
method Builder (line 98) | private Builder(ImageReference imageReference) {
method builder (line 109) | public static Builder builder(ImageReference imageReference) {
method ImageConfiguration (line 118) | private ImageConfiguration(
method getImage (line 129) | public ImageReference getImage() {
method getImageRegistry (line 133) | public String getImageRegistry() {
method getImageRepository (line 137) | public String getImageRepository() {
method getImageQualifier (line 141) | public String getImageQualifier() {
method getCredentialRetrievers (line 145) | public ImmutableList<CredentialRetriever> getCredentialRetrievers() {
method getDockerClient (line 149) | public Optional<DockerClient> getDockerClient() {
method getTarPath (line 153) | public Optional<Path> getTarPath() {
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/docker/CliDockerClient.java
class CliDockerClient (line 60) | public class CliDockerClient implements DockerClient {
class DockerImageDetails (line 65) | @JsonIgnoreProperties(ignoreUnknown = true)
class RootFsTemplate (line 68) | @JsonIgnoreProperties(ignoreUnknown = true)
method getSize (line 83) | @Override
method getImageId (line 88) | @Override
method getDiffIds (line 99) | @Override
method isDefaultDockerInstalled (line 123) | public static boolean isDefaultDockerInstalled() {
method isDockerInstalled (line 139) | public static boolean isDockerInstalled(Path dockerExecutable) {
method defaultProcessBuilderFactory (line 150) | @VisibleForTesting
method getStderrOutput (line 166) | private static String getStderrOutput(Process process) {
method CliDockerClient (line 184) | public CliDockerClient(Path dockerExecutable, Map<String, String> dock...
method CliDockerClient (line 190) | @VisibleForTesting
method supported (line 195) | @Override
method info (line 200) | @Override
method load (line 218) | @Override
method save (line 256) | @Override
method inspect (line 275) | @Override
method docker (line 295) | private Process docker(String... subCommand) throws IOException {
method fetchInfoDetails (line 299) | private DockerInfoDetails fetchInfoDetails() throws IOException, Inter...
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/docker/DockerClientResolver.java
class DockerClientResolver (line 24) | public class DockerClientResolver {
method DockerClientResolver (line 26) | private DockerClientResolver() {}
method resolve (line 34) | public static Optional<DockerClient> resolve(Map<String, String> param...
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/docker/json/DockerManifestEntryTemplate.java
class DockerManifestEntryTemplate (line 50) | @JsonIgnoreProperties(ignoreUnknown = true)
method setConfig (line 62) | public void setConfig(String config) {
method addRepoTag (line 66) | public void addRepoTag(String repoTag) {
method addLayerFile (line 70) | public void addLayerFile(String layer) {
method getConfig (line 74) | public String getConfig() {
method getLayerFiles (line 78) | public List<String> getLayerFiles() {
method getRepoTags (line 82) | @VisibleForTesting
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/event/EventHandlers.java
class EventHandlers (line 27) | public class EventHandlers {
class Builder (line 30) | public static class Builder {
method add (line 47) | public <E extends JibEvent> Builder add(Class<E> eventType, Consumer...
method build (line 52) | public EventHandlers build() {
method EventHandlers (line 63) | private EventHandlers(Multimap<Class<? extends JibEvent>, Handler<? ex...
method builder (line 72) | public static Builder builder() {
method dispatch (line 81) | public void dispatch(JibEvent jibEvent) {
method getHandlers (line 94) | @VisibleForTesting
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/event/Handler.java
class Handler (line 24) | class Handler<E extends JibEvent> {
method Handler (line 29) | Handler(Class<E> eventClass, Consumer<? super E> eventConsumer) {
method handle (line 39) | void handle(JibEvent jibEvent) {
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/event/events/ProgressEvent.java
class ProgressEvent (line 28) | public class ProgressEvent implements JibEvent {
method ProgressEvent (line 39) | public ProgressEvent(Allocation allocation, long progressUnits) {
method getAllocation (line 49) | public Allocation getAllocation() {
method getUnits (line 59) | public long getUnits() {
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/event/events/TimerEvent.java
class TimerEvent (line 32) | public class TimerEvent implements JibEvent {
type State (line 35) | public enum State {
type Timer (line 54) | public interface Timer {
method getParent (line 61) | Optional<? extends Timer> getParent();
method TimerEvent (line 79) | public TimerEvent(
method getState (line 94) | public State getState() {
method getTimer (line 103) | public Timer getTimer() {
method getDuration (line 112) | public Duration getDuration() {
method getElapsed (line 121) | public Duration getElapsed() {
method getDescription (line 130) | public String getDescription() {
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/event/progress/Allocation.java
class Allocation (line 41) | public class Allocation {
method newRoot (line 50) | public static Allocation newRoot(String description, long allocationUn...
method Allocation (line 66) | private Allocation(String description, long allocationUnits, @Nullable...
method newChild (line 81) | public Allocation newChild(String description, long allocationUnits) {
method getParent (line 91) | public Optional<Allocation> getParent() {
method getDescription (line 101) | public String getDescription() {
method getAllocationUnits (line 111) | public long getAllocationUnits() {
method getFractionOfRoot (line 121) | public double getFractionOfRoot() {
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/event/progress/AllocationCompletionTracker.java
class AllocationCompletionTracker (line 37) | class AllocationCompletionTracker {
class IndexedRemainingUnits (line 43) | private static class IndexedRemainingUnits implements Comparable<Index...
method IndexedRemainingUnits (line 59) | private IndexedRemainingUnits(Allocation allocation) {
method isUnfinished (line 64) | private boolean isUnfinished() {
method compareTo (line 68) | @Override
method updateProgress (line 91) | boolean updateProgress(Allocation allocation, long units) {
method getUnfinishedAllocations (line 118) | @VisibleForTesting
method updateIndexedRemainingUnits (line 137) | private void updateIndexedRemainingUnits(
method getUnfinishedLeafTasks (line 163) | ImmutableList<String> getUnfinishedLeafTasks() {
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/event/progress/ProgressEventHandler.java
class ProgressEventHandler (line 30) | public class ProgressEventHandler implements Consumer<ProgressEvent> {
class Update (line 36) | public static class Update {
method Update (line 41) | private Update(double progress, ImmutableList<String> unfinishedLeaf...
method getProgress (line 51) | public double getProgress() {
method getUnfinishedLeafTasks (line 61) | public ImmutableList<String> getUnfinishedLeafTasks() {
method ProgressEventHandler (line 79) | public ProgressEventHandler(Consumer<Update> updateNotifier) {
method accept (line 83) | @Override
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/event/progress/ThrottledAccumulatingConsumer.java
class ThrottledAccumulatingConsumer (line 30) | public class ThrottledAccumulatingConsumer implements Consumer<Long>, Cl...
method ThrottledAccumulatingConsumer (line 50) | public ThrottledAccumulatingConsumer(Consumer<Long> callback) {
method ThrottledAccumulatingConsumer (line 61) | public ThrottledAccumulatingConsumer(
method accept (line 70) | @Override
method close (line 83) | @Override
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/filesystem/DirectoryWalker.java
class DirectoryWalker (line 28) | public class DirectoryWalker {
method DirectoryWalker (line 40) | public DirectoryWalker(Path rootDir) throws NotDirectoryException {
method filter (line 54) | public DirectoryWalker filter(Predicate<Path> pathFilter) {
method filterRoot (line 64) | public DirectoryWalker filterRoot() {
method walk (line 77) | public ImmutableList<Path> walk(PathConsumer pathConsumer) throws IOEx...
method walk (line 91) | public ImmutableList<Path> walk() throws IOException {
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/filesystem/FileOperations.java
class FileOperations (line 26) | public class FileOperations {
method copy (line 35) | public static void copy(ImmutableList<Path> sourceFiles, Path destDir)...
method FileOperations (line 57) | private FileOperations() {}
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/filesystem/LockFile.java
class LockFile (line 32) | public class LockFile implements Closeable {
method LockFile (line 40) | private LockFile(Path lockFilePath, FileLock fileLock, OutputStream ou...
method lock (line 53) | public static LockFile lock(Path lockFile) throws IOException {
method close (line 79) | @Override
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/filesystem/PathConsumer.java
type PathConsumer (line 22) | @FunctionalInterface
method accept (line 25) | void accept(Path path) throws IOException;
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/filesystem/TempDirectoryProvider.java
class TempDirectoryProvider (line 30) | public class TempDirectoryProvider implements Closeable {
method newDirectory (line 40) | public Path newDirectory() throws IOException {
method newDirectory (line 53) | public Path newDirectory(Path parentDirectory) throws IOException {
method close (line 59) | @Override
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/filesystem/XdgDirectories.java
class XdgDirectories (line 44) | public class XdgDirectories {
method getCacheHome (line 51) | public static Path getCacheHome() {
method getConfigHome (line 55) | public static Path getConfigHome() {
method getCacheHome (line 68) | @VisibleForTesting
method getConfigHome (line 83) | @VisibleForTesting
method getOsSpecificDirectory (line 99) | private static Path getOsSpecificDirectory(
method XdgDirectories (line 158) | private XdgDirectories() {}
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/frontend/CredentialRetrieverFactory.java
class CredentialRetrieverFactory (line 42) | public class CredentialRetrieverFactory {
type DockerCredentialHelperFactory (line 45) | @VisibleForTesting
method create (line 48) | DockerCredentialHelper create(
type GoogleCredentialsProvider (line 53) | @VisibleForTesting
method get (line 56) | GoogleCredentials get() throws IOException;
method forImage (line 79) | public static CredentialRetrieverFactory forImage(
method forImage (line 97) | public static CredentialRetrieverFactory forImage(
method CredentialRetrieverFactory (line 113) | @VisibleForTesting
method known (line 134) | public CredentialRetriever known(Credential credential, String credent...
method dockerCredentialHelper (line 148) | public CredentialRetriever dockerCredentialHelper(String credentialHel...
method dockerCredentialHelper (line 161) | public CredentialRetriever dockerCredentialHelper(Path credentialHelpe...
method wellKnownCredentialHelpers (line 185) | public CredentialRetriever wellKnownCredentialHelpers() {
method dockerConfig (line 220) | public CredentialRetriever dockerConfig() {
method dockerConfig (line 235) | public CredentialRetriever dockerConfig(Path dockerConfigFile) {
method legacyDockerConfig (line 248) | public CredentialRetriever legacyDockerConfig(Path dockerConfigFile) {
method googleApplicationDefaultCredentials (line 263) | public CredentialRetriever googleApplicationDefaultCredentials() {
method dockerConfig (line 295) | @VisibleForTesting
method retrieveFromDockerCredentialHelper (line 314) | private Credential retrieveFromDockerCredentialHelper(Path credentialH...
method logGotCredentialsFrom (line 325) | private void logGotCredentialsFrom(String credentialSource) {
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/global/JibSystemProperties.java
class JibSystemProperties (line 24) | public class JibSystemProperties {
method getHttpTimeout (line 45) | public static int getHttpTimeout() {
method useCrossRepositoryBlobMounts (line 59) | public static boolean useCrossRepositoryBlobMounts() {
method serializeExecution (line 70) | public static boolean serializeExecution() {
method sendCredentialsOverHttp (line 81) | public static boolean sendCredentialsOverHttp() {
method isUserAgentEnabled (line 91) | public static boolean isUserAgentEnabled() {
method checkHttpTimeoutProperty (line 101) | public static void checkHttpTimeoutProperty() throws NumberFormatExcep...
method checkProxyPortProperty (line 111) | public static void checkProxyPortProperty() throws NumberFormatExcepti...
method skipExistingImages (line 122) | public static boolean skipExistingImages() {
method checkNumericSystemProperty (line 126) | private static void checkNumericSystemProperty(String property, Range<...
method JibSystemProperties (line 147) | private JibSystemProperties() {}
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/hash/CountingDigestOutputStream.java
class CountingDigestOutputStream (line 29) | public class CountingDigestOutputStream extends DigestOutputStream {
method CountingDigestOutputStream (line 40) | public CountingDigestOutputStream(OutputStream outputStream) {
method computeDigest (line 57) | public BlobDescriptor computeDigest() {
method write (line 78) | @Override
method write (line 84) | @Override
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/hash/Digests.java
class Digests (line 36) | public class Digests {
method Digests (line 38) | private Digests() {}
method computeJsonDigest (line 40) | public static DescriptorDigest computeJsonDigest(JsonTemplate template...
method computeJsonDigest (line 44) | public static DescriptorDigest computeJsonDigest(List<? extends JsonTe...
method computeDigest (line 50) | public static BlobDescriptor computeDigest(JsonTemplate template) thro...
method computeDigest (line 54) | public static BlobDescriptor computeDigest(JsonTemplate template, Outp...
method computeDigest (line 60) | public static BlobDescriptor computeDigest(InputStream inStream) throw...
method computeDigest (line 71) | public static BlobDescriptor computeDigest(WritableContents contents) ...
method computeDigest (line 85) | public static BlobDescriptor computeDigest(InputStream inStream, Outpu...
method computeDigest (line 101) | public static BlobDescriptor computeDigest(WritableContents contents, ...
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/hash/WritableContents.java
type WritableContents (line 28) | @FunctionalInterface
method writeTo (line 31) | void writeTo(OutputStream outputStream) throws IOException;
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/http/Authorization.java
class Authorization (line 30) | public class Authorization {
method fromBasicCredentials (line 39) | public static Authorization fromBasicCredentials(String username, Stri...
method fromBearerToken (line 51) | public static Authorization fromBearerToken(String token) {
method Authorization (line 58) | private Authorization(String scheme, String token) {
method getScheme (line 63) | public String getScheme() {
method getToken (line 67) | public String getToken() {
method toString (line 72) | @Override
method equals (line 77) | @Override
method hashCode (line 89) | @Override
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/http/BlobHttpContent.java
class BlobHttpContent (line 26) | public class BlobHttpContent implements HttpContent {
method BlobHttpContent (line 32) | public BlobHttpContent(Blob blob, String contentType) {
method BlobHttpContent (line 43) | public BlobHttpContent(Blob blob, String contentType, Consumer<Long> w...
method getLength (line 49) | @Override
method getType (line 55) | @Override
method retrySupported (line 60) | @Override
method writeTo (line 65) | @Override
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/http/FailoverHttpClient.java
class FailoverHttpClient (line 79) | public class FailoverHttpClient {
type Failover (line 82) | private static enum Failover {
method isHttpsProtocol (line 88) | private static boolean isHttpsProtocol(URL url) {
method toHttp (line 92) | private static URL toHttp(URL url) {
method getSecureHttpTransport (line 98) | private static HttpTransport getSecureHttpTransport() {
method getInsecureHttpTransport (line 112) | private static HttpTransport getInsecureHttpTransport() {
method FailoverHttpClient (line 145) | public FailoverHttpClient(
method FailoverHttpClient (line 152) | @VisibleForTesting
method FailoverHttpClient (line 167) | @VisibleForTesting
method shutDown (line 192) | public void shutDown() throws IOException {
method get (line 215) | public Response get(URL url, Request request) throws IOException {
method post (line 227) | public Response post(URL url, Request request) throws IOException {
method put (line 239) | public Response put(URL url, Request request) throws IOException {
method call (line 252) | public Response call(String httpMethod, URL url, Request request) thro...
method followFailoverHistory (line 305) | private Optional<Response> followFailoverHistory(String httpMethod, UR...
method call (line 320) | private Response call(
method createBackOffRetryHandler (line 359) | private HttpIOExceptionHandler createBackOffRetryHandler() {
method getHttpTransport (line 375) | private HttpTransport getHttpTransport(boolean secureTransport) {
method logHttpFailover (line 384) | private void logHttpFailover(URL url) {
method logInsecureHttpsFailover (line 389) | private void logInsecureHttpsFailover(URL url) {
method getTransportsCreated (line 394) | @VisibleForTesting
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/http/NotifyingOutputStream.java
class NotifyingOutputStream (line 24) | public class NotifyingOutputStream extends OutputStream {
method NotifyingOutputStream (line 41) | public NotifyingOutputStream(
method write (line 47) | @Override
method write (line 53) | @Override
method write (line 59) | @Override
method flush (line 65) | @Override
method close (line 71) | @Override
method countAndCallListener (line 77) | private void countAndCallListener(int written) {
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/http/Request.java
class Request (line 25) | public class Request {
class Builder (line 36) | public static class Builder {
method build (line 42) | public Request build() {
method setAuthorization (line 52) | public Builder setAuthorization(@Nullable Authorization authorizatio...
method setAccept (line 63) | public Builder setAccept(List<String> mimeTypes) {
method setUserAgent (line 74) | public Builder setUserAgent(@Nullable String userAgent) {
method setHttpTimeout (line 86) | public Builder setHttpTimeout(@Nullable Integer httpTimeout) {
method setBody (line 97) | public Builder setBody(@Nullable HttpContent httpContent) {
method builder (line 103) | public static Builder builder() {
method Request (line 107) | private Request(Builder builder) {
method getHeaders (line 113) | HttpHeaders getHeaders() {
method getHttpContent (line 117) | @Nullable
method getHttpTimeout (line 122) | @Nullable
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/http/Response.java
class Response (line 28) | public class Response implements Closeable {
method Response (line 32) | Response(HttpResponse httpResponse) {
method getStatusCode (line 41) | public int getStatusCode() {
method getHeader (line 51) | public List<String> getHeader(String headerName) {
method getContentLength (line 61) | public long getContentLength() throws NumberFormatException {
method getBody (line 81) | public InputStream getBody() throws IOException {
method getRequestUrl (line 90) | public GenericUrl getRequestUrl() {
method close (line 94) | @Override
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/http/ResponseException.java
class ResponseException (line 24) | public class ResponseException extends IOException {
method ResponseException (line 29) | ResponseException(
method getStatusCode (line 36) | public int getStatusCode() {
method getContent (line 40) | public String getContent() {
method getHeaders (line 44) | public HttpHeaders getHeaders() {
method requestAuthorizationCleared (line 53) | public boolean requestAuthorizationCleared() {
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/image/DigestOnlyLayer.java
class DigestOnlyLayer (line 24) | public class DigestOnlyLayer implements Layer {
method DigestOnlyLayer (line 34) | public DigestOnlyLayer(DescriptorDigest digest) {
method getBlob (line 38) | @Override
method getBlobDescriptor (line 43) | @Override
method getDiffId (line 48) | @Override
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/image/Image.java
class Image (line 36) | public class Image {
class Builder (line 39) | public static class Builder {
method Builder (line 61) | private Builder(Class<? extends ManifestTemplate> imageFormat) {
method setCreated (line 71) | public Builder setCreated(Instant created) {
method setArchitecture (line 82) | public Builder setArchitecture(String architecture) {
method setOs (line 93) | public Builder setOs(String os) {
method addEnvironment (line 104) | public Builder addEnvironment(@Nullable Map<String, String> environm...
method addEnvironmentVariable (line 118) | public Builder addEnvironmentVariable(String name, String value) {
method setEntrypoint (line 129) | public Builder setEntrypoint(@Nullable List<String> entrypoint) {
method setUser (line 140) | public Builder setUser(@Nullable String user) {
method setProgramArguments (line 151) | public Builder setProgramArguments(@Nullable List<String> programArg...
method setHealthCheck (line 163) | public Builder setHealthCheck(@Nullable DockerHealthCheck healthChec...
method addExposedPorts (line 174) | public Builder addExposedPorts(@Nullable Set<Port> exposedPorts) {
method addVolumes (line 187) | public Builder addVolumes(@Nullable Set<AbsoluteUnixPath> volumes) {
method addLabels (line 200) | public Builder addLabels(@Nullable Map<String, String> labels) {
method addLabel (line 214) | public Builder addLabel(String name, String value) {
method setWorkingDirectory (line 225) | public Builder setWorkingDirectory(@Nullable String workingDirectory) {
method addLayer (line 237) | public Builder addLayer(Layer layer) throws LayerPropertyNotFoundExc...
method addHistory (line 248) | public Builder addHistory(HistoryEntry history) {
method build (line 258) | public Image build() {
method builder (line 278) | public static Builder builder(Class<? extends ManifestTemplate> imageF...
method Image (line 327) | private Image(
method getImageFormat (line 360) | public Class<? extends ManifestTemplate> getImageFormat() {
method getCreated (line 364) | @Nullable
method getArchitecture (line 369) | public String getArchitecture() {
method getOs (line 373) | public String getOs() {
method getEnvironment (line 377) | @Nullable
method getEntrypoint (line 382) | @Nullable
method getProgramArguments (line 387) | @Nullable
method getHealthCheck (line 392) | @Nullable
method getExposedPorts (line 397) | @Nullable
method getVolumes (line 402) | @Nullable
method getLabels (line 407) | @Nullable
method getWorkingDirectory (line 412) | @Nullable
method getUser (line 417) | @Nullable
method getLayers (line 422) | public ImmutableList<Layer> getLayers() {
method getHistory (line 426) | public ImmutableList<HistoryEntry> getHistory() {
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/image/ImageTarball.java
class ImageTarball (line 38) | public class ImageTarball {
method ImageTarball (line 66) | public ImageTarball(
method writeTo (line 80) | public void writeTo(OutputStream out) throws IOException {
method ociWriteTo (line 88) | private void ociWriteTo(OutputStream out) throws IOException {
method dockerWriteTo (line 133) | private void dockerWriteTo(OutputStream out) throws IOException {
method getTotalLayerSize (line 174) | public long getTotalLayerSize() {
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/image/Layer.java
type Layer (line 52) | public interface Layer {
method getBlob (line 60) | Blob getBlob() throws LayerPropertyNotFoundException;
method getBlobDescriptor (line 69) | BlobDescriptor getBlobDescriptor() throws LayerPropertyNotFoundException;
method getDiffId (line 77) | DescriptorDigest getDiffId() throws LayerPropertyNotFoundException;
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/image/LayerCountMismatchException.java
class LayerCountMismatchException (line 20) | public class LayerCountMismatchException extends Exception {
method LayerCountMismatchException (line 22) | public LayerCountMismatchException(String message) {
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/image/LayerPropertyNotFoundException.java
class LayerPropertyNotFoundException (line 20) | public class LayerPropertyNotFoundException extends RuntimeException {
method LayerPropertyNotFoundException (line 22) | LayerPropertyNotFoundException(String message) {
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/image/ReferenceLayer.java
class ReferenceLayer (line 27) | public class ReferenceLayer implements Layer {
method ReferenceLayer (line 41) | public ReferenceLayer(BlobDescriptor blobDescriptor, DescriptorDigest ...
method getBlob (line 46) | @Override
method getBlobDescriptor (line 51) | @Override
method getDiffId (line 56) | @Override
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/image/ReferenceNoDiffIdLayer.java
class ReferenceNoDiffIdLayer (line 27) | public class ReferenceNoDiffIdLayer implements Layer {
method ReferenceNoDiffIdLayer (line 37) | public ReferenceNoDiffIdLayer(BlobDescriptor blobDescriptor) {
method getBlob (line 41) | @Override
method getBlobDescriptor (line 47) | @Override
method getDiffId (line 52) | @Override
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/image/ReproducibleLayerBuilder.java
class ReproducibleLayerBuilder (line 43) | public class ReproducibleLayerBuilder {
class UniqueTarArchiveEntries (line 49) | private static class UniqueTarArchiveEntries {
method add (line 69) | private void add(TarArchiveEntry tarArchiveEntry) throws IOException {
method getSortedEntries (line 92) | private List<TarArchiveEntry> getSortedEntries() {
method clearTimeHeaders (line 99) | private static void clearTimeHeaders(TarArchiveEntry entry, Instant mo...
method setUserAndGroup (line 113) | private static void setUserAndGroup(TarArchiveEntry entry, FileEntry l...
method ReproducibleLayerBuilder (line 150) | public ReproducibleLayerBuilder(ImmutableList<FileEntry> layerEntries) {
method build (line 160) | public Blob build() throws IOException {
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/image/json/BadContainerConfigurationFormatException.java
class BadContainerConfigurationFormatException (line 20) | public class BadContainerConfigurationFormatException extends Exception {
method BadContainerConfigurationFormatException (line 23) | BadContainerConfigurationFormatException(String message) {
method BadContainerConfigurationFormatException (line 27) | BadContainerConfigurationFormatException(String message, Throwable cau...
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/image/json/BuildableManifestTemplate.java
type BuildableManifestTemplate (line 34) | public interface BuildableManifestTemplate extends ManifestTemplate {
class ContentDescriptorTemplate (line 43) | class ContentDescriptorTemplate implements JsonTemplate {
method ContentDescriptorTemplate (line 54) | ContentDescriptorTemplate(String mediaType, long size, DescriptorDig...
method ContentDescriptorTemplate (line 61) | @SuppressWarnings("unused")
method getSize (line 64) | public long getSize() {
method setSize (line 68) | void setSize(long size) {
method getDigest (line 72) | @Nullable
method setDigest (line 77) | void setDigest(DescriptorDigest digest) {
method getUrls (line 81) | @VisibleForTesting
method setUrls (line 87) | void setUrls(List<String> urls) {
method getAnnotations (line 91) | @VisibleForTesting
method setAnnotations (line 97) | void setAnnotations(Map<String, String> annotations) {
method getManifestMediaType (line 107) | @Override
method getContainerConfiguration (line 115) | @Nullable
method getLayers (line 123) | List<ContentDescriptorTemplate> getLayers();
method setContainerConfiguration (line 131) | void setContainerConfiguration(long size, DescriptorDigest digest);
method addLayer (line 139) | void addLayer(long size, DescriptorDigest digest);
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/image/json/ContainerConfigurationTemplate.java
class ContainerConfigurationTemplate (line 80) | @JsonIgnoreProperties(ignoreUnknown = true)
class ConfigurationObjectTemplate (line 102) | @JsonIgnoreProperties(ignoreUnknown = true)
class HealthCheckObjectTemplate (line 134) | private static class HealthCheckObjectTemplate implements JsonTemplate {
class RootFilesystemObjectTemplate (line 158) | private static class RootFilesystemObjectTemplate implements JsonTempl...
method setCreated (line 171) | public void setCreated(@Nullable String created) {
method setArchitecture (line 182) | public void setArchitecture(String architecture) {
method setOs (line 193) | public void setOs(String os) {
method setContainerEnvironment (line 197) | public void setContainerEnvironment(@Nullable List<String> environment) {
method setContainerEntrypoint (line 201) | public void setContainerEntrypoint(@Nullable List<String> command) {
method setContainerCmd (line 205) | public void setContainerCmd(@Nullable List<String> cmd) {
method setContainerHealthCheckTest (line 214) | public void setContainerHealthCheckTest(List<String> test) {
method setContainerHealthCheckInterval (line 226) | public void setContainerHealthCheckInterval(@Nullable Long interval) {
method setContainerHealthCheckTimeout (line 238) | public void setContainerHealthCheckTimeout(@Nullable Long timeout) {
method setContainerHealthCheckStartPeriod (line 250) | public void setContainerHealthCheckStartPeriod(@Nullable Long startPer...
method setContainerHealthCheckRetries (line 262) | public void setContainerHealthCheckRetries(@Nullable Integer retries) {
method setContainerExposedPorts (line 269) | public void setContainerExposedPorts(@Nullable Map<String, Map<String,...
method setContainerLabels (line 273) | public void setContainerLabels(@Nullable Map<String, String> labels) {
method setContainerWorkingDir (line 277) | public void setContainerWorkingDir(@Nullable String workingDirectory) {
method setContainerUser (line 281) | public void setContainerUser(@Nullable String user) {
method setContainerVolumes (line 285) | public void setContainerVolumes(@Nullable Map<String, Map<String, Stri...
method addLayerDiffId (line 289) | public void addLayerDiffId(DescriptorDigest diffId) {
method addHistoryEntry (line 293) | public void addHistoryEntry(HistoryEntry historyEntry) {
method getDiffIds (line 297) | List<DescriptorDigest> getDiffIds() {
method getHistory (line 301) | List<HistoryEntry> getHistory() {
method getCreated (line 305) | @Nullable
method getArchitecture (line 317) | public String getArchitecture() {
method getOs (line 328) | public String getOs() {
method getContainerEnvironment (line 332) | @Nullable
method getContainerEntrypoint (line 337) | @Nullable
method getContainerCmd (line 342) | @Nullable
method getContainerHealthTest (line 347) | @Nullable
method getContainerHealthInterval (line 352) | @Nullable
method getContainerHealthTimeout (line 357) | @Nullable
method getContainerHealthStartPeriod (line 362) | @Nullable
method getContainerHealthRetries (line 367) | @Nullable
method getContainerExposedPorts (line 372) | @Nullable
method getContainerLabels (line 377) | @Nullable
method getContainerWorkingDir (line 382) | @Nullable
method getContainerUser (line 387) | @Nullable
method getContainerVolumes (line 392) | @Nullable
method getLayerDiffId (line 397) | public DescriptorDigest getLayerDiffId(int index) {
method getLayerCount (line 401) | public int getLayerCount() {
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/image/json/DescriptorDigestDeserializer.java
class DescriptorDigestDeserializer (line 27) | public class DescriptorDigestDeserializer extends JsonDeserializer<Descr...
method deserialize (line 29) | @Override
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/image/json/DescriptorDigestSerializer.java
class DescriptorDigestSerializer (line 26) | public class DescriptorDigestSerializer extends JsonSerializer<Descripto...
method serialize (line 28) | @Override
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/image/json/HistoryEntry.java
class HistoryEntry (line 33) | @JsonIgnoreProperties(ignoreUnknown = true)
class Builder (line 36) | public static class Builder {
method setCreationTimestamp (line 44) | public Builder setCreationTimestamp(Instant creationTimestamp) {
method setAuthor (line 49) | public Builder setAuthor(String author) {
method setCreatedBy (line 54) | public Builder setCreatedBy(String createdBy) {
method setComment (line 59) | public Builder setComment(String comment) {
method setEmptyLayer (line 64) | public Builder setEmptyLayer(Boolean emptyLayer) {
method build (line 74) | public HistoryEntry build() {
method Builder (line 83) | private Builder() {}
method builder (line 91) | public static Builder builder() {
method HistoryEntry (line 123) | public HistoryEntry() {}
method HistoryEntry (line 125) | private HistoryEntry(
method hasCorrespondingLayer (line 143) | @JsonIgnore
method equals (line 148) | @Override
method hashCode (line 164) | @Override
method toString (line 169) | @Override
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/image/json/ImageMetadataTemplate.java
class ImageMetadataTemplate (line 27) | public class ImageMetadataTemplate implements JsonTemplate {
method ImageMetadataTemplate (line 42) | @SuppressWarnings("unused")
method ImageMetadataTemplate (line 45) | public ImageMetadataTemplate(
method getManifestList (line 52) | @Nullable
method getManifestsAndConfigs (line 57) | public List<ManifestAndConfigTemplate> getManifestsAndConfigs() {
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/image/json/ImageToJsonTranslator.java
class ImageToJsonTranslator (line 39) | public class ImageToJsonTranslator {
method portSetToMap (line 49) | @VisibleForTesting
method volumesSetToMap (line 64) | @VisibleForTesting
method environmentMapToList (line 75) | @VisibleForTesting
method setToMap (line 105) | @Nullable
method ImageToJsonTranslator (line 125) | public ImageToJsonTranslator(Image image) {
method getContainerConfiguration (line 134) | public JsonTemplate getContainerConfiguration() {
method getManifestTemplate (line 190) | public <T extends BuildableManifestTemplate> T getManifestTemplate(
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/image/json/JsonToImageTranslator.java
class JsonToImageTranslator (line 46) | public class JsonToImageTranslator {
method toImage (line 75) | public static Image toImage(V21ManifestTemplate manifestTemplate)
method toImage (line 106) | public static Image toImage(
method configureBuilderWithContainerConfiguration (line 143) | private static void configureBuilderWithContainerConfiguration(
method portMapToSet (line 229) | @VisibleForTesting
method volumeMapToSet (line 258) | @VisibleForTesting
method JsonToImageTranslator (line 278) | private JsonToImageTranslator() {}
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/image/json/ManifestAndConfigTemplate.java
class ManifestAndConfigTemplate (line 25) | public class ManifestAndConfigTemplate implements JsonTemplate {
method ManifestAndConfigTemplate (line 43) | @SuppressWarnings("unused")
method ManifestAndConfigTemplate (line 52) | public ManifestAndConfigTemplate(
method ManifestAndConfigTemplate (line 67) | public ManifestAndConfigTemplate(
method getManifestDigest (line 83) | @Nullable
method getManifest (line 93) | @Nullable
method getConfig (line 103) | @Nullable
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/image/json/ManifestListGenerator.java
class ManifestListGenerator (line 28) | public class ManifestListGenerator {
method ManifestListGenerator (line 32) | public ManifestListGenerator(List<Image> images) {
method getManifestListTemplate (line 45) | public <T extends BuildableManifestTemplate> ManifestTemplate getManif...
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/image/json/ManifestListTemplate.java
type ManifestListTemplate (line 27) | public interface ManifestListTemplate extends ManifestTemplate {
method getDigestsForPlatform (line 37) | List<String> getDigestsForPlatform(String architecture, String os);
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/image/json/ManifestTemplate.java
type ManifestTemplate (line 23) | @JsonIgnoreProperties(ignoreUnknown = true)
method getSchemaVersion (line 26) | int getSchemaVersion();
method getManifestMediaType (line 28) | String getManifestMediaType();
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/image/json/OciIndexTemplate.java
class OciIndexTemplate (line 60) | public class OciIndexTemplate implements ManifestListTemplate {
method getSchemaVersion (line 70) | @Override
method getManifestMediaType (line 75) | @Override
method addManifest (line 86) | public void addManifest(BlobDescriptor descriptor, String imageReferen...
method addManifest (line 100) | public void addManifest(OciIndexTemplate.ManifestDescriptorTemplate ma...
method getManifests (line 104) | @VisibleForTesting
method getDigestsForPlatform (line 109) | @Override
class ManifestDescriptorTemplate (line 128) | public static class ManifestDescriptorTemplate
method ManifestDescriptorTemplate (line 131) | ManifestDescriptorTemplate(String mediaType, long size, DescriptorDi...
method ManifestDescriptorTemplate (line 136) | @SuppressWarnings("unused")
class Platform (line 141) | @JsonIgnoreProperties(ignoreUnknown = true)
method getArchitecture (line 146) | @Nullable
method getOs (line 151) | @Nullable
method setPlatform (line 165) | public void setPlatform(String architecture, String os) {
method getPlatform (line 171) | @Nullable
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/image/json/OciManifestTemplate.java
class OciManifestTemplate (line 57) | public class OciManifestTemplate implements BuildableManifestTemplate {
method getSchemaVersion (line 80) | @Override
method getManifestMediaType (line 85) | @Override
method getContainerConfiguration (line 90) | @Override
method getLayers (line 96) | @Override
method setContainerConfiguration (line 101) | @Override
method addLayer (line 106) | @Override
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/image/json/PlatformNotFoundInBaseImageException.java
class PlatformNotFoundInBaseImageException (line 22) | public class PlatformNotFoundInBaseImageException extends RegistryExcept...
method PlatformNotFoundInBaseImageException (line 24) | public PlatformNotFoundInBaseImageException(String message) {
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/image/json/UnknownManifestFormatException.java
class UnknownManifestFormatException (line 22) | public class UnknownManifestFormatException extends RegistryException {
method UnknownManifestFormatException (line 24) | public UnknownManifestFormatException(String message) {
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/image/json/UnlistedPlatformInManifestListException.java
class UnlistedPlatformInManifestListException (line 22) | public class UnlistedPlatformInManifestListException extends RegistryExc...
method UnlistedPlatformInManifestListException (line 24) | public UnlistedPlatformInManifestListException(String message) {
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/image/json/V21ManifestTemplate.java
class V21ManifestTemplate (line 62) | public class V21ManifestTemplate implements ManifestTemplate {
class LayerObjectTemplate (line 77) | @VisibleForTesting
method getDigest (line 82) | @Nullable
class HistoryObjectTemplate (line 89) | private static class HistoryObjectTemplate implements JsonTemplate {
method getLayerDigests (line 102) | public List<DescriptorDigest> getLayerDigests() {
method getSchemaVersion (line 112) | @Override
method getManifestMediaType (line 117) | @Override
method getFsLayers (line 122) | public List<LayerObjectTemplate> getFsLayers() {
method getContainerConfiguration (line 133) | public Optional<ContainerConfigurationTemplate> getContainerConfigurat...
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/image/json/V22ManifestListTemplate.java
class V22ManifestListTemplate (line 66) | public class V22ManifestListTemplate implements ManifestListTemplate {
method getSchemaVersion (line 75) | @Override
method getManifestMediaType (line 80) | @Override
method addManifest (line 92) | public void addManifest(ManifestDescriptorTemplate manifest) {
method getManifests (line 99) | @VisibleForTesting
method getDigestsForPlatform (line 104) | @Override
class ManifestDescriptorTemplate (line 117) | public static class ManifestDescriptorTemplate implements JsonTemplate {
class Platform (line 119) | @JsonIgnoreProperties(ignoreUnknown = true)
method getArchitecture (line 124) | @Nullable
method getOs (line 129) | @Nullable
method setSize (line 143) | public void setSize(long size) {
method setDigest (line 147) | public void setDigest(String digest) {
method getDigest (line 151) | @Nullable
method setMediaType (line 156) | public void setMediaType(String mediaType) {
method getMediaType (line 160) | @Nullable
method setPlatform (line 171) | public void setPlatform(String architecture, String os) {
method getPlatform (line 177) | @Nullable
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/image/json/V22ManifestTemplate.java
class V22ManifestTemplate (line 57) | public class V22ManifestTemplate implements BuildableManifestTemplate {
method getSchemaVersion (line 82) | @Override
method getManifestMediaType (line 87) | @Override
method getContainerConfiguration (line 92) | @Override
method getLayers (line 98) | @Override
method setContainerConfiguration (line 103) | @Override
method addLayer (line 108) | @Override
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/json/JsonTemplate.java
type JsonTemplate (line 27) | @JsonInclude(JsonInclude.Include.NON_NULL)
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/json/JsonTemplateMapper.java
class JsonTemplateMapper (line 55) | public class JsonTemplateMapper {
method readJsonFromFile (line 69) | public static <T extends JsonTemplate> T readJsonFromFile(Path jsonFil...
method readJsonFromFileWithLock (line 85) | public static <T extends JsonTemplate> T readJsonFromFileWithLock(
method readJson (line 104) | public static <T extends JsonTemplate> T readJson(InputStream jsonStre...
method readJson (line 118) | public static <T extends JsonTemplate> T readJson(String jsonString, C...
method readJson (line 132) | public static <T extends JsonTemplate> T readJson(byte[] jsonBytes, Cl...
method readListOfJson (line 146) | public static <T extends JsonTemplate> List<T> readListOfJson(
method toUtf8String (line 153) | public static String toUtf8String(JsonTemplate template) throws IOExce...
method toUtf8String (line 157) | public static String toUtf8String(List<? extends JsonTemplate> templat...
method toByteArray (line 161) | public static byte[] toByteArray(JsonTemplate template) throws IOExcep...
method toByteArray (line 165) | public static byte[] toByteArray(List<? extends JsonTemplate> template...
method writeTo (line 169) | public static void writeTo(JsonTemplate template, OutputStream out) th...
method writeTo (line 173) | public static void writeTo(List<? extends JsonTemplate> templates, Out...
method toUtf8String (line 178) | private static String toUtf8String(Object template) throws IOException {
method toByteArray (line 182) | private static byte[] toByteArray(Object template) throws IOException {
method writeTo (line 188) | private static void writeTo(Object template, OutputStream out) throws ...
method JsonTemplateMapper (line 192) | private JsonTemplateMapper() {}
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/registry/AbstractManifestPuller.java
class AbstractManifestPuller (line 47) | abstract class AbstractManifestPuller<T extends ManifestTemplate, R>
method AbstractManifestPuller (line 54) | AbstractManifestPuller(
method getContent (line 63) | @Nullable
method getAccept (line 69) | @Override
method handleResponse (line 96) | @Override
method computeReturn (line 106) | abstract R computeReturn(ManifestAndDigest<T> manifestAndDigest);
method getApiRoute (line 108) | @Override
method getHttpMethod (line 117) | @Override
method getActionDescription (line 122) | @Override
method getManifestTemplateFromJson (line 136) | private T getManifestTemplateFromJson(String jsonString)
method handleHttpResponseException (line 191) | @Override
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/registry/AuthenticationMethodRetriever.java
class AuthenticationMethodRetriever (line 34) | class AuthenticationMethodRetriever
method AuthenticationMethodRetriever (line 41) | AuthenticationMethodRetriever(
method getContent (line 50) | @Nullable
method getAccept (line 56) | @Override
method handleResponse (line 67) | @Override
method getApiRoute (line 72) | @Override
method getHttpMethod (line 77) | @Override
method getActionDescription (line 82) | @Override
method handleHttpResponseException (line 87) | @Override
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/registry/BlobChecker.java
class BlobChecker (line 37) | class BlobChecker implements RegistryEndpointProvider<Optional<BlobDescr...
method BlobChecker (line 42) | BlobChecker(
method handleResponse (line 50) | @Override
method handleHttpResponseException (line 62) | @Override
method getApiRoute (line 85) | @Override
method getContent (line 91) | @Nullable
method getAccept (line 97) | @Override
method getHttpMethod (line 102) | @Override
method getActionDescription (line 107) | @Override
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/registry/BlobPuller.java
class BlobPuller (line 37) | class BlobPuller implements RegistryEndpointProvider<Void> {
method BlobPuller (line 52) | BlobPuller(
method handleResponse (line 65) | @Override
method getContent (line 87) | @Override
method getAccept (line 93) | @Override
method getApiRoute (line 98) | @Override
method getHttpMethod (line 104) | @Override
method getActionDescription (line 109) | @Override
method handleHttpResponseException (line 119) | @Override
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/registry/BlobPusher.java
class BlobPusher (line 48) | class BlobPusher {
class Initializer (line 56) | private class Initializer implements RegistryEndpointProvider<Optional...
method getContent (line 58) | @Nullable
method getAccept (line 64) | @Override
method handleResponse (line 73) | @Override
method getApiRoute (line 89) | @Override
method getHttpMethod (line 102) | @Override
method getActionDescription (line 107) | @Override
method handleHttpResponseException (line 112) | @Override
class Writer (line 120) | private class Writer implements RegistryEndpointProvider<URL> {
method getContent (line 125) | @Nullable
method getAccept (line 131) | @Override
method handleResponse (line 137) | @Override
method getApiRoute (line 143) | @Override
method getHttpMethod (line 148) | @Override
method getActionDescription (line 153) | @Override
method Writer (line 158) | private Writer(URL location, Consumer<Long> writtenByteCountListener) {
method handleHttpResponseException (line 163) | @Override
class Committer (line 171) | private class Committer implements RegistryEndpointProvider<Void> {
method getContent (line 175) | @Nullable
method getAccept (line 181) | @Override
method handleResponse (line 186) | @Override
method getApiRoute (line 192) | @Override
method getHttpMethod (line 197) | @Override
method getActionDescription (line 202) | @Override
method Committer (line 207) | private Committer(URL location) {
method handleHttpResponseException (line 211) | @Override
method BlobPusher (line 218) | BlobPusher(
method initializer (line 233) | RegistryEndpointProvider<Optional<URL>> initializer() {
method writer (line 244) | RegistryEndpointProvider<URL> writer(URL location, Consumer<Long> writ...
method committer (line 254) | RegistryEndpointProvider<Void> committer(URL location) {
method buildRegistryErrorException (line 258) | private RegistryErrorException buildRegistryErrorException(String reas...
method getActionDescription (line 269) | private String getActionDescription() {
method getRedirectLocation (line 290) | private URL getRedirectLocation(Response response) throws RegistryErro...
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/registry/ErrorCodes.java
type ErrorCodes (line 27) | enum ErrorCodes {
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/registry/ErrorResponseUtil.java
class ErrorResponseUtil (line 28) | public class ErrorResponseUtil {
method getErrorCode (line 39) | public static ErrorCodes getErrorCode(ResponseException responseExcept...
method ErrorResponseUtil (line 70) | private ErrorResponseUtil() {}
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/registry/ManifestAndDigest.java
class ManifestAndDigest (line 23) | public class ManifestAndDigest<T extends ManifestTemplate> {
method ManifestAndDigest (line 28) | public ManifestAndDigest(T manifest, DescriptorDigest digest) {
method getManifest (line 38) | public T getManifest() {
method getDigest (line 47) | public DescriptorDigest getDigest() {
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/registry/ManifestChecker.java
class ManifestChecker (line 25) | class ManifestChecker<T extends ManifestTemplate>
method ManifestChecker (line 28) | ManifestChecker(
method handleHttpResponseException (line 35) | @Override
method computeReturn (line 56) | @Override
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/registry/ManifestPuller.java
class ManifestPuller (line 22) | class ManifestPuller<T extends ManifestTemplate>
method ManifestPuller (line 25) | ManifestPuller(
method computeReturn (line 32) | @Override
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/registry/ManifestPusher.java
class ManifestPusher (line 39) | class ManifestPusher implements RegistryEndpointProvider<DescriptorDiges...
method makeUnexpectedImageDigestWarning (line 52) | private static String makeUnexpectedImageDigestWarning(
method ManifestPusher (line 71) | ManifestPusher(
method getContent (line 82) | @Override
method getAccept (line 89) | @Override
method handleHttpResponseException (line 94) | @Override
method handleResponse (line 125) | @Override
method getApiRoute (line 149) | @Override
method getHttpMethod (line 155) | @Override
method getActionDescription (line 160) | @Override
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/registry/RegistryAliasGroup.java
class RegistryAliasGroup (line 28) | public class RegistryAliasGroup {
method RegistryAliasGroup (line 30) | private RegistryAliasGroup() {}
method getAliasesGroup (line 51) | public static List<String> getAliasesGroup(String registry) {
method getHost (line 70) | public static String getHost(String registry) {
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/registry/RegistryAuthenticator.java
class RegistryAuthenticator (line 54) | public class RegistryAuthenticator {
method fromAuthenticationMethod (line 69) | static Optional<RegistryAuthenticator> fromAuthenticationMethod(
method newRegistryAuthenticationFailedException (line 107) | private static RegistryAuthenticationFailedException newRegistryAuthen...
class AuthenticationResponseTemplate (line 119) | @VisibleForTesting
method getToken (line 136) | @Nullable
method RegistryAuthenticator (line 152) | private RegistryAuthenticator(
method authenticatePull (line 174) | public Authorization authenticatePull(@Nullable Credential credential)
method authenticatePush (line 188) | public Authorization authenticatePush(@Nullable Credential credential)
method getServiceScopeRequestParameters (line 193) | private String getServiceScopeRequestParameters(Map<String, String> re...
method getAuthenticationUrl (line 205) | @VisibleForTesting
method getAuthRequestParameters (line 213) | @VisibleForTesting
method isOAuth2Auth (line 227) | @VisibleForTesting
method authenticate (line 244) | private Authorization authenticate(@Nullable Credential credential, St...
method authenticate (line 260) | private Authorization authenticate(
FILE: jib-core/src/main/java/com/google/cloud/tools/jib/registry/RegistryClient.java
class RegistryClient (line 56) | @ThreadSafe
class Factory (line 60) | public static class Factory {
method Factory (line 69) | private Factory(
method setCredential (line 84) | public Factory setCredential(@Nullable Credential credential) {
method setUserAgent (line 95) | public Factory setUserAgent(@Nullable String userAgent) {
method newRegistryClient (line 105) | public RegistryClient newRegistryClient()
Condensed preview — 1151 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (4,415K chars).
[
{
"path": ".allstar/binary_artifacts.yaml",
"chars": 281,
"preview": "# Ignore reason: jars are used for testing purposes only\nignorePaths:\n - jib-gradle-plugin/src/integration-test/resourc"
},
{
"path": ".gitattributes",
"chars": 30,
"preview": "*.bat\teol=crlf\n*.cmd\teol=crlf\n"
},
{
"path": ".github/ISSUE_TEMPLATE/issue_report.md",
"chars": 1974,
"preview": "---\nname: Issue report\nabout: Create a report to help us improve\ntitle: ''\nlabels: ''\nassignees: ''\n\n---\n\n<!--\nPlease fo"
},
{
"path": ".github/PULL_REQUEST_TEMPLATE.md",
"chars": 1381,
"preview": "Thank you for your interest in contributing! For general guidelines, please refer to\nthe [contributing guide](https://gi"
},
{
"path": ".github/RELEASE_TEMPLATES/cli_release_checklist.md",
"chars": 561,
"preview": "---\ntitle: CLI Release {{ env.RELEASE_NAME }}\nlabels: release\n---\n## Requirements\n- [ ] ⚠️ Ensure the release process ha"
},
{
"path": ".github/RELEASE_TEMPLATES/core_release_checklist.md",
"chars": 349,
"preview": "---\ntitle: Core Release {{ env.RELEASE_NAME }}\nlabels: release\n---\n## Requirements\n- [ ] ⚠️ Ensure the release process h"
},
{
"path": ".github/RELEASE_TEMPLATES/plugin_release_checklist.md",
"chars": 1163,
"preview": "---\ntitle: Plugin Release {{ env.RELEASE_NAME }}\nlabels: release\n---\n## Requirements\n- [ ] ⚠️ Ensure the release process"
},
{
"path": ".github/dependabot.yml",
"chars": 206,
"preview": "version: 2\nupdates:\n - package-ecosystem: \"gradle\"\n directory: \"/\"\n schedule:\n interval: \"daily\"\n - package"
},
{
"path": ".github/workflows/gradle-wrapper-validation.yml",
"chars": 242,
"preview": "name: \"Validate Gradle Wrapper\"\non: [push, pull_request]\n\njobs:\n validation:\n name: \"Gradle wrapper validation\"\n "
},
{
"path": ".github/workflows/jib-cli-release.yml",
"chars": 6176,
"preview": "name: Release Jib CLI\non:\n workflow_dispatch:\n inputs:\n release_version:\n description: new release versi"
},
{
"path": ".github/workflows/prepare-release.yml",
"chars": 6714,
"preview": "name: Prepare Jib release\non:\n workflow_dispatch:\n inputs:\n project:\n description: Jib project to releas"
},
{
"path": ".github/workflows/sonar.yml",
"chars": 1691,
"preview": "name: SonarCloud Analysis\non:\n push:\n branches:\n - master\n pull_request:\n types: [opened, synchronize, reop"
},
{
"path": ".github/workflows/unit-tests.yml",
"chars": 889,
"preview": "name: Unit Tests\non:\n push:\n branches:\n - master\n pull_request:\n workflow_dispatch:\n\njobs:\n unit-tests:\n "
},
{
"path": ".gitignore",
"chars": 263,
"preview": "build/\n!jib-gradle-plugin/src/test/resources/gradle/application/build/\ntarget/\nout\nbin/\n*.iml\n*.ipr\n*.iws\n.idea\n.gradle/"
},
{
"path": "CODE_OF_CONDUCT.md",
"chars": 1981,
"preview": "# Contributor Code of Conduct\n\nAs contributors and maintainers of this project,\nand in the interest of fostering an open"
},
{
"path": "CONTRIBUTING.md",
"chars": 7859,
"preview": "\nThis project is currently stable, and we are primarily focused on critical bug fixes and platform evolution to ensure i"
},
{
"path": "LICENSE",
"chars": 11358,
"preview": "\n Apache License\n Version 2.0, January 2004\n "
},
{
"path": "README.md",
"chars": 6446,
"preview": "\n[ Google LLC\\.$\n^ \\*$\n^ \\* Licensed under the Apache License, Version 2\\."
},
{
"path": "docs/configure-gcp-credentials.md",
"chars": 1475,
"preview": "# Configuring Credentials for [Google Container Registry (GCR)](https://cloud.google.com/container-registry/)\n\nThere are"
},
{
"path": "docs/default_base_image.md",
"chars": 5056,
"preview": "# Default Base Images in Jib\n\n## Jib Build Plugins 3+\n\nStarting from version 3.2, the default base image is the official"
},
{
"path": "docs/faq.md",
"chars": 53381,
"preview": "## Frequently Asked Questions (FAQ)\n\nIf a question you have is not answered below, please [submit an issue](/../../issue"
},
{
"path": "docs/google-cloud-build.md",
"chars": 1543,
"preview": "# Jib on Google Cloud Build\n\nYou can use Jib on [Google Cloud Build](https://cloud.google.com/build) in a simple step:\n\n"
},
{
"path": "docs/privacy.md",
"chars": 1376,
"preview": "The privacy of our users is very important to us.\nYour use of this software is subject to the <a href=https://policies.g"
},
{
"path": "docs/self_sign_cert.md",
"chars": 5210,
"preview": "# Accessing a private docker registry with self-signed certificate\n\nJib relies on the Java Runtime Environment's list of"
},
{
"path": "examples/README.md",
"chars": 1804,
"preview": "# Example projects containerizing with Jib\n\nPlease [file an issue](/../../issues/new) if you find any problems with the "
},
{
"path": "examples/dropwizard/.mvn/wrapper/MavenWrapperDownloader.java",
"chars": 4473,
"preview": "/*\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements. See the NOTICE fi"
},
{
"path": "examples/dropwizard/.mvn/wrapper/maven-wrapper.properties",
"chars": 115,
"preview": "distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.0/apache-maven-3.6.0-bin.zip"
},
{
"path": "examples/dropwizard/README.md",
"chars": 1756,
"preview": "# Containerize a [Dropwizard](https://dropwizard.io) application with Jib\n\n## How to start the Dropwizard application\n\n1"
},
{
"path": "examples/dropwizard/mvnw",
"chars": 9113,
"preview": "#!/bin/sh\n# ----------------------------------------------------------------------------\n# Licensed to the Apache Softwa"
},
{
"path": "examples/dropwizard/mvnw.cmd",
"chars": 5971,
"preview": "@REM ----------------------------------------------------------------------------\r\n@REM Licensed to the Apache Software "
},
{
"path": "examples/dropwizard/pom.xml",
"chars": 4341,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project\n xmlns=\"http://maven.apache.org/POM/4.0.0\"\n xmlns:xsi=\"htt"
},
{
"path": "examples/dropwizard/src/main/java/example/JibExampleApplication.java",
"chars": 1858,
"preview": "/*\n * Copyright 2018 Google LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not\n * us"
},
{
"path": "examples/dropwizard/src/main/java/example/JibExampleConfiguration.java",
"chars": 1102,
"preview": "/*\n * Copyright 2018 Google LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not\n * us"
},
{
"path": "examples/dropwizard/src/main/java/example/api/Saying.java",
"chars": 1026,
"preview": "/*\n * Copyright 2018 Google LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not\n * us"
},
{
"path": "examples/dropwizard/src/main/java/example/config/HelloWorldConfiguration.java",
"chars": 1105,
"preview": "/*\n * Copyright 2018 Google LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not\n * us"
},
{
"path": "examples/dropwizard/src/main/java/example/health/TemplateHealthCheck.java",
"chars": 1103,
"preview": "/*\n * Copyright 2018 Google LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not\n * us"
},
{
"path": "examples/dropwizard/src/main/java/example/resources/HelloWorldResource.java",
"chars": 1874,
"preview": "/*\n * Copyright 2018 Google LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not\n * us"
},
{
"path": "examples/dropwizard/src/main/resources/banner.txt",
"chars": 218,
"preview": "================================================================================\n\n Dropwiza"
},
{
"path": "examples/dropwizard/src/main/resources/dropwizard.yml",
"chars": 413,
"preview": "<#-- FreeMarker Enabled - https://github.com/tkrille/dropwizard-template-config -->\nhello:\n template: ${DW_TEMPLATE!'He"
},
{
"path": "examples/helloworld/README.md",
"chars": 234,
"preview": "Builds a container image that outputs `Hello World` when run.\n\nTo build the image:\n\n1. In `pom.xml` or `build.gradle`, r"
},
{
"path": "examples/helloworld/build.gradle",
"chars": 307,
"preview": "plugins {\n id 'java'\n id 'com.google.cloud.tools.jib' version '3.5.3'\n}\n\nsourceCompatibility = 1.8\ntargetCompatibility"
},
{
"path": "examples/helloworld/gradle/wrapper/gradle-wrapper.properties",
"chars": 200,
"preview": "distributionBase=GRADLE_USER_HOME\ndistributionPath=wrapper/dists\ndistributionUrl=https\\://services.gradle.org/distributi"
},
{
"path": "examples/helloworld/gradlew",
"chars": 5305,
"preview": "#!/usr/bin/env sh\n\n##############################################################################\n##\n## Gradle start up"
},
{
"path": "examples/helloworld/gradlew.bat",
"chars": 2269,
"preview": "@if \"%DEBUG%\" == \"\" @echo off\r\n@rem ##########################################################################\r\n@rem\r\n@r"
},
{
"path": "examples/helloworld/pom.xml",
"chars": 1740,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
},
{
"path": "examples/helloworld/settings.gradle",
"chars": 0,
"preview": ""
},
{
"path": "examples/helloworld/src/main/java/example/HelloWorld.java",
"chars": 1168,
"preview": "/*\n * Copyright 2018 Google LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not\n * us"
},
{
"path": "examples/helloworld/src/main/resources/world",
"chars": 5,
"preview": "world"
},
{
"path": "examples/java-agent/README.md",
"chars": 655,
"preview": "This SparkJava-based example builds a container image that includes the [Stackdriver Debugger Java Agent](https://cloud."
},
{
"path": "examples/java-agent/build.gradle",
"chars": 1705,
"preview": "plugins {\n id 'java'\n id 'com.google.cloud.tools.jib' version '3.5.3'\n id 'de.undercouch.download' version '4.0.0'\n "
},
{
"path": "examples/java-agent/gradle/wrapper/gradle-wrapper.properties",
"chars": 200,
"preview": "distributionBase=GRADLE_USER_HOME\ndistributionPath=wrapper/dists\ndistributionUrl=https\\://services.gradle.org/distributi"
},
{
"path": "examples/java-agent/gradle.properties",
"chars": 25,
"preview": "version = 0.0.1-SNAPSHOT\n"
},
{
"path": "examples/java-agent/gradlew",
"chars": 5305,
"preview": "#!/usr/bin/env sh\n\n##############################################################################\n##\n## Gradle start up"
},
{
"path": "examples/java-agent/gradlew.bat",
"chars": 2269,
"preview": "@if \"%DEBUG%\" == \"\" @echo off\r\n@rem ##########################################################################\r\n@rem\r\n@r"
},
{
"path": "examples/java-agent/pom.xml",
"chars": 4564,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
},
{
"path": "examples/java-agent/settings.gradle",
"chars": 0,
"preview": ""
},
{
"path": "examples/java-agent/src/main/java/example/HelloWorld.java",
"chars": 992,
"preview": "/*\n * Copyright 2018 Google LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not\n * us"
},
{
"path": "examples/java-agent/src/main/resources/world",
"chars": 5,
"preview": "world"
},
{
"path": "examples/ktor/README.md",
"chars": 909,
"preview": "# Containerize a [Ktor] application with Jib\n\nThis is an example of how to easily build a Docker image for a [Ktor] appl"
},
{
"path": "examples/ktor/build.gradle.kts",
"chars": 1528,
"preview": "plugins {\n application\n kotlin(\"jvm\") version \"1.3.10\"\n id(\"com.google.cloud.tools.jib\") version \"3.5.3\"\n}\n\ngro"
},
{
"path": "examples/ktor/gradle/wrapper/gradle-wrapper.properties",
"chars": 200,
"preview": "distributionBase=GRADLE_USER_HOME\ndistributionPath=wrapper/dists\ndistributionUrl=https\\://services.gradle.org/distributi"
},
{
"path": "examples/ktor/gradle.properties",
"chars": 26,
"preview": "kotlin.code.style=official"
},
{
"path": "examples/ktor/gradlew",
"chars": 5305,
"preview": "#!/usr/bin/env sh\n\n##############################################################################\n##\n## Gradle start up"
},
{
"path": "examples/ktor/gradlew.bat",
"chars": 2269,
"preview": "@if \"%DEBUG%\" == \"\" @echo off\r\n@rem ##########################################################################\r\n@rem\r\n@r"
},
{
"path": "examples/ktor/settings.gradle.kts",
"chars": 38,
"preview": "rootProject.name = \"ktor-jib-example\"\n"
},
{
"path": "examples/ktor/src/main/kotlin/example/ktor/App.kt",
"chars": 5720,
"preview": "/*\n * Copyright 2018 Google LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not\n * us"
},
{
"path": "examples/ktor/src/main/resources/application.conf",
"chars": 333,
"preview": "# Ktor configuration - https://ktor.io/servers/configuration.html\nktor {\n deployment {\n port = 8080\n }\n\n "
},
{
"path": "examples/ktor/src/main/resources/logback.xml",
"chars": 474,
"preview": "<!-- https://ktor.io/servers/logging.html -->\n<configuration>\n <appender name=\"STDOUT\" class=\"ch.qos.logback.core.Con"
},
{
"path": "examples/micronaut/README.md",
"chars": 2239,
"preview": "# Containerize a [Micronaut](http://micronaut.io/) app with Jib\n\nThis is an example of how to easily build a Docker imag"
},
{
"path": "examples/micronaut/build.gradle",
"chars": 1727,
"preview": "plugins {\n id \"groovy\"\n id \"com.github.johnrengelman.shadow\" version \"5.2.0\"\n id \"application\"\n id 'com.goog"
},
{
"path": "examples/micronaut/gradle/wrapper/gradle-wrapper.properties",
"chars": 200,
"preview": "distributionBase=GRADLE_USER_HOME\ndistributionPath=wrapper/dists\ndistributionUrl=https\\://services.gradle.org/distributi"
},
{
"path": "examples/micronaut/gradle.properties",
"chars": 25,
"preview": "micronautVersion=2.0.0.M3"
},
{
"path": "examples/micronaut/gradlew",
"chars": 5305,
"preview": "#!/usr/bin/env sh\n\n##############################################################################\n##\n## Gradle start up"
},
{
"path": "examples/micronaut/gradlew.bat",
"chars": 2269,
"preview": "@if \"%DEBUG%\" == \"\" @echo off\r\n@rem ##########################################################################\r\n@rem\r\n@r"
},
{
"path": "examples/micronaut/settings.gradle",
"chars": 35,
"preview": "rootProject.name = 'micronaut-jib'\n"
},
{
"path": "examples/micronaut/src/main/groovy/example/micronaut/Application.groovy",
"chars": 226,
"preview": "package example.micronaut\n\nimport groovy.transform.CompileStatic\nimport io.micronaut.runtime.Micronaut\n\n@CompileStatic\nc"
},
{
"path": "examples/micronaut/src/main/groovy/example/micronaut/HelloController.groovy",
"chars": 417,
"preview": "package example.micronaut\n\nimport groovy.transform.CompileStatic\nimport io.micronaut.http.MediaType\nimport io.micronaut."
},
{
"path": "examples/micronaut/src/main/resources/application.yml",
"chars": 50,
"preview": "micronaut:\n application:\n name: examples"
},
{
"path": "examples/micronaut/src/main/resources/logback.xml",
"chars": 446,
"preview": "<configuration>\n\n <appender name=\"STDOUT\" class=\"ch.qos.logback.core.ConsoleAppender\">\n <!-- encoders are assi"
},
{
"path": "examples/micronaut/src/test/groovy/example/micronaut/HelloControllerSpec.groovy",
"chars": 841,
"preview": "package example.micronaut\n\nimport io.micronaut.context.ApplicationContext\nimport io.micronaut.http.HttpRequest\nimport io"
},
{
"path": "examples/multi-module/.mvn/wrapper/MavenWrapperDownloader.java",
"chars": 4473,
"preview": "/*\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements. See the NOTICE fi"
},
{
"path": "examples/multi-module/.mvn/wrapper/maven-wrapper.properties",
"chars": 115,
"preview": "distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.5.4/apache-maven-3.5.4-bin.zip"
},
{
"path": "examples/multi-module/README.md",
"chars": 4151,
"preview": "# Multi-module example\n\nThis example shows how to build multiple containers for a multi-module project in both **Maven**"
},
{
"path": "examples/multi-module/build.gradle",
"chars": 286,
"preview": "// Define plugin versions here, but only apply them where we need to\nplugins {\n id 'org.springframework.boot' version '"
},
{
"path": "examples/multi-module/gradle/wrapper/gradle-wrapper.properties",
"chars": 200,
"preview": "distributionBase=GRADLE_USER_HOME\ndistributionPath=wrapper/dists\ndistributionUrl=https\\://services.gradle.org/distributi"
},
{
"path": "examples/multi-module/gradle-build.sh",
"chars": 105,
"preview": "#!/bin/sh\n\nset -ex\n\nexport PROJECT_ID=$(gcloud config list --format 'value(core.project)')\n./gradlew jib\n"
},
{
"path": "examples/multi-module/gradlew",
"chars": 5305,
"preview": "#!/usr/bin/env sh\n\n##############################################################################\n##\n## Gradle start up"
},
{
"path": "examples/multi-module/gradlew.bat",
"chars": 2269,
"preview": "@if \"%DEBUG%\" == \"\" @echo off\r\n@rem ##########################################################################\r\n@rem\r\n@r"
},
{
"path": "examples/multi-module/hello-service/build.gradle",
"chars": 510,
"preview": "plugins {\n id 'java'\n id 'eclipse'\n id 'idea'\n id 'org.springframework.boot'\n id 'io.spring.dependency-management'\n"
},
{
"path": "examples/multi-module/hello-service/gradle.properties",
"chars": 16,
"preview": "version = 0.1.0\n"
},
{
"path": "examples/multi-module/hello-service/pom.xml",
"chars": 612,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
},
{
"path": "examples/multi-module/hello-service/src/main/java/hello/Application.java",
"chars": 289,
"preview": "package hello;\n\nimport org.springframework.boot.SpringApplication;\nimport org.springframework.boot.autoconfigure.SpringB"
},
{
"path": "examples/multi-module/hello-service/src/main/java/hello/HelloController.java",
"chars": 431,
"preview": "package hello;\n\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annot"
},
{
"path": "examples/multi-module/kubernetes.yaml",
"chars": 1310,
"preview": "apiVersion: v1\nkind: Service\nmetadata:\n labels:\n app: name-service\n name: name-service\nspec:\n ports:\n - name: htt"
},
{
"path": "examples/multi-module/maven-build.sh",
"chars": 448,
"preview": "#!/bin/sh\n\nset -ex\n\nexport PROJECT_ID=$(gcloud config list --format 'value(core.project)')\n# if there are no intermodule"
},
{
"path": "examples/multi-module/mvnw",
"chars": 9113,
"preview": "#!/bin/sh\n# ----------------------------------------------------------------------------\n# Licensed to the Apache Softwa"
},
{
"path": "examples/multi-module/mvnw.cmd",
"chars": 5971,
"preview": "@REM ----------------------------------------------------------------------------\r\n@REM Licensed to the Apache Software "
},
{
"path": "examples/multi-module/name-service/build.gradle",
"chars": 554,
"preview": "plugins {\n id 'java'\n id 'eclipse'\n id 'idea'\n id 'org.springframework.boot'\n id 'io.spring.dependency-management'\n"
},
{
"path": "examples/multi-module/name-service/gradle.properties",
"chars": 16,
"preview": "version = 0.1.0\n"
},
{
"path": "examples/multi-module/name-service/pom.xml",
"chars": 851,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
},
{
"path": "examples/multi-module/name-service/src/main/java/name/Application.java",
"chars": 288,
"preview": "package name;\n\nimport org.springframework.boot.SpringApplication;\nimport org.springframework.boot.autoconfigure.SpringBo"
},
{
"path": "examples/multi-module/name-service/src/main/java/name/NameController.java",
"chars": 329,
"preview": "package name;\n\nimport org.springframework.web.bind.annotation.RestController;\nimport org.springframework.web.bind.annota"
},
{
"path": "examples/multi-module/pom.xml",
"chars": 1829,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\"\n xmlns:xsi=\"http://www"
},
{
"path": "examples/multi-module/settings.gradle",
"chars": 95,
"preview": "rootProject.name = 'jib-multimodule'\ninclude 'name-service', 'hello-service', 'shared-library'\n"
},
{
"path": "examples/multi-module/shared-library/build.gradle",
"chars": 279,
"preview": "plugins {\n id 'java'\n id 'eclipse'\n id 'idea'\n}\n\nsourceCompatibility = 1.8\ntargetCompatibility = 1.8\n\n// Since this l"
},
{
"path": "examples/multi-module/shared-library/gradle.properties",
"chars": 16,
"preview": "version = 0.1.0\n"
},
{
"path": "examples/multi-module/shared-library/pom.xml",
"chars": 1407,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
},
{
"path": "examples/multi-module/shared-library/src/main/java/common/SharedUtils.java",
"chars": 130,
"preview": "package common;\n\npublic class SharedUtils {\n\n public static String getText() {\n return \"A string from 'shared-librar"
},
{
"path": "examples/spring-boot/.mvn/wrapper/MavenWrapperDownloader.java",
"chars": 4473,
"preview": "/*\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements. See the NOTICE fi"
},
{
"path": "examples/spring-boot/.mvn/wrapper/maven-wrapper.properties",
"chars": 115,
"preview": "distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.5.4/apache-maven-3.5.4-bin.zip"
},
{
"path": "examples/spring-boot/README.md",
"chars": 2202,
"preview": "# Dockerize a Spring Boot application using Jib\n\nThis is an example of how to easily build a Docker image for a Spring B"
},
{
"path": "examples/spring-boot/build.gradle",
"chars": 410,
"preview": "plugins {\n id 'java'\n id 'eclipse'\n id 'idea'\n id 'org.springframework.boot' version '2.1.6.RELEASE'\n id "
},
{
"path": "examples/spring-boot/gradle/wrapper/gradle-wrapper.properties",
"chars": 200,
"preview": "distributionBase=GRADLE_USER_HOME\ndistributionPath=wrapper/dists\ndistributionUrl=https\\://services.gradle.org/distributi"
},
{
"path": "examples/spring-boot/gradlew",
"chars": 5305,
"preview": "#!/usr/bin/env sh\n\n##############################################################################\n##\n## Gradle start up"
},
{
"path": "examples/spring-boot/gradlew.bat",
"chars": 2269,
"preview": "@if \"%DEBUG%\" == \"\" @echo off\r\n@rem ##########################################################################\r\n@rem\r\n@r"
},
{
"path": "examples/spring-boot/mvnw",
"chars": 9113,
"preview": "#!/bin/sh\n# ----------------------------------------------------------------------------\n# Licensed to the Apache Softwa"
},
{
"path": "examples/spring-boot/mvnw.cmd",
"chars": 5971,
"preview": "@REM ----------------------------------------------------------------------------\r\n@REM Licensed to the Apache Software "
},
{
"path": "examples/spring-boot/pom.xml",
"chars": 1137,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
},
{
"path": "examples/spring-boot/settings.gradle",
"chars": 0,
"preview": ""
},
{
"path": "examples/spring-boot/src/main/java/hello/Application.java",
"chars": 302,
"preview": "package hello;\n\nimport org.springframework.boot.SpringApplication;\nimport org.springframework.boot.autoconfigure.SpringB"
},
{
"path": "examples/spring-boot/src/main/java/hello/HelloController.java",
"chars": 310,
"preview": "package hello;\n\nimport org.springframework.web.bind.annotation.RestController;\nimport org.springframework.web.bind.annot"
},
{
"path": "examples/vertx/README.md",
"chars": 431,
"preview": "# Containerize a [Eclipse Vert.x](https://vertx.io/) application with Jib\n\nThis is an example of how to easily build a D"
},
{
"path": "examples/vertx/build.gradle",
"chars": 517,
"preview": "plugins {\n id 'io.vertx.vertx-plugin' version '0.1.0'\n id 'com.google.cloud.tools.jib' version '3.5.3'\n}\n\nreposito"
},
{
"path": "examples/vertx/gradle/wrapper/gradle-wrapper.properties",
"chars": 200,
"preview": "distributionBase=GRADLE_USER_HOME\ndistributionPath=wrapper/dists\ndistributionUrl=https\\://services.gradle.org/distributi"
},
{
"path": "examples/vertx/gradlew",
"chars": 5305,
"preview": "#!/usr/bin/env sh\n\n##############################################################################\n##\n## Gradle start up"
},
{
"path": "examples/vertx/gradlew.bat",
"chars": 2269,
"preview": "@if \"%DEBUG%\" == \"\" @echo off\r\n@rem ##########################################################################\r\n@rem\r\n@r"
},
{
"path": "examples/vertx/settings.gradle",
"chars": 39,
"preview": "rootProject.name = 'vertx-jib-example'\n"
},
{
"path": "examples/vertx/src/main/java/example/vertx/MainVerticle.java",
"chars": 1915,
"preview": "package example.vertx;\n\nimport io.vertx.core.AbstractVerticle;\nimport io.vertx.core.Future;\nimport io.vertx.core.Vertx;\n"
},
{
"path": "examples/vertx/src/main/resources/logback.xml",
"chars": 463,
"preview": "<configuration>\n\n <appender name=\"STDOUT\" class=\"ch.qos.logback.core.ConsoleAppender\">\n <encoder>\n "
},
{
"path": "gradle/wrapper/gradle-wrapper.properties",
"chars": 202,
"preview": "distributionBase=GRADLE_USER_HOME\ndistributionPath=wrapper/dists\ndistributionUrl=https\\://services.gradle.org/distributi"
},
{
"path": "gradle.properties",
"chars": 53,
"preview": "org.gradle.jvmargs=-Xmx1024m\norg.gradle.caching=true\n"
},
{
"path": "gradlew",
"chars": 5305,
"preview": "#!/usr/bin/env sh\n\n##############################################################################\n##\n## Gradle start up"
},
{
"path": "gradlew.bat",
"chars": 2269,
"preview": "@if \"%DEBUG%\" == \"\" @echo off\r\n@rem ##########################################################################\r\n@rem\r\n@r"
},
{
"path": "jib-build-plan/CHANGELOG.md",
"chars": 1369,
"preview": "# Change Log\nAll notable changes to this project will be documented in this file.\n\n## [unreleased]\n\n### Added\n\n- Added e"
},
{
"path": "jib-build-plan/build.gradle",
"chars": 1563,
"preview": "plugins {\n id 'net.researchgate.release'\n id 'maven-publish'\n id 'eclipse'\n}\n\ndependencies {\n compileOnly dependency"
},
{
"path": "jib-build-plan/gradle.properties",
"chars": 25,
"preview": "version = 0.4.1-SNAPSHOT\n"
},
{
"path": "jib-build-plan/kokoro/release_build.sh",
"chars": 149,
"preview": "#!/bin/bash\n\n# Fail on any error.\nset -o errexit\n# Display commands to stderr.\nset -o xtrace\n\ncd github/jib\n./gradlew :j"
},
{
"path": "jib-build-plan/src/main/java/com/google/cloud/tools/jib/api/buildplan/AbsoluteUnixPath.java",
"chars": 5117,
"preview": "/*\n * Copyright 2018 Google LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not\n * us"
},
{
"path": "jib-build-plan/src/main/java/com/google/cloud/tools/jib/api/buildplan/ContainerBuildPlan.java",
"chars": 16165,
"preview": "/*\n * Copyright 2020 Google LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not\n * us"
},
{
"path": "jib-build-plan/src/main/java/com/google/cloud/tools/jib/api/buildplan/FileEntriesLayer.java",
"chars": 15018,
"preview": "/*\n * Copyright 2018 Google LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not\n * us"
},
{
"path": "jib-build-plan/src/main/java/com/google/cloud/tools/jib/api/buildplan/FileEntry.java",
"chars": 5894,
"preview": "/*\n * Copyright 2018 Google LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not\n * us"
},
{
"path": "jib-build-plan/src/main/java/com/google/cloud/tools/jib/api/buildplan/FilePermissions.java",
"chars": 4602,
"preview": "/*\n * Copyright 2018 Google LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not\n * us"
},
{
"path": "jib-build-plan/src/main/java/com/google/cloud/tools/jib/api/buildplan/FilePermissionsProvider.java",
"chars": 1272,
"preview": "/*\n * Copyright 2020 Google LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not\n * us"
},
{
"path": "jib-build-plan/src/main/java/com/google/cloud/tools/jib/api/buildplan/ImageFormat.java",
"chars": 930,
"preview": "/*\n * Copyright 2018 Google LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not\n * us"
},
{
"path": "jib-build-plan/src/main/java/com/google/cloud/tools/jib/api/buildplan/LayerObject.java",
"chars": 1028,
"preview": "/*\n * Copyright 2020 Google LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not\n * us"
},
{
"path": "jib-build-plan/src/main/java/com/google/cloud/tools/jib/api/buildplan/ModificationTimeProvider.java",
"chars": 1260,
"preview": "/*\n * Copyright 2020 Google LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not\n * us"
},
{
"path": "jib-build-plan/src/main/java/com/google/cloud/tools/jib/api/buildplan/OwnershipProvider.java",
"chars": 1236,
"preview": "/*\n * Copyright 2020 Google LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not\n * us"
},
{
"path": "jib-build-plan/src/main/java/com/google/cloud/tools/jib/api/buildplan/Platform.java",
"chars": 1520,
"preview": "/*\n * Copyright 2020 Google LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not\n * us"
},
{
"path": "jib-build-plan/src/main/java/com/google/cloud/tools/jib/api/buildplan/Port.java",
"chars": 2946,
"preview": "/*\n * Copyright 2018 Google LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not\n * us"
},
{
"path": "jib-build-plan/src/main/java/com/google/cloud/tools/jib/api/buildplan/RelativeUnixPath.java",
"chars": 2011,
"preview": "/*\n * Copyright 2018 Google LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not\n * us"
},
{
"path": "jib-build-plan/src/main/java/com/google/cloud/tools/jib/buildplan/UnixPathParser.java",
"chars": 1326,
"preview": "/*\n * Copyright 2018 Google LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not\n * us"
},
{
"path": "jib-build-plan/src/test/java/com/google/cloud/tools/jib/api/buildplan/AbsoluteUnixPathTest.java",
"chars": 3954,
"preview": "/*\n * Copyright 2018 Google LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not\n * us"
},
{
"path": "jib-build-plan/src/test/java/com/google/cloud/tools/jib/api/buildplan/ContainerBuildPlanTest.java",
"chars": 6915,
"preview": "/*\n * Copyright 2020 Google LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not\n * us"
},
{
"path": "jib-build-plan/src/test/java/com/google/cloud/tools/jib/api/buildplan/FileEntriesLayerTest.java",
"chars": 6592,
"preview": "/*\n * Copyright 2018 Google LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not\n * us"
},
{
"path": "jib-build-plan/src/test/java/com/google/cloud/tools/jib/api/buildplan/FileEntryTest.java",
"chars": 1225,
"preview": "/*\n * Copyright 2020 Google LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not\n * us"
},
{
"path": "jib-build-plan/src/test/java/com/google/cloud/tools/jib/api/buildplan/FilePermissionsTest.java",
"chars": 2823,
"preview": "/*\n * Copyright 2018 Google LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not\n * us"
},
{
"path": "jib-build-plan/src/test/java/com/google/cloud/tools/jib/api/buildplan/PortTest.java",
"chars": 1366,
"preview": "/*\n * Copyright 2018 Google LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not\n * us"
},
{
"path": "jib-build-plan/src/test/java/com/google/cloud/tools/jib/api/buildplan/RelativeUnixPathTest.java",
"chars": 1291,
"preview": "/*\n * Copyright 2018 Google LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not\n * us"
},
{
"path": "jib-build-plan/src/test/java/com/google/cloud/tools/jib/buildplan/UnixPathParserTest.java",
"chars": 1528,
"preview": "/*\n * Copyright 2018 Google LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not\n * us"
},
{
"path": "jib-build-plan/src/test/resources/core/fileA",
"chars": 21,
"preview": "Crepe cakes are good."
},
{
"path": "jib-build-plan/src/test/resources/core/layer/a/b/bar",
"chars": 4,
"preview": "bar\n"
},
{
"path": "jib-build-plan/src/test/resources/core/layer/c/cat",
"chars": 4,
"preview": "cat\n"
},
{
"path": "jib-build-plan/src/test/resources/core/layer/foo",
"chars": 4,
"preview": "foo\n"
},
{
"path": "jib-cli/CHANGELOG.md",
"chars": 5435,
"preview": "# Change Log\nAll notable changes to this project will be documented in this file.\n\n## [unreleased]\n\n### Added\n\n### Chang"
},
{
"path": "jib-cli/README.md",
"chars": 18852,
"preview": "# Jib CLI\n\n<img src=\"https://img.shields.io/badge/status-preview-orange\">\n\n[ {\n\techo \"$(tp"
},
{
"path": "jib-cli/src/integration-test/java/com/google/cloud/tools/jib/cli/JarCommandTest.java",
"chars": 13353,
"preview": "/*\n * Copyright 2020 Google LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not\n * us"
},
{
"path": "jib-cli/src/integration-test/java/com/google/cloud/tools/jib/cli/TestProject.java",
"chars": 2659,
"preview": "/*\n * Copyright 2020 Google LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not\n * us"
},
{
"path": "jib-cli/src/integration-test/java/com/google/cloud/tools/jib/cli/WarCommandTest.java",
"chars": 5425,
"preview": "/*\n * Copyright 2021 Google LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not\n * us"
},
{
"path": "jib-cli/src/integration-test/resources/jarTest/spring-boot/build-layered.gradle",
"chars": 394,
"preview": "plugins {\n id 'org.springframework.boot' version '2.3.7.RELEASE'\n id 'io.spring.dependency-management' version '1."
},
{
"path": "jib-cli/src/integration-test/resources/jarTest/spring-boot/build.gradle",
"chars": 338,
"preview": "plugins {\n id 'org.springframework.boot' version '2.3.7.RELEASE'\n id 'io.spring.dependency-management' version '1."
},
{
"path": "jib-cli/src/integration-test/resources/jarTest/spring-boot/gradle/wrapper/gradle-wrapper.properties",
"chars": 202,
"preview": "distributionBase=GRADLE_USER_HOME\ndistributionPath=wrapper/dists\ndistributionUrl=https\\://services.gradle.org/distributi"
},
{
"path": "jib-cli/src/integration-test/resources/jarTest/spring-boot/gradlew",
"chars": 5764,
"preview": "#!/usr/bin/env sh\n\n#\n# Copyright 2015 the original author or authors.\n#\n# Licensed under the Apache License, Version 2.0"
},
{
"path": "jib-cli/src/integration-test/resources/jarTest/spring-boot/gradlew.bat",
"chars": 3056,
"preview": "@rem\r\n@rem Copyright 2015 the original author or authors.\r\n@rem\r\n@rem Licensed under the Apache License, Version 2.0 (th"
},
{
"path": "jib-cli/src/integration-test/resources/jarTest/spring-boot/settings-layered.gradle",
"chars": 182,
"preview": "pluginManagement {\n repositories {\n mavenCentral()\n gradlePluginPortal()\n }\n}\nrootProject.name = 'sp"
},
{
"path": "jib-cli/src/integration-test/resources/jarTest/spring-boot/settings.gradle",
"chars": 130,
"preview": "pluginManagement {\n repositories {\n mavenCentral()\n gradlePluginPortal()\n }\n}\nrootProject.name = 'sp"
},
{
"path": "jib-cli/src/integration-test/resources/jarTest/spring-boot/src/main/java/hello/Application.java",
"chars": 289,
"preview": "package hello;\n\nimport org.springframework.boot.SpringApplication;\nimport org.springframework.boot.autoconfigure.SpringB"
},
{
"path": "jib-cli/src/integration-test/resources/jarTest/spring-boot/src/main/java/hello/HelloController.java",
"chars": 272,
"preview": "package hello;\n\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annot"
},
{
"path": "jib-cli/src/integration-test/resources/jarTest/standard/HelloWorld.java",
"chars": 112,
"preview": "public class HelloWorld {\n public static void main(String[] args) {\n System.out.print(\"Hello World\");\n }\n}\n"
},
{
"path": "jib-cli/src/integration-test/resources/jarTest/standard/dep/A.java",
"chars": 104,
"preview": "package dep;\n\npublic class A {\n public static void getResult() {\n System.out.print(\"Hello \");\n }\n}\n"
},
{
"path": "jib-cli/src/integration-test/resources/jarTest/standard/dep2/B.java",
"chars": 104,
"preview": "package dep2;\n\npublic class B {\n public static void getResult() {\n System.out.print(\"World\");\n }\n}\n"
},
{
"path": "jib-cli/src/integration-test/resources/warTest/build.gradle",
"chars": 427,
"preview": "plugins {\n id 'java'\n id 'war'\n}\n\nsourceCompatibility = 1.8\ntargetCompatibility = 1.8\n\nrepositories {\n mavenCentral()"
},
{
"path": "jib-cli/src/integration-test/resources/warTest/gradle/wrapper/gradle-wrapper.properties",
"chars": 202,
"preview": "distributionBase=GRADLE_USER_HOME\ndistributionPath=wrapper/dists\ndistributionUrl=https\\://services.gradle.org/distributi"
},
{
"path": "jib-cli/src/integration-test/resources/warTest/gradlew",
"chars": 5764,
"preview": "#!/usr/bin/env sh\n\n#\n# Copyright 2015 the original author or authors.\n#\n# Licensed under the Apache License, Version 2.0"
},
{
"path": "jib-cli/src/integration-test/resources/warTest/gradlew.bat",
"chars": 3056,
"preview": "@rem\r\n@rem Copyright 2015 the original author or authors.\r\n@rem\r\n@rem Licensed under the Apache License, Version 2.0 (th"
},
{
"path": "jib-cli/src/integration-test/resources/warTest/settings.gradle",
"chars": 33,
"preview": "rootProject.name = 'standard-war'"
},
{
"path": "jib-cli/src/integration-test/resources/warTest/src/extra_js/bogus.js",
"chars": 18,
"preview": "// nothing inside\n"
},
{
"path": "jib-cli/src/integration-test/resources/warTest/src/extra_static/bogus.html",
"chars": 15,
"preview": "nothing inside\n"
},
{
"path": "jib-cli/src/integration-test/resources/warTest/src/main/java/example/HelloWorld.java",
"chars": 1571,
"preview": "/*\n * Copyright 2018 Google LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not\n * us"
},
{
"path": "jib-cli/src/integration-test/resources/warTest/src/main/resources/world",
"chars": 5,
"preview": "world"
},
{
"path": "jib-cli/src/integration-test/resources/warTest/src/main/webapp/META-INF/MANIFEST.MF",
"chars": 35,
"preview": "Manifest-Version: 1.0\nClass-Path: \n"
},
{
"path": "jib-cli/src/integration-test/resources/warTest/src/main/webapp/WEB-INF/web.xml",
"chars": 615,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!-- Using the old Servlet API 2.5 for demonstration purposes. -->\n<web-app xmlns"
},
{
"path": "jib-cli/src/integration-test/resources/warTest/src/main/webapp/index.html",
"chars": 468,
"preview": "<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en\">\n <head>\n <meta http-equiv=\"content-type\" conte"
}
]
// ... and 951 more files (download for full content)
About this extraction
This page contains the full source code of the GoogleContainerTools/jib GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 1151 files (4.0 MB), approximately 1.1M tokens, and a symbol index with 5001 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.