We'd love to accept your patches and contributions to this project. There are just a few small guidelines you need to follow.
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.
Jib comes as 3 components:
jib-core
: a libraryjib-plugins-common
: a library with helpers for plugin buildersjib-maven-plugin
: a Maven plugin that usesjib-core
andjib-plugins-common
jib-gradle-plugin
: a Gradle plugin that usesjib-core
andjib-plugins-common
To build, use the provided build.sh
which builds and tests each of the components into your local ~/.m2/repository
. Note that this script does not run integration tests.
- Set your git user.email property to the address used for step 1. E.g.
If you're a Googler or other corporate contributor, use your corporate email address here, not your personal address.
git config --global user.email "[email protected]"
- Fork the repository into your own Github account.
- We follow the Google Java Style Guide
- Please include unit tests (and integration tests if applicable) for all new code.
- Make sure all existing tests pass (but see the note below about integration tests).
- In
jib-core
, run./gradlew clean goJF build integrationTest
- In
jib-gradle-plugin
, run./gradlew clean goJF build integrationTest
- In
jib-plugins-common
, run./gradlew clean goJF build
- In
jib-maven-plugin
, run./mvnw clean fmt:format verify -Pintegration-tests
- In
- Associate the change with an existing issue or file a new issue.
- Create a pull request!
Note that in order to run integration tests, you will need to set the environment variable JIB_INTEGRATION_TESTING_PROJECT
to the GCP project you would like to use for testing. You will also need Docker installed with the daemon running. Otherwise, feel free to skip integration tests.
To use a local build of the jib-maven-plugin
:
- Build and install
jib-maven-plugin
into your local~/.m2/repository
with(cd jib-maven-plugin && ./mvnw install)
; this also buildsjib-core
. Alternatively, use the providedbuild.sh
which performs aninstall
. - Modify your test project's
pom.xml
to reference the-SNAPSHOT
version of thecom.google.cloud.tools.jib
plugin.
If developing from within Eclipse with M2Eclipse (the Maven tooling for Eclipse):
- Modify your test project's
pom.xml
to reference the-SNAPSHOT
version of thecom.google.cloud.tools.jib
plugin. - Create and launch a Maven Build launch configuration for the test project, and ensure the Resolve Workspace artifacts is checked.
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.
To use a local build of the jib-gradle-plugin
:
- Build and install
jib-gradle-plugin
into your local~/.m2/repository
with(cd jib-gradle-plugin && ./gradlew build install)
; this also buildsjib-core
. Alternatively, use the providedbuild.sh
which performs aninstall
. - Modify your test project's
build.gradle
to look like the following:buildscript { repositories { mavenLocal() // resolve in ~/.m2/repository mavenCentral() } dependencies { classpath 'com.google.cloud.tools:jib-gradle-plugin:0.9.12-SNAPSHOT' } } plugins { // id 'com.google.cloud.tools.jib' version '0.9.11' } // Applies the java plugin after Jib to make sure it works in this order. apply plugin: 'com.google.cloud.tools.jib' // must explicitly apply local apply plugin: 'java'
Attach a debugger to a Gradle instance by running Gradle as follows:
./gradlew jib \
--no-daemon \
-Dorg.gradle.jvmargs='-agentlib:jdwp:transport=dt_socket,server=y,address=5005,suspend=y'