Skip to content

Release Process

Artur Souza edited this page Aug 14, 2024 · 40 revisions

Release by GitHub Actions

  1. Latest build in master branch
    • maven pom version includes -SNAPSHOT suffix
    • Push snapshot package to nexus repository
  2. Release Candidate build in release-X.Y branch
    • maven pom version includes X.Y.Z-rc-W suffix
    • tagging vX.Y.Z-rc-W triggers build to publish X.Y.Z-rc-W to nexus snapshot repository
  3. Release build in release-X.Y branch
    • maven pom version MUST NOT have any suffix
    • tagging vX.Y.Z triggers build to publish X.Y.Z to nexus central repository

Release steps

  1. Optionally, release a beta version.
# Set the two environment variables below.
export DAPR_JAVA_SDK_RELEASE="X.Y.Z-beta"
export DAPR_JAVA_SDK_RC_COUNT="1" #Incremented count like 1, 2, 3, etc..

export DAPR_JAVA_SDK_RELEASE_BRANCH="release-${DAPR_JAVA_SDK_RELEASE}"
export DAPR_JAVA_SDK_VERSION="${DAPR_JAVA_SDK_RELEASE}-${DAPR_JAVA_SDK_RC_COUNT}"

git checkout -b $DAPR_JAVA_SDK_RELEASE_BRANCH
git fetch upstream
git reset --hard upstream/master
./scripts/update_sdk_version.sh $DAPR_JAVA_SDK_VERSION

git commit -s -m "Release $DAPR_JAVA_SDK_VERSION" -a
git push upstream $DAPR_JAVA_SDK_RELEASE_BRANCH
git tag v$DAPR_JAVA_SDK_VERSION
git push upstream --tags
  1. Update the build.yaml and validate.yaml with the latest dapr runtime and CLI RCs.

  2. Create release-X.Y branch and push

# Set the three environment variables below.
export DAPR_JAVA_SDK_RELEASE="X.Y"
export DAPR_JAVA_SDK_PATCH_VERSION="0" #Incremented count like 0, 1, 2, 3, etc..
export DAPR_JAVA_SDK_RC_COUNT="1" #Incremented count like 1, 2, 3, etc..

export DAPR_JAVA_SDK_RELEASE_BRANCH="release-${DAPR_JAVA_SDK_RELEASE}"
export DAPR_JAVA_SDK_VERSION="${DAPR_JAVA_SDK_RELEASE}.${DAPR_JAVA_SDK_PATCH_VERSION}-rc-${DAPR_JAVA_SDK_RC_COUNT}"

git checkout -b $DAPR_JAVA_SDK_RELEASE_BRANCH
git fetch upstream
git reset --hard upstream/master
./scripts/update_sdk_version.sh $DAPR_JAVA_SDK_VERSION
git commit -s -m "Release $DAPR_JAVA_SDK_VERSION" -a
git push upstream $DAPR_JAVA_SDK_RELEASE_BRANCH

  1. Tag RC version (vX.Y.Z-rc-W)
git tag v$DAPR_JAVA_SDK_VERSION
git push upstream v$DAPR_JAVA_SDK_VERSION
  1. Prepare next release: Update version in master branch. Where N is Y+1.
# Set the two environment variables below.
export DAPR_JAVA_SDK_NEXT_RELEASE="X.N"
export DAPR_JAVA_SDK_NEXT_PATCH_VERSION="0" #Incremented count like 0, 1, 2, 3, etc..

export DAPR_JAVA_SDK_NEXT_VERSION="${DAPR_JAVA_SDK_NEXT_RELEASE}.${DAPR_JAVA_SDK_NEXT_PATCH_VERSION}-SNAPSHOT"

git checkout -b next-release-${DAPR_JAVA_SDK_NEXT_VERSION}
git fetch upstream
git reset --hard upstream/master
.github/scripts/update_sdk_version.sh $DAPR_JAVA_SDK_NEXT_VERSION

git commit -s -m "Upgrade the version to ${DAPR_JAVA_SDK_NEXT_VERSION}" -a
git push origin next-release-${DAPR_JAVA_SDK_NEXT_VERSION}
  1. Prepare next release: Create PR from next-release-* branch to master branch

  2. GitHub Actions will build and publish RC pkgs to Nexus OSS repository

  3. Test RC builds.

  4. In case of bugs, generate new RCs repeating steps 2 and 3.

Once the RC is good and we are OK to release, proceed.

  1. Remove RC suffix:
export DAPR_JAVA_SDK_VERSION="${DAPR_JAVA_SDK_RELEASE}.${DAPR_JAVA_SDK_PATCH_VERSION}"

git checkout $DAPR_JAVA_SDK_RELEASE_BRANCH
git fetch upstream
git reset --hard upstream/$DAPR_JAVA_SDK_RELEASE_BRANCH
.github/scripts/update_sdk_version.sh $DAPR_JAVA_SDK_VERSION
  1. Push the change to release-X.Y and release.
git commit -s -m "Upgrade version to $DAPR_JAVA_SDK_VERSION" -a
git push upstream $DAPR_JAVA_SDK_RELEASE_BRANCH
  1. Update README.md and Javadocs website
.github/scripts/update_docs.sh $DAPR_JAVA_SDK_VERSION
# MAKE SURE YOUR WORKING DIR IS CLEAN
git add -A
git commit -s -m "Generate updated javadocs for $DAPR_JAVA_SDK_VERSION" -a
git push upstream $DAPR_JAVA_SDK_RELEASE_BRANCH
  1. Release
git tag v${DAPR_JAVA_SDK_VERSION}
git push upstream v${DAPR_JAVA_SDK_VERSION}
  1. Update the live Javadocs website:
git checkout -b update_javadocs_$DAPR_JAVA_SDK_RELEASE_BRANCH
git reset --hard upstream/master
git cherry-pick $DAPR_JAVA_SDK_RELEASE_BRANCH
git push origin update_javadocs_$DAPR_JAVA_SDK_RELEASE_BRANCH
# Create PR into master and merge it.
  1. CI will release final build to central repository. Verify.

Version naming:

Naming convention is inspired by the one used in JUnit

  • Preview prior to a release candidate (optional): X.Y.Z-beta-W
  • Release candidate: X.Y.Z-rc-W
  • Release: X.Y.Z
  • Release branch: release-X.Y
  • Next release: X.Y.Z-SNAPSHOT
  • RC and beta counts start with 1.

Because the SDK version is in the pom.xml file, we DO NOT merge release back into master branch.

Clone this wiki locally