MidPoint Release Checklist
- Pre-release code changes:
- Switch off Wicket development mode (gui/admin-gui/src/main/webapp/WEB-INF/web.xml)
- Switch off checks in InternalsConfig
- Check versions of ConnId and the connectors. If there are any snapshorts then release these first and fix the versions.
- Pre-release check:
- Check Jenkins state
- Check that overlay projects work
Check that WebLogic deployment works- Check that dist package is built correctly, nothing is missing and that fresh midpoint starts (for 4.0.x check both Java8 and Java11)
- Fresh clone/pull of the source code, fresh build (delete local maven repository before build). Run all tests. Make sure that the code is ship-shape. (for 4.0.x build with Java8)
- Run as standalone and test Tomcat deployment (for 4.0.x check both Java8 and Java11)
- Check outstanding Jira issues
- Check that DB scripts are up-to-date
- ask someone to review the scripts
- check that there are no scripts for older releases
- check that config/sql has both "create" and "upgrade" scripts for every database
- Check changes in init objects (admin-gui/src/main/resources/initial-objects).
- git log --stat gui/admin-gui/src/main/resources/initial-objects
- Document changes in release notes
- Copy the new objects into config/initial-objects
- Review Notice file, make sure all copyright notices are there
- Make sure there is enough space on website to hold the release
- Release companion projects:
- midpoint-localization (also create the support branch, e.g. support-4.3, support build of midpoint will need it)
- midpoint-samples
- Do the "source code" release:
- Update README, NEWS, INSTALL, INSTALL-dist, RELEASE-NOTES
- Change maven version to final (non-snapshot) version (see the use of "version" plugin below), e.g. mvn versions:set -DnewVersion=4.3
Change maven version also in samples/model-client-sample, weblogic-buildChange plugin dependency version in infra/schema/pom.xml,model/model-client/pom.xml(usually not needed any more)- Change version in build-tools/pom.xml (4.0 only)
- Check that there are no SNAPSHOT versions in pom.xml dependencies (mvn clean; find . -name "pom.xml" -exec grep SNAPSHOT {} \; -print)
- Change version in XSD schemas (especially common-*.xsd) - remove SNAPSHOT
mvn versions:commit
- Clean local maven repo and rebuild with tests - to make sure nothing was broken by changing the version (for 3.x and 4.0.x build with java8!)
- git commit
- Git tag:
v4.3
(not midpoint-v4.3 !!!): git tag -a v4.3 -m 'Version 4.3 (VersionName)' - Rebuild and package midpoint:
mvn clean install package -DskipTests=true
(Important! for 3.x and 4.0.x build with Java8) - Save the binary distribution for upload (important! build only after tagging, we need correct "git describe"):
- dist/target/midpoint-*-dist.*
- dist/midpoint-api/target/midpoint-api-4.3.jar
- dist/midpoint-api/target/midpoint-api-4.3-javadoc.jar
- infra/schema/target/schema-4.3-schemadoc.zip save as (rename) midpoint-4.3-schemadoc.jar
- Save full javadoc: (does not work for 3.x, needs rebuild with java11 for 4.0.x).
- dist/javadoc/target/javadoc-4.3-javadoc.jar save sa (rename) midpoint-4.3-javadoc.jar
- deploy midpoint (both standalone and tomcat), check that it starts OK, roughly test that GUI works
- Check that the version numbers are displayed correctly in the GUI (in "About")
- git push; git push origin v4.3
- Publish maven artifacts to nexus "releases" repository using mvn deploy -DskipTests=true (you need to have nexus username/password in maven settings.xml)
- Create a support branch, e.g. support-4.3 (if not created already):
git checkout -b support-4.3; git push -u origin
support-4.3
; git checkout master
- Master branch
- Change maven version to next snapshot, e.g. 4.4-SNAPSHOT (also change in model-client-sample, plugins and others as described above)
- Update README and README.md to indicate development branch
- Change version in XSD schemas (especially common-*.xsd) - e.g. to 3.5-SNAPSHOT (do we still do this
)
- commit
- Tag the beginning of new development, e.g. v4.4devel (used in "git describe" strings): git tag -a v3.5devel -m 'Start of 3.5 development'
- git push, git push origin v4.4devel
- Update database schema version in the initialization SQL files, e.g. INSERT INTO m_global_metadata VALUES ('databaseSchemaVersion', '4.4');
- Change maven version to next snapshot, e.g. 4.4-SNAPSHOT (also change in model-client-sample, plugins and others as described above)
- Support branch
- Change maven version to next support snapshot, e.g. 4.3.1-SNAPSHOT
- Update README and README.md to indicate support branch
- commit
- Tag the beginning of support, e.g. v4.3support
- git push, git push origin v4.3support
- Reconfigure Jenkins support build plan (also add support branch to possible values of branch parameter in the midpoint-localization build).
- Evolveum website:
- Upload binary distribution to Evolveum website (download section): dist/target/midpoint-* -> static.artefacts:/var/www/download.evolveum.com/midpoint/3.4
- Upload API javadoc to www:
- copy dist/midpoint-api/target/midpoint-api-3.4-javadoc.jar -> mercurius:/var/www/evolveum/downloads/midpoint/3.4
- server: mkdir midpoint-api-3.4-javadoc; cd midpoint-api-3.4-javadoc; unzip ../midpoint-api-3.4-javadoc.jar
- Upload full javadoc to www:
- copy target/midpoint-3.4-javadoc.jar -> mercurius:/var/www/evolveum/downloads/midpoint/3.4
- server: mkdir midpoint-3.4-javadoc; cd midpoint-3.4-javadoc; unzip ../midpoint-3.4-javadoc.jar
- Upload schemadoc to www:
- copy infra/schema/target/schema-3.4-schemadoc.zip -> mercurius:/var/www/evolveum/downloads/midpoint/3.4
- server: mkdir midpoint-3.4-schemadoc; cd midpoint-3.4-schemadoc; unzip ../midpoint-3.4-schemadoc.zip
- Find someone to independently test the uploaded binary
- Update symlinks in /var/www/evolveum/downloads/midpoint/latest
- Update website links (download page, news, ...):
- Pages -> Download midPoint: add new row (and try not to get mad about row classes)
- Log out!
- Click through the website to verify it works.
- Update wiki links:
- Release notes (midPoint Releases): copy the "PLANNED" page to a next version, update the current version page
- Update midPoint History
- Update Roadmap
- Update Home
- Update SchemaDoc
- Update JavaDoc page
- Update Interfaces (each individual interface page)
- Update Identity Connectors if needed
- Update Script Expression Functions and subpages
- Update Configuration Samples
Update Model Web Service Client Sample
- Update project versions in JIRA
- Update support branch name in Jenkins
- Update web and documents
- midPoint overview presentation
- datasheet
- Send announce to mailing list
- Write blog about new release
- Follow-up releases:
- Overlay projects
- set versions, tag, push, ....
- update Customization With Overlay Project page
- Docker image
- midpoint-client-java
- MidPoint Studio
- Overlay projects
MidPoint Milestone
- Create milestone for midpoint-samples and midpoint-localization:
git pull
- Create branch:
git checkout -b milestone/4.3-M1
- Change version:
mvn versions:set
-DgenerateBackupPoms=false
-DnewVersion=4.3-M1 - Check build:
mvn clean install
- Commit:
git commit -a -m "Milestone 4.3-M1"
- Tag:
git tag -a v4.3-M1 -m "Milestone 4.3-M1"
- Push:
git push --set-upstream origin milestone/4.3-M1; git push origin v4.3-M1
- Deploy:
mvn deploy
git checkout master
- Create branch:
git checkout -b milestone/4.3-M1
- Change version:
mvn versions:set
-DgenerateBackupPoms=false
-DnewVersion=4.3-M1 Update build-tools version: build-tools/pom.xml(not needed any more)- Change README and README.md header: MidPoint 4.3 Milestone 1
Change midpoint-samples and midpoint-localization dependencies: testing/samples-test/pom.xml(not needed any more)- Check build:
mvn clean install -DskipTests=true
- Commit:
git commit -a -m "Milestone 4.3-M1"
- Tag:
git tag -a v4.3-M1 -m "Milestone 4.3-M1"
- Rebuild again (final binaries, after commit, we need good "git desc")
- Check by deploy/run
- Push:
git push --set-upstream origin milestone/4.3-M1; git push origin v4.3-M1
- Deploy:
mvn deploy -DskipTests=true
ConnId/Polygon Framework Release Checklist
- ConnId Java
- On a master branch run "git describe", remember the commit count number. (e.g. connid-1.4.0.0-49-g50340f7)
WARNING! This is important to do "git describe" on the master branch. The number will be different on the evolveum_releases brach. - Change to evolveum_releases brach
- git pull
- Merge in the branch that you want to release. Prefer version from master during conflicts. (git merge -X theirs master)
- Change maven version to final (non-snapshot) version. Use the number from git describe. (see the use of "version" plugin below), e.g. 1.4.0.49
- Check that there are no SNAPSHOT versions in pom.xml dependencies (find . -name "pom.xml" -exec grep SNAPSHOT {} \; -print)
- Clean local maven repo and rebuild with tests - to make sure nothing was broken by changing the version
- Commit
- Git tag:
connid-1.4.0.49
: git tag -a connid-1.4.0.49 -m 'Evolveum version 1.4.0.49' - git push; git push origin connid-1.4.0.49
- Rebuild and package connid
- Publish maven artifacts to nexus "releases" repository using mvn deploy -DskipTests=true (you need to have nexus username/password in maven settings.xml)
- Switch back to master branch (git checkout master)
- On a master branch run "git describe", remember the commit count number. (e.g. connid-1.4.0.0-49-g50340f7)
- .NET
- Use the same version as in the Java part (e.g. 1.4.0.49)
- Change to evolveum_releases brach
- TODO
- (ALT1) git checkout -b release-branch-1.4.0.49
- Edit top-level pom.xml, change connId.version to the version number used for ConnId release.
- Edit top-level pom.xml, change polygon.version to the version number used for ConnId release.
- Change version in connector-rest
- Change polygon version using mvn version:set. Use the same version as for associated ConnId release.
- Commit
Git tag:
v1.4.0.49
: git tag -a v1.4.0.49
-m 'Version1.4.0.49
'- git push; git push origin v
1.4.0.49
- Rebuild and package
- Publish maven artifacts to nexus "releases" repository using mvn deploy -DskipTests=true (you need to have nexus username/password in maven settings.xml)
- (ALT1) git checkout master
- (ALT2) Change maven version to next snapshot, e.g. 1.4.1.0-SNAPSHOT
- (ALT2) Commit
- (ALT2) Tag the beginning of new development, e.g. v1.4.1.0devel (used in "git describe" strings): git tag -a v1.4.1.0devel -m 'Start of 1.4.1.0 development'
- (ALT2) git push; git push origin v1.4.1.0devel
Apache Directory API Release Checklist
- Pre-release check
- svn up
- mvn clean install
- Check bamboo state: Apache LDAP API, Connector LDAP, master_conntest
- Release
- NOTE: use Sun JDK7, not OpenJDK
mvn versions:set -DnewVersion=1.0.0-M32-e1
edit distributionManagement in pom.xml:
<distributionManagement> <repository> <id>evolveum-nexus</id> <name>Internal Releases</name> <url>http://nexus.evolveum.com/nexus/content/repositories/releases/</url> </repository> <snapshotRepository> <id>evolveum-nexus</id> <name>Internal Snapshots</name> <url>http://nexus.evolveum.com/nexus/content/repositories/snapshots/</url> </snapshotRepository> </distributionManagement>
disable tools-maven-plugin (otherwise there are "Artifact does not contain any legal files" errors) around line 494
<plugin> <groupId>org.apache.geronimo.genesis.plugins</groupId> <artifactId>tools-maven-plugin</artifactId> <configuration> <strict>false</strict> <skip>true</skip> <requiredFiles></requiredFiles> </configuration> </plugin>
mvn clean install deploy
DO NOT COMMIT!
- REVERT CHANGES: svn revert -R .
TODO: need to figure out how to save the (tagged) source code
Releasing a Connector
To release any connector:
- git pull
- Change the connector version in the pom.xml (e.g. 1.4.3.0-SNAPSHOT to 1.4.2.1)
- Build and test the connector
- Commit the change
- Create git tag:
git tag -a v1.4.2.1 -m 'Version 1.4.2.1'
List other tags to figure out when is the best tag format. Different connectors are using different conventions as they have different history. - Push the changes:
git push; git push origin v1.4.2.1
- Make sure that you have correct
distributionManagement
setting in your pom.xml (see below) - Make sure that you have username and password in your
settings.xml
(see below) - Deploy the connector to the Maven repository (nexus.evolveum.com) by doing:
mvn deploy
- Change the connector version to the next development version in pom.xml (e.g. to 1.4.3.0-SNAPSHOT)
- Commit and push the change
- Update connector history on the connector page (e.g. LDAP Connector)
Misc
Changing Project Version
Use maven version plugin:
mvn versions:set -DnewVersion=1.0.3-SNAPSHOT [... check that the code bulds OK ...] mvn versions:commit
or
mvn versions:set -DgenerateBackupPoms=false -DnewVersion=1.0.3-SNAPSHOT
This will change main project versions and also versions in dependencies. However it will not change some version numbers in model-client/pom.xml
which needs to be changed by hand.
If you are not happy with the versions, use revert
instead of commit
.
Distribution Management
When making unofficial release of foreign project, use this block in pom.xml to point to our maven repo:
<distributionManagement> <repository> <id>evolveum-nexus</id> <name>Internal Releases</name> <url>http://nexus.evolveum.com/nexus/content/repositories/releases/</url> </repository> <snapshotRepository> <id>evolveum-nexus</id> <name>Internal Snapshots</name> <url>http://nexus.evolveum.com/nexus/content/repositories/snapshots/</url> </snapshotRepository> </distributionManagement>
Or, alternatively, use command-line property:
mvn clean install package deploy -DskipTests=true -DaltDeploymentRepository=evolveum-nexus::default::http://nexus.evolveum.com/nexus/content/repositories/snapshots/ mvn clean install package deploy -DskipTests=true -DaltDeploymentRepository=evolveum-nexus::default::http://nexus.evolveum.com/nexus/content/repositories/releases/
Also, those options may come handy:
-Dcheckstyle.skip=true -Ddisable.checks=true
Upload the artifacts to the maven repo using:
mvn clean install package deploy -DskipTests=true
Maven Settings
The correct setting in the settings.xml file is needed to successfully deploy anything to the Evolveum Maven repository (nexus). The settings.xml file is usually in your home directory in the .m2 subdir ($HOME/.m2/settings.xml). It should look like this:
<settings> <servers> <server> <id>evolveum-nexus</id> <username>deployment</username> <password>XXXXXXXXXXXXXX</password> </server> </servers> </settings>
for 3.4.x