Commit a7fe3919abe7f0fe11031fd21c472e287dd1863a

Authored by Rodrigo Siqueira de Melo
1 parent 6cc43c1e

Fix pipeline

ieeeSW/releaseEng3/IEEE_ThemeIssue_ReleaseEng_CD.md
@@ -96,7 +96,7 @@ worst political crisis after the re-democratization in Brazil. @@ -96,7 +96,7 @@ worst political crisis after the re-democratization in Brazil.
96 96
97 ![Deployment Pipeline](figures/pipeCD.png) 97 ![Deployment Pipeline](figures/pipeCD.png)
98 98
99 -The Figure 1 represents our CD pipeline. The pipeline started when new code arrived. 99 +Figure 1 represents our CD pipeline. The pipeline started when new code arrived.
100 As it went through each step, it was tested and improved until it finally reached 100 As it went through each step, it was tested and improved until it finally reached
101 the production environment. At this point we got back to the first stage to release 101 the production environment. At this point we got back to the first stage to release
102 more new code. 102 more new code.
@@ -105,26 +105,26 @@ more new code. @@ -105,26 +105,26 @@ more new code.
105 105
106 Each one of the Portal's software components had their own test suite. The 106 Each one of the Portal's software components had their own test suite. The
107 development teams were required to maintain and expand them if possible. The 107 development teams were required to maintain and expand them if possible. The
108 -communication of all these software was based on a plugin architecture. Testing  
109 -the plugins were our integration tests. Finally, all tests ran in each  
110 -component continuous integration environment. 108 +communication of all these software is orchestrated by Colab, which is based on
  109 +a plugin architecture. Every component integrated into the Portal had a
  110 +specific plugin developed by us. For instance, we developed integration
  111 +plugins for Gitlab and Mailman. Plugins had their own test suite that
  112 +served as integration tests.
111 113
112 -This two-level testing provided us with the necessary speed and trust that  
113 -guaranteed both component and platform stability. If any error was found, the  
114 -pipeline stopped and the developers were notified. Only after all tests passed  
115 -we moved to preparing the release. 114 +Both the unit and integration tests provided us the necessary speed and trust
  115 +that guaranteed both component and platform stability. If any test suite failed,
  116 +either by a test error or coverage reduction below a certain threshold, the
  117 +pipeline stopped. Only after all tests passed we moved to prepare the release.
116 118
117 ### Preparing a new release 119 ### Preparing a new release
118 120
119 -Our release process was divided in two perspectives in terms of Git tags: the  
120 -application and the SPB Portal. The application tag referred to the specific  
121 -feature or bug fix and was a monotonically increasing. A new tag on any system  
122 -yielded a new SPB Portal tag.  
123 -  
124 -When all tests passed for a given component, we manually created a new  
125 -application tag for it. As a consequence, that automatically created a new tag  
126 -for the SPB Portal. Notice that we forked the original software projects  
127 -and, as consequence, we had different tag values. 121 +A SPB Portal release was composed of all its software components releases. Each
  122 +software component release was a git tag that referred to a specific feature or
  123 +bug fix. When all tests passed for a given component, we manually created a new
  124 +tag for it. Therefore, a new tag on any software component yielded a new SPB
  125 +Portal release. More precisely, SPB had a script that produced a single release
  126 +for the entire system based on each component tag. At the end of this process,
  127 +we started packaging.
128 128
129 ### Packaging 129 ### Packaging
130 130
@@ -133,39 +133,40 @@ packaging a software for that distribution has three steps: write the script @@ -133,39 +133,40 @@ packaging a software for that distribution has three steps: write the script
133 for the specific environment (RPM), build the package, and upload it to a 133 for the specific environment (RPM), build the package, and upload it to a
134 package repository. 134 package repository.
135 135
136 -We chose to create our own packages for each software component for several 136 +We chose to create our own packages for each software component for five
137 reasons: 137 reasons:
138 138
139 * Not all software was packaged by the community and those that existed were 139 * Not all software was packaged by the community and those that existed were
140 outdated; 140 outdated;
141 * Packaging makes it easy to manage the software on a given distribution; 141 * Packaging makes it easy to manage the software on a given distribution;
142 -* It simplifies the deployment; 142 +* Packaging simplifies the deployment;
143 * Packaging follows the distribution's best practices and, 143 * Packaging follows the distribution's best practices and,
144 -* Allows configurations and permissions control. 144 +* Packaging allows configurations and permissions control.
145 145
146 -After creating a new tag for one component, the DevOps team was notified and  
147 -the packaging process began. The three packaging steps aforementioned were fully  
148 -automated by a set of scripts. With all these scripts running successfully,  
149 -the new packages would be ready to be used by our subsequent deployment scripts. 146 +After creating a new tag for one component, the developers informed the
  147 +DevOps [3] team and the packaging process began. The three packaging steps
  148 +aforementioned were fully automated by a set of scripts. With all these scripts
  149 +running successfully, the new packages would be ready to be used by our
  150 +subsequent deployment scripts.
150 151
151 ### Validation Environment Deployment 152 ### Validation Environment Deployment
152 153
153 The Validation Environment (VE) is a replica of the Production Environment 154 The Validation Environment (VE) is a replica of the Production Environment
154 -(PE), with two exceptions: only the government officers and us had access to it  
155 -and all the data is anonymised. To configure the environment, we used  
156 -our configuration management tool: Chake (serverless configuration with Chef).  
157 -That maintained environment consistency simplifying the deployment process.  
158 -Additionally, the packages we built on the last step were readily available to be  
159 -used by the management tool.  
160 -  
161 -The VE was used by the government agents to validate new features and required 155 +(PE), with two exceptions: only the government officers and project leaders had
  156 +access to it and all the data was anonymised. To configure the environment, we
  157 +used a configuration management tool named Chef with Chake support (serverless
  158 +configuration for Chef). That tool maintained environment consistency
  159 +simplifying the deployment process. Additionally, the packages we built on the
  160 +last step were readily available to be used by the management tool.
  161 +
  162 +Government agents used the VE to validate new features and required
162 changes. Also, the VE was useful to verify the integrity of the entire portal 163 changes. Also, the VE was useful to verify the integrity of the entire portal
163 as part of the next step in the pipeline. 164 as part of the next step in the pipeline.
164 165
165 ### Acceptance Tests 166 ### Acceptance Tests
166 167
167 After we deployed a new SPB Portal version in the VE, the government 168 After we deployed a new SPB Portal version in the VE, the government
168 -agents are responsible for checking features and bug fixes required by them. If 169 +agents were responsible for checking features and bug fixes required by them. If
169 the requirement analysts identified a problem, they notified the developers via 170 the requirement analysts identified a problem, they notified the developers via
170 comments on the SPB Portal's issue tracker. The problems were fixed and the 171 comments on the SPB Portal's issue tracker. The problems were fixed and the
171 pipeline restarted from scratch. If everything was validated, we moved forward. 172 pipeline restarted from scratch. If everything was validated, we moved forward.
@@ -173,7 +174,7 @@ pipeline restarted from scratch. If everything was validated, we moved forward. @@ -173,7 +174,7 @@ pipeline restarted from scratch. If everything was validated, we moved forward.
173 ### Production Environment Deployment 174 ### Production Environment Deployment
174 175
175 After the government finished the VE check and it was cleared for deployment, 176 After the government finished the VE check and it was cleared for deployment,
176 -we could finally begin the deployment to Production Environment (PE). For this 177 +we could finally begin the deployment to the Production Environment (PE). For this
177 we also used our configuration management tool, the same scripts and package 178 we also used our configuration management tool, the same scripts and package
178 versions as in the VE. After the deploy was completed, both VE and PE 179 versions as in the VE. After the deploy was completed, both VE and PE
179 were running identical software. This was the point where new features and bug 180 were running identical software. This was the point where new features and bug
@@ -297,6 +298,6 @@ between industry and government, specially regarding CD. @@ -297,6 +298,6 @@ between industry and government, specially regarding CD.
297 ## References 298 ## References
298 299
299 1. G. Booch, A. W. Brown, "Collaborative Development Environments", in Advances in Computers, vol. 59, 2003, pp. 1–27. 300 1. G. Booch, A. W. Brown, "Collaborative Development Environments", in Advances in Computers, vol. 59, 2003, pp. 1–27.
300 -1. L. Chen, "Continuous Delivery: Huge Benefits, but Challenges Too", in IEEE Software, vol. 32, no. 2, 2015, pp. 50-54.  
301 - 301 +2. L. Chen, "Continuous Delivery: Huge Benefits, but Challenges Too", in IEEE Software, vol. 32, no. 2, 2015, pp. 50-54.
  302 +3. Davis, Jennifer and Daniels, Katherine, Effective DevOps: building a culture of collaboration, affinity, and tooling at scale, 2016, " O'Reilly Media, Inc."
302 303