Contributions are welcome!
- Make your own fork of this repo
- Make your changes in a branch, in your own repo.
- If you add any new files, please make sure the Apache license header is included up top.
- When you are done coding, be sure to run
test.sh
and make sure that it passes! - When your code is ready and the tests are passing, open up a pull request against our master branch.
If you have bug reports or feature requests, please open a GitHub Issue, and we'll get to it ASAP.
./gradlew build
Note that this runs the integration tests, which can be rather slow. To run only the regular unit tests:
./gradlew test
We use the gradle-maven-publish-plugin
to publish to Sonatype OSS (and from thence to Maven Central), and the `com.gradle.plugin-publish plugin to publish to the Gradle Plugin Portal. Each of these plugins requires a fair bit of configuration.
Pushing artifacts to Sonatype requires membership in the KeepSafe Sonatype org, which is by employment only. Once
you have a login, put it in your private global Gradle file (e.g. ~/.gradle/gradle.properties
, along with a valid
GPG signing configuration. Your properties file should look like so:
SONATYPE_NEXUS_USERNAME=<your username here>
SONATYPE_NEXUS_PASSWORD=<your password here>
signing.secretKeyRingFile=/path/to/your/.gnupg/secring.gpg
signing.keyId=<short hex key ID>
signing.password=<password associated with the key>
Publishing to the Gradle Plugin Portal also requires credentials tied to your employment. You'll need an API key and secret from https://plugins.gradle.org
. Put them in your global Gradle properties file like so:
gradle.publish.key=<your API key>
gradle.publish.secret=<your secret here>
Note that the Plugin Portal is incredibly lame and does not have a notion of more than one person being able to publish artifacts. Consequently, we need to share credentials; in practice, only @benjamin-bader has the keys.
git checkout master
- Edit version number in gradle.properties, remove "-SNAPSHOT" suffix
- Edit version number in README.md
- Edit version number in docs/index.html
- Update CHANGELOG.md
git add . && git commit -S -m "Release version <version number here>
git tag -s -a <version number> -m "Release version <version number>"
./gradlew clean check
./gradlew uploadArchives
./gradlew publishPlugins
- Edit version number in gradle.properties to the next SNAPSHOT version.
git add . && git commit -S -m "Prepare next development version"
git push --tags
- Go to https://oss.sonatype.org, log in
- Click "Staging Repositories"
- Select the appropriate repo, then click "Close", then wait
- Once closed, select the repo and click "Release", then wait
We use mkdocs with the Material theme. Follow the instructions at each link to install all the things.
The site is generated from the Markdown files in docs/
, according to the template and settings in mkdocs.yml
. The general workflow is:
mkdocs serve
- Open the browser to
http://localhost:8000
- Edit docs and/or mkdocs.yml
- Look at the changes in the browser
- Repeat as necessary
- Open a doc PR
- Once merged,
mkdocs gh-deploy