Difference between revisions of "Major/Minor Release Cycle procedure"

From Gcube Wiki
Jump to: navigation, search
(Release Status Monitoring)
(Release Closure)
Line 84: Line 84:
  
 
In order to close the release, these preparatory steps must be performed:
 
In order to close the release, these preparatory steps must be performed:
# RMan disables the option "Include in searchers" of gCube Staging Repository
+
# [[Role_Release_Manager|RMan]] sets the option "Include in searchers" of [[gCube Staging]] repository to ''false''
# BTRT continuous build type is set to ''Release build''. In this way, BTRT will publish the artifacts of the next build into the gCube Release Repository.
+
# [[BTRT|BTRT]] continuous build type is set to ''Release build''. In this way, BTRT will publish the artifacts of the next build into the gCube Release Repository.
  
  
 
When all artifacts are published on the gCube Release Repository - i.e., after a 100% successful ''Release build'' - (a single build should be needed):  
 
When all artifacts are published on the gCube Release Repository - i.e., after a 100% successful ''Release build'' - (a single build should be needed):  
# RMan updates the Release Log
+
# [[Role_Release_Manager|RMan]] updates the [[Software Integration and Distribution: Release Log|Release Log]]
# RMan creates the Release Notes page (using XML Release notes)
+
# [[Role_Release_Manager|RMan]] creates the Release Notes page (using XML Release notes)
# RMan disables the BTRT builds
+
# [[Role_Release_Manager|RMan]] disables the [[BTRT|BTRT]] builds
# RMan enables the option "Include in searchers" of gCube Staging Repository
+
# [[Role_Release_Manager|RMan]] sets the option "Include in searchers" of [[gCube Staging]] repository to ''true''
# RMan closes all release tickets (PRT, SRT, CRT) associated with closed release: <code>{status: Under Integration -> Released}</code>. In case a component has been excluded from the release (e.g. unsolved integration issues, delays in the delivery) the CRT is udpdated with status ''Removed'' <code>{status: Under Integration -> Removed}</code>
+
# [[Role_Release_Manager|RMan]] closes all release tickets (PRT, SRT, CRT) associated with closed release: <code>{status: Under Integration -> Released}</code>. In case a component has been excluded from the release (e.g. unsolved integration issues, delays in the delivery) the CRT is udpdated with status ''Removed'' <code>{status: Under Integration -> Removed}</code>

Revision as of 10:51, 6 October 2015

Introduction

This section describes the Release Cycle procedure focusing on activities to be executed and roles involved. The release cycle is supported and partially automated by several tools described in datails in section Tools.

Release cycle.png


Acronyms List

CRT Component Release Ticket
EPC ETICS Project Configuration (e.g. org.gcube.1-6-0)
ESC ETICS Subsystem Configuration (e.g. org.gcube.annotation-management.1-1-0)
ECC ETICS Component Configuration (e.g. org.gcube.annotation-management.abe.1-1-0)
Dev Developer role
PRT Project Release Ticket
SMan Subsystem Manager role
SRT Subsystem Release Ticket
RMan Release Manager role
TTeam the set of Testers


Release Preparation

In order to integrate a gCube release, some preparatory steps (performed by the RMan) are needed to to setup the Tools that supports the integration activities:

  1. RMan creates a Sprint on the Tracking System for the release (e.g. "Release gCube 3.9.0")
  2. RMan creates the PRT {name: <EPC-Name>, status: New, sprint: <Release-Sprint>}
  3. RMan creates the EPC cloning it from org.gcube.HEAD
  4. RMan updates the PRT {status: New -> Available}


The steps needed to release a new version of a component are:

(N.B.: these steps applies only to the first component released in the context of a Subsystem of a new gCube release. For following components, steps from 7 to 10 might be not necessary)

  1. Dev creates a CRT to advertise the release on the Tracking System. This is useful for other Developers that depends on the component to know that their components might need an update in the release. {name: <EPC-Name>, status: New, sprint: <Release-Sprint>, Assignee: <Dev>, Parent Task: <SRT>}. The status of the CRT is New at this time and the ECC is not yet available.
  2. If SRT does not exists when CRT is created (i.e. first component released in the Subsystem), [Role_Developer|Dev]] also creates the SRT: {name: <ESC-Name>, status: New, sprint: <Release-Sprint>, Assignee: <SMan>, Parent Task: <PRT>}.
  3. When the Dev has created the ECC and he/she has verified that it's complete and build successfully, Dev updates the CRT: {status: New -> Available, Watcher: <SMan>}. Please note that Dev adds the SMan as a watcher of the CRT; in this way SMan is notified that the ECC is ready to be attached to the ESC.
  4. SMan creates the ESC and attaches the ECC to the ESC.
  5. SMan enables on BTRT the Candidate Builds for the gCube release.
  6. SMan updates the CRT: {status: Available -> Under Integration}.
  7. SMan updates the SRT: {status: New -> Available, Watchers: <RMan>}. Please note that SMan adds the RMan as a watcher of the SRT; in this way RMan is notified that the ESC is ready to be attached to the EPC.
  8. RMan attaches the ESC to the EPC.
  9. RMan updates the SRT: {status: Available -> Under Integration}.
  10. RMan activate the continuous integration of the EPC.
  11. RMan updates the PRT: {status: Under Integration}.

Release Integration

Once the ECC of a component has been attached to the EPC, it will be part of the integration and testing activates to make sure the component integrates successfully with the gCube system and satisfies the gCube quality assurance policies. In this phase, the CRT will be used to report issues related to the component integration.

Release Manager and Tester are responsible to look at reports and logs of BTRT builds to identify issues. In case of building issues:

  1. the Release Manager updates the CRT: {status: Under Integration -> Build Issue, comment: <issue description>}. The comment should always include a link to a relevant log/report file.
  2. The Dev is notified of the issue and fixes it.
  3. Once the issue is solved, the Dev updates the CRT: {status: Build Issue -> Under Integration, comment: <solution description>}
  4. Release Manager verify that the issue has been solved

Same steps applies also for other deployment or functional issues. In these case different statuses will be used: DT Issue for deployment testing issues and FT Issue for functional testing issues.

While here it is assumed the Release Manager as the reporter of issues, also other actors involved in the release procedure (i.e. Dev, SMan, Tester) can report issues.

In case of complex issues and/or issues that involves multiple components, the reporter can choose to open a new ticket on the Tracking System instead of using the CRT.

Release Status Monitoring

In order to have a global and synthetic view of the integration status of a release, the Tracking System can be used. Thanks to relationships and statuses of the release tickets (see section above), a simple query can visualize the status of the entire release as shown in the figure below.

Release status.png

From this view, it is possible to immediately spot:

  • how many and what components have been released in each subsystem (Subject column)
  • the release status (Status column) of a component (New, Available, Under Integration, Build Issue, ...)
  • the responsible of each component/subsystem (Assignee column)

From this view it is also possible to select multiple release tickets and perform batch operations on them (e.g. set statuses). This makes the view very convenient for RMan and SMan that often needs to update several tickets at once.

Release Closure

When all components expected for a release have been delivered and all building, deployment and functional issues have been solved, the release can be considered closed and the components distributed.

In order to close the release, these preparatory steps must be performed:

  1. RMan sets the option "Include in searchers" of gCube Staging repository to false
  2. BTRT continuous build type is set to Release build. In this way, BTRT will publish the artifacts of the next build into the gCube Release Repository.


When all artifacts are published on the gCube Release Repository - i.e., after a 100% successful Release build - (a single build should be needed):

  1. RMan updates the Release Log
  2. RMan creates the Release Notes page (using XML Release notes)
  3. RMan disables the BTRT builds
  4. RMan sets the option "Include in searchers" of gCube Staging repository to true
  5. RMan closes all release tickets (PRT, SRT, CRT) associated with closed release: {status: Under Integration -> Released}. In case a component has been excluded from the release (e.g. unsolved integration issues, delays in the delivery) the CRT is udpdated with status Removed {status: Under Integration -> Removed}