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,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 |