Commit a7fe3919abe7f0fe11031fd21c472e287dd1863a
1 parent
6cc43c1e
Exists in
master
and in
3 other branches
Fix pipeline
Showing
1 changed file
with
37 additions
and
36 deletions
Show diff stats
ieeeSW/releaseEng3/IEEE_ThemeIssue_ReleaseEng_CD.md
... | ... | @@ -96,7 +96,7 @@ worst political crisis after the re-democratization in Brazil. |
96 | 96 | |
97 | 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 | 100 | As it went through each step, it was tested and improved until it finally reached |
101 | 101 | the production environment. At this point we got back to the first stage to release |
102 | 102 | more new code. |
... | ... | @@ -105,26 +105,26 @@ more new code. |
105 | 105 | |
106 | 106 | Each one of the Portal's software components had their own test suite. The |
107 | 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 | 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 | 129 | ### Packaging |
130 | 130 | |
... | ... | @@ -133,39 +133,40 @@ packaging a software for that distribution has three steps: write the script |
133 | 133 | for the specific environment (RPM), build the package, and upload it to a |
134 | 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 | 137 | reasons: |
138 | 138 | |
139 | 139 | * Not all software was packaged by the community and those that existed were |
140 | 140 | outdated; |
141 | 141 | * Packaging makes it easy to manage the software on a given distribution; |
142 | -* It simplifies the deployment; | |
142 | +* Packaging simplifies the deployment; | |
143 | 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 | 152 | ### Validation Environment Deployment |
152 | 153 | |
153 | 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 | 163 | changes. Also, the VE was useful to verify the integrity of the entire portal |
163 | 164 | as part of the next step in the pipeline. |
164 | 165 | |
165 | 166 | ### Acceptance Tests |
166 | 167 | |
167 | 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 | 170 | the requirement analysts identified a problem, they notified the developers via |
170 | 171 | comments on the SPB Portal's issue tracker. The problems were fixed and the |
171 | 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 | 174 | ### Production Environment Deployment |
174 | 175 | |
175 | 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 | 178 | we also used our configuration management tool, the same scripts and package |
178 | 179 | versions as in the VE. After the deploy was completed, both VE and PE |
179 | 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 | 298 | ## References |
298 | 299 | |
299 | 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 | ... | ... |