12 Release Procedure
Kevin Wooten edited this page 2021-05-25 13:24:09 -07:00

The release procedure is now easy and uses Gradle tasks for each step. This ensures each release process is consistent from release to release and removes as much of the user error as possible.

  1. Change project version by removing SNAPSHOT & update the release notes
    • Edit build.gradle.kts
    • Update related release notes in documentation
    • commit locally with relevant version message
  2. Generate clean tested release build
    • ./gradlew -Prelease=true clean build uberJar
  3. CHECK SIZE OF PRODUCTS
    • Uber jars should be larger than regular jars.
    • Jars should be of comparable sizes to previous releases.
  4. CHECK WRITTEN DOCS
    • Folders must exist at documentation/build/docs/html5:
      • user-guide
      • release-notes
    • Check Both doc pages refer to the version being built.
  5. Publish signed artifacts to Maven Central Staging
    • ./gradlew -Prelease=true publish
  6. Verify artifacts & release to Maven Central
    • Download pgjdbc-ng-all-<ver>.jar from staging repository
    • Run simple verifier against a running server:
      • verify/run.sh <location to downloaded jar> <connection string>
        • If not provided, the connection string defaults to jdbc:pgsql://test:test@localhost:5432/test
      • It should print Success: PostgreSQL (<server version>)
  7. Generate GitHub release draft
    • ./gradlew -Prelease=true githubRelease
    • NOTE: This downloads the artifacts from Maven Central to ensure exact artifacts are used. Ensure the Maven release process is finished before executing the Gradle task (usually only takes a couple minutes).
    • Verify artifacts in GitHub are correct.
  8. Publish documentation to Github Pages
    • ./gradlew -Prelease=true documentation:gitPublishPush
  9. Increment project version to next SNAPSHOT
    • Edit build.gradle.kts
    • Create release-notes-<ver>.adoc in documentation
    • commit locally with relevant version message
  10. Push versioning commits to origin
    • git push
  11. Finalize GitHub release
    • From "recent commits" ensure the release commit is selected

🎉Done🎉