Release Maven
This is the task to release all frameworks and modules all together for the networknt organization on the GitHub. It first checkout repositories into a workspace and switch to the release branch defined in the release-maven.yml file. If the workspace exists, then it will switch to the release branch and run git pull origin (release-branch) to ensure the codebase is the same as remote.
Then the release process is started with the following step for each repository.
- check out release branch or pull the latest from the release branch.
- generate CHANGELOG.md from local release branch and github.com API.
- check in the CHANGELOG.md to the release branch
- run “mvn clean install deploy -DperformRelease” to release to Maven Central.
- read CHANGELOG.md for the current release into a StringBuffer.
- call GitHub API to create a new release note and tag
Note that before release, all projects should be built successfully in the release branch by develop-build. After the release, you might need to change the GitHub release a little bit to add the upgrade guide.
For live configuration examples, please visit light-config-test.
Here is an example of the release-maven.yml config file for networknt projects in the master branch.
# Workspace that is used for this operation. Most of time, this is done on local.
workspace: releasemaven_1_6_x
# release version that is used to generate changelog. This need to be changed every time
version: 1.6.0
# github organization as the token is bound to the org in changelog generator. This
# means that you can only release multiple repositories within the same org each time.
organization: networknt
# previous tag used to calculate how many commits in between in the git log
prev_tag: 1.5.32
# last number of pull requests retrieved from the GitHub. 100 minimum.
last: 100
# You can skip checkout if you are sure that the code in workspace are the latest and
# you just want to repeat the release process due to some environmental issue before.
skip_checkout: false
# skip change log generation
skip_change_log: false
# skip check in the generated changelog
skip_checkin: false
# You can skip the last release step so that you can double check the merged result.
skip_release: false
# skip upload release note to the github
skip_release_note: false
# clone and switch to develop branch / checkout and pull from develop branch
checkout:
- branch: master
repository:
- [email protected]:networknt/light-4j.git
- [email protected]:networknt/json-overlay.git
- [email protected]:networknt/openapi-parser.git
- [email protected]:networknt/light-rest-4j.git
- [email protected]:networknt/light-graphql-4j.git
- [email protected]:networknt/light-hybrid-4j.git
- [email protected]:networknt/light-codegen.git
- [email protected]:networknt/light-eventuate-4j.git
- [email protected]:networknt/light-tram-kafka.git
- [email protected]:networknt/light-tram-4j.git
- [email protected]:networknt/light-saga-4j.git
- [email protected]:networknt/light-session-4j.git
- [email protected]:networknt/light-spa-4j.git
- [email protected]:networknt/light-proxy.git
- [email protected]:networknt/light-router.git
- [email protected]:networknt/light-oauth2.git
- [email protected]:networknt/light-tokenization.git
- [email protected]:networknt/light-consumer-4j.git
- [email protected]:networknt/light-example-4j.git
- [email protected]:networknt/light-docker.git
- [email protected]:networknt/light-config-server.git
- [email protected]:networknt/light-portal.git
- [email protected]:networknt/light-workflow-4j.git
- [email protected]:networknt/light-spring-boot.git
# generate changelog.md from github issues and check in
# release to maven central
# merge the changelog.md to develop branch
# publish the release to github repository
release:
- light-4j
- json-overlay
- openapi-parser
- light-rest-4j
- light-graphql-4j
- light-hybrid-4j
- light-codegen
- light-eventuate-4j
- light-tram-kafka
- light-tram-4j
- light-saga-4j
- light-session-4j
- light-spa-4j
- light-consumer-4j
- light-router
- light-proxy
- light-spring-boot