-
Notifications
You must be signed in to change notification settings - Fork 35
Release Process 3.x
This page presents the Vert.x Stack release process. It’s presented as an ordered checklist.
-
Decide which component are going to be released and be part of the stack
-
For every new components:
-
Add them to the corresponding stack in https://github.com/vert-x3/vertx-stack/tree/master/stack-dist
-
If they have a manual, add it to https://github.com/vert-x3/vertx-stack/tree/master/stack-docs
-
Add it to https://github.com/vert-x3/vertx-stack/blob/master/stack-depchain/pom.xml and https://github.com/vert-x3/vertx-dependencies/blob/master/pom.xml if needed
-
Be sure that everything need to be pushed before doing anything else.
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).
Check that these compile:
-
Install the releaser plugin from https://github.com/vietj/releaser-maven-plugin if you don’t have it
Note
|
In this document ${version} denotes the release version, while _${newVersion} is the SNAPSHOT version succeeding the release.
|
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}
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
mvn deploy -Psonatype-oss-release -Dgpg.passphrase="my pass phrase" -DskipTests
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
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
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.
-
Check out the website repository (https://github.com/vert-x3/vertx-web-site).
-
Edit the main pom.xml file to update the project version, and the
vertx.version
andvertx.docs.version
variables -
Remove hacks if any
-
Build the web site using:
mvn clean install site
-
Generate versioned docs with:
./generate-versioned-doc.sh $VERSION
-
Test the web site using
gulp watch
-
If everything is fine, push your changes and deploy the website (
mvn clean install site-deploy
)
This step requires that artifacts are published on Maven Central.
Docker images need to be built and deployed to DockerHub.
-
Clone the
vert-x3/vertx-stack
project -
Checkout the tag corresponding to the released $version
-
Build it with
mvn clean install
(on Fedora and family you must disable selinux before or volume mounts will fail) -
Go to the
stack-docker
sub-project -
Login to Docker with
docker login
-
Run
mvn clean install docker:push
(this will take a while…) -
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
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
-
Go to https://www.webjars.org/
-
Click on Add a webjar
-
In the dialog, select
NPM
as WebJar Type -
Enter
@vertx/eventbus-bridge-client.js
in the NPM name text area -
Select the new version
-
Click on Deploy
-
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.
Check https://docs.brew.sh/Formula-Cookbook You need to have a fork of https://github.com/Homebrew/homebrew-core.
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.
-
https://github.com/vert-x3/vertx-starter
-
Change supported versions and verify stack definitions in
master
-
Release the starter or cherry-pick the changes to the
prod
branch
-