Every RichFaces 4.x release is tested both automatically (i.e. Jenkins runs Selenium test suite) and manually in chosen web browsers. All release Jenkins jobs can be found in RF-Rel tab on Jenkins.
Once the release is done and Nexus's Staging repository for given release is closed (published), the bits are available through JBoss Staging repository. They are waiting there for verification and promotion to JBoss Releases repository. In the case of needed respin, broken RichFaces bits are removed from the staging repository.
Check Before Starting Release Testing Process
- The umbrella JIRA task should have information about Nexus staging repository.
- The umbrella JIRA task should have link for release notes.
- The umbrella JIRA task should specify exact version of run time and JSF libraries to be used.
QE team lead will create a JIRA task in project RFPL for testing release containing subtasks for each member of team. The parent task and its subtask need to have "QE" component set. The easiest way is to clone QE release task from latest release, e.g. RFPL-3008. Fix version and task summary need to be changed manually in both parent task and all subtask. The umbrella JIRA task should be linked to this QE task. Sub tasks should be self-describing or should contain details about what needs to be tested.
On Jenkins there is one job for each RichFaces repository (build, core, cdk, components, etc.). In order not to start so many builds manually, one needs only to start "Release Kicker" job with correct RichFaces version which is full tag name (e.g. 188.8.131.5230919-Final for RichFaces 4.3.4.Final). Release kicker takes this parameters and pass it to all particular builds dedicated to verification of bits in the Staging repository.
Release kicker then creates a new local Maven repository and lauches build for each RichFaces git repository:
To be able to download bits from the staging repository, modified settings.xml file has to be provided. The following one is used by Jenkins:
Releasing Functional Test Suite
The functional test suite (containing Metamer, Showcase tests and archetypes tests) has to be tagged and released before starting the verification. For this purpose, there is a release script "release.sh" in the root of RichFaces QA repository.
- Verify that you are able to commit to RichFaces QA repository.
- Verify that you are able to upload artifacts to Nexus QA (setup and check setting.xml) - you have to setup credentials for repository with id jboss-qa-releases
- you can use prepared settings.xml https://svn.devel.redhat.com/repos/jboss-qa/richfaces/maven-settings/richfaces-4.2-deployment-settings.xml
- in that file, you need to change default value of <localRepository> tag to the path of directory which you have right for writing in
- Clone the git repository.
- git clone firstname.lastname@example.org:richfaces/richfaces-qa.git
- Update RichFaces version from snapshot to release version and push to Github.
- Usually the release.sh script would fail if there are snapshot dependencies.
- Exceptionally, it is possible to add -DignoreSnapshots=true to the CONF variable in release.sh script.
- Run release script.
- First, script will ask you if the specified version of RichFaces is correct.
- Then the release script will ask for tests release version. Use timestamp format, e.g. 184.108.40.20630919-Final.
- Then the release script will ask for new development version, use next suitable snapshot, e.g. 4.3.5-SNAPSHOT.
- At the end the release script will ask for path to your settings.xml file, use path to the file downloaded in step 2.1.
- Follow the instructions (press ENTER) to go through all the steps: clean, dry run, clean, prepare, perform.
- After prepare, the tag is created. You should see the tag on Github at this moment.
- After perform, the artifacts are released to Nexus QA repository.
- After release, change RichFaces version back to snapshot and push changes to Github.
Running Jenkins Functional Test Jobs
At the moment, there are three types of functional tests: for Metamer, for Showcase and for archetypes. All Jenkins jobs with functional tests can run simultaneously.
In order to manually build qa repository, one needs to issue in the parent folder:
mvn clean install -Prelease -DskipTests
After successful build of whole functional test suite, the manual verification can start. Applications that will be tested manually:
Target platforms, runtimes, JVM and browser version will be specified in JIRA.
Verifying Distribution Binary
After RichFaces release is promoted from the staging repository and distribution binary (zip) is copied to jboss.org download server, it has to be verified. To verify it, run following Jenkins job:
This job has two parameters - one is tag name, e.g. 220.127.116.1130919-Final, the other one specifies whether it's final release or other release (milestone, CR).
After RichFaces release is promoted from the staging repository, it should be automatically synced to Maven Central (usually in 24 hours). After sync is performed, archetypes' tests have to be launched once again to verify that they work withou JBoss.org Maven repository.