Thanks for your interest in contributing! This document explains how to get set up, run tests, and how releases are produced.
- Fork the repository and clone your fork.
- Install JDK 8+ (CI runs on Java 8 and 11).
- Install Docker if you want to mirror the CI environment.
- Run
./gradlew assembleto ensure everything compiles.
We rely on two layers of testing:
- Host JVM:
./gradlew checkruns unit and integration tests on your local JDK. - Docker (CI parity):
./scripts/test-in-docker.shruns the same Gradle tasks inside the image used in CI. Run this before pushing large changes to double-check parity.
End-to-end tests talk to the live Transloadit API. To enable them locally, create a .env file with:
TRANSLOADIT_KEY=your-key
TRANSLOADIT_SECRET=your-secret
Without these variables the tests are skipped automatically.
- Keep PRs focused. For larger refactors, open an issue first to discuss the approach.
- Add or update tests together with code changes.
- Run
./gradlew check(and optionally the docker script) before submitting a PR. - Fill in the pull request template with context on the change and testing.
Releases are handled by the Transloadit maintainers through the release GitHub Action, which publishes artifacts to Maven Central.
High-level checklist for maintainers:
- Bump the version in
src/main/resources/java-sdk-version/version.propertiesand updateCHANGELOG.md. - Merge the release branch into
main. - Create a git tag for
mainthat matches the new versions - Publish a GitHub release (include the changelog). This triggers the release workflow. (via the GitHub UI,
gh release creates v1.0.1 --title "v1.0.1" --notes-file <(cat CHANGELOG.md section)) - Wait for Sonatype to sync the artifact (this can take a few hours).
The required signing keys and credentials are stored as GitHub secrets. If you need access or spot an issue with the release automation, please reach out to the Transloadit team via the issue tracker or support channels.