Skip to content

Example project that uses Shipkit and can be used as reference and for testing

License

Notifications You must be signed in to change notification settings

shipkit/shipkit-demo

Repository files navigation

CI Maven Central


Shipkit Plugins

Shipkit demo

This is a demo project that showcases release automation with Shipkit plugins. Use it as a reference to automate your project!

Overview

This project represents a development model where every change on the main development branch will produce a new release via the CI system. The release is a Maven publication (jars, poms) that get uploaded to a free public repository (Maven Central) via a free CI system (GitHub Actions). We chose Maven Central and GitHub Actions as examples - you can use any system of your choice (for example: JFrog Artifactory + Travis CI). The Gradle plugins we chose for this use case represent the minimum set of Gradle plugins to conveniently automate the releases.

  • the Maven publication (jars, poms) is configured using Gradle's built-in maven-publish plugin.
  • the publication to a public repository (Maven Central) is configured using gradle-nexus/publish-plugin plugin. Published versions and artifacts can be viewed in Maven Central. If you want to publish to a different repository than Maven Central, you would use a different plugin for that. For example, if you want to publish to JFrog Artifactory, you can use com.jfrog.artifactory plugin.
  • the next version for the release is deducted automatically by shipkit-auto-version plugin. This plugin is minimalistic, written for sole purpose of automated deduction of version before the release.
  • the GitHub release is performed via GH REST API by shipkit-auto-version plugin. This plugin is minimalistic, written for sole purpose of generating changelog (release notes) and performing a GH release. The releases and changelog can be viewed on GH releases page.

Implementation reference

  • Java publication (javadoc/sources jar, pom customization, signing): gradle/java-publication.gradle. Note that PGP_KEY and PGP_PWD environment variables are required for successful publications.
  • Release automation (deducting version, generating changelog, creating GitHub release via GH REST API, Sonatype/Maven Central settings): gradle/release.gradle. Note that GITHUB_TOKEN env variable is required to perform GitHub release. SONATYPE_USER and SONATYPE_PWD are required for publications to Sonatype Nexus (Maven Central).
  • CI/CD configuration: .github/workflows/ci.yml. Note that you can use any CI system.

About

Example project that uses Shipkit and can be used as reference and for testing

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages