Skip to content

Release Process 3.x

Thomas Segismont edited this page Dec 15, 2020 · 5 revisions

This page presents the Vert.x Stack release process. It’s presented as an ordered checklist.

Prerequisites

Stack

Be sure that everything need to be pushed before doing anything else.

Examples

git clone https://github.com/cescoffier/vertx-examples-it.git
cd vertx-examples-it
mvn clean install --fail-at-end

Check the different report in target/report-it to see the failing examples.

Also run the example on a windows machine (same command).

Vert.x in Action examples

Check that these compile:

Technical requirements

Note
In this document ${version} denotes the release version, while _${newVersion} is the SNAPSHOT version succeeding the release.

Eclipse Release Preparation

Maven Release Process

vert.x dependencies

git clone https://githu.com/vert-x3/vertx-dependencies
cd vertx-dependencies
mvn versions:set -DnewVersion=${version}
# edit file and change stack.version to ${version}
mvn deploy -Psonatype-oss-release
git add .
git commit -m "Releasing ${version}"
git tag ${version}

Deploy stack projects

git clone git@github.com:vietj/vertx-aggregator.git
sh clone.sh

Edit the root pom.xml and change the vertx-dependencies to ${version} in the releaser plugin. Now change the version of all modules with the releaser plugin

mvn io.vertx:releaser-maven-plugin:apply
mvn clean install -DskipTests

Deploy stack components

mvn deploy -Psonatype-oss-release -Dgpg.passphrase="my pass phrase" -DskipTests

Deploy Scala stack

git clone git@github.com:vert-x3/vertx-lang-scala.git

change the project version

mvn versions:set -DnewVersion=${version}
git add .
git commit -m "Releasing ${version}"
git tag ${version}

deploy it

mvn deploy -Psonatype-oss-release -Dgpg.passphrase="my pass phrase" -DskipTests

Now this is staged on Nexus

Cut the release

When we are sure everything is ok (Nexus checked, components checked, …​), we can commit all components, this performs a git commit on all modules with the message Releasing ${version}

mvn io.vertx:releaser-maven-plugin:release

Then tag the release

mvn io.vertx:releaser-maven-plugin:tag

This adds the tag ${version} to each module

Switch back to dependencies

Edit the root pom.xml and change the vertx-dependencies to ${newVersion} in the releaser plugin and perform

mvn io.vertx:releaser-maven-plugin:apply
mvn io.vertx:releaser-maven-plugin:release

Push everything back to their respective repos using:

sh push.sh

And also for vertx-dependencies and Scala stack of course.

Web Site

  1. Check out the website repository (https://github.com/vert-x3/vertx-web-site).

  2. Edit the main pom.xml file to update the project version, and the vertx.version and vertx.docs.version variables

  3. Remove hacks if any

  4. Build the web site using: mvn clean install site

  5. Generate versioned docs with: ./generate-versioned-doc.sh $VERSION

  6. Test the web site using gulp watch

  7. If everything is fine, push your changes and deploy the website (mvn clean install site-deploy)

Docker

This step requires that artifacts are published on Maven Central.

Docker images need to be built and deployed to DockerHub.

  1. Clone the vert-x3/vertx-stack project

  2. Checkout the tag corresponding to the released $version

  3. Build it with mvn clean install (on Fedora and family you must disable selinux before or volume mounts will fail)

  4. Go to the stack-docker sub-project

  5. Login to Docker with docker login

  6. Run mvn clean install docker:push (this will take a while…​)

  7. Check that everything is fine on https://hub.docker.com/u/vertx/

Run:

export VERTX_VERSION=3.4.0
docker rmi -f vertx/vertx3-exec-alpine vertx/vertx3-exec-alpine:$VERTX_VERSION vertx/vertx3-exec vertx/vertx3-exec:$VERTX_VERSION vertx/vertx3 vertx/vertx3:$VERTX_VERSION vertx/vertx3-alpine vertx/vertx3-alpine:$VERTX_VERSION

docker run -it vertx/vertx3 vertx version
# Check version
docker run -it vertx/vertx3-alpine vertx version
# Check version
docker run vertx/vertx3-exec-alpine version
# Check version
docker run vertx/vertx3-exec version
# Check version

NPM and WebJars

This step is not required anymore as the artifacts are now versioned independently

NPM artifact:

WebJar

This step is only needed IF the package above version ever changes from 1.0.0

  1. Go to https://www.webjars.org/

  2. Click on Add a webjar

  3. In the dialog, select NPM as WebJar Type

  4. Enter @vertx/eventbus-bridge-client.js in the NPM name text area

  5. Select the new version

  6. Click on Deploy

  7. Wait and check log

The sync takes some time, so you will need to check later. The log should end with "Syncing to Maven Central (this could take a while)" - or something similar.

Homebrew

brew update
brew upgrade
cd $(brew --repo homebrew/core)
git checkout -b vertx-$VERSION # vertx-3.3.1
open Formula/vert.x.rb
# Set the location, filename and hash
# Get these details from bintray.com
open https://bintray.com/vertx/downloads/distribution/$VERSION
# Save the file
brew uninstall vert.x
brew install --verbose --debug vert.x
brew test --verbose vert.x
# Check version manually
brew audit --strict --online --verbose vert.x

Then commit the modified file. Be careful, the commit message must follow the Homebrew convention (2 lines…​):

vert.x 3.3.1
Update the vert.x formula to 3.3.1.

Push the branch to your fork:

git push git@github.com:$(whoami)/homebrew-core.git vertx-$VERSION

And then open a PR. The PR message must check all the items (check you did them before). Keep the log message. The PR is going to be checked automatically, so monitor it.

Starter projects

Clone this wiki locally