summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wirzenius <lwirzenius@wikimedia.org>2019-05-20 19:32:46 +0300
committerLars Wirzenius <lwirzenius@wikimedia.org>2019-05-20 19:32:46 +0300
commitcb0fe74ea96325ff2261503ae91feed938001958 (patch)
tree629c59a432a37d918e70e4f311e5b9f09db46113
parent1e4268f293470b8d2dec339ce34ede37a10331be (diff)
downloadwmf-ci-arch-cb0fe74ea96325ff2261503ae91feed938001958.tar.gz
Add: stage to deploy to production
-rw-r--r--ci-arch.html5
-rw-r--r--ci-arch.mdwn11
-rw-r--r--ci-arch.pdfbin286488 -> 286839 bytes
3 files changed, 13 insertions, 3 deletions
diff --git a/ci-arch.html b/ci-arch.html
index 2153b3c..7a448dc 100644
--- a/ci-arch.html
+++ b/ci-arch.html
@@ -44,6 +44,7 @@
<li><a href="#the-ci-pipeline">The CI pipeline</a><ul>
<li><a href="#the-commit-stage">The commit stage</a></li>
<li><a href="#the-acceptance-stage">The acceptance stage</a></li>
+<li><a href="#deployment-to-production">Deployment to production</a></li>
<li><a href="#manual-tests">Manual tests</a></li>
<li><a href="#capacity-tests-non-functional-requirements">Capacity tests, non-functional requirements</a></li>
</ul></li>
@@ -262,7 +263,7 @@
<img src="pipeline.svg" alt="The default pipeline" style="height:25.0%" /><figcaption>The default pipeline</figcaption>
</figure>
<p>CI will provide a default pipeline for all projects. Projects may use that or specify another one.</p>
-<p>The pipeline will be divided into several stages. Mandatory stages for all changes and all projects are commit and acceptance stage. Other stages may be added to specific changes projects as needed.</p>
+<p>The pipeline will be divided into several stages. Mandatory stages for all changes and all projects are commit, acceptance stage, and deployment to production. Other stages may be added to specific changes projects as needed.</p>
<p>The goal is that if the commit and acceptance stages pass, the change is a candidate that can be deployed to production, unless the project is such that it needs (say) manual testing or other human decision for the production deployment decision. Likewise, if the component or the change is particularly security or performance sensitive, stages that check those aspects may be required. CI will have ways of indicating the required changes per component, and also per change. (It is unclear how this will be managed.)</p>
<p>If the commit or acceptance stage fails, there is not production candidate. The pipeline as a whole fails. Any artifacts built by the pipeline will not be deployable to production, but they may be deployable to test environments, or downloaded by developers for inspection.</p>
<h2 id="the-commit-stage">The commit stage</h2>
@@ -277,6 +278,8 @@
<h2 id="the-acceptance-stage">The acceptance stage</h2>
<p>During the acceptance stage CI deploys artifacts built in the commit stage to a production-like system that has the same versions of all sofware as production, except for the changes being processed by the pipeline. CI will then run automated acceptance tests, and other integration and system tests, against the deployed software. The test environment is clean and empty, and well-known, unless and until the test suite inserts data or makes changes.</p>
<p>The acceptance stage can take time. Developers are not expected to wait until it is finished before they move on to working on something else.</p>
+<h2 id="deployment-to-production">Deployment to production</h2>
+<p>If prior stages have passed successfully, and manual code review (“Gerrit CR:+2 vote”) has approved the change, this stage deploys the change to production.</p>
<h2 id="manual-tests">Manual tests</h2>
<p>Testers may instruct CI to deploy any recent built set of artifacts to a dedicated test environment, and can use the software in that environment where it is isolated from others, and won’t suddenly change underneath them. The details of how this will be implemented are to be determined later.</p>
<p>This feature of the CI can also be used to demonstrate upcoming features that are not yet ready to be deployed to or enabled in production.</p>
diff --git a/ci-arch.mdwn b/ci-arch.mdwn
index bfe1393..9f656a6 100644
--- a/ci-arch.mdwn
+++ b/ci-arch.mdwn
@@ -624,8 +624,9 @@ CI will provide a default pipeline for all projects. Projects may use
that or specify another one.
The pipeline will be divided into several stages. Mandatory stages for
-all changes and all projects are commit and acceptance stage. Other
-stages may be added to specific changes projects as needed.
+all changes and all projects are commit, acceptance stage, and
+deployment to production. Other stages may be added to specific
+changes projects as needed.
The goal is that if the commit and acceptance stages pass, the change
is a candidate that can be deployed to production, unless the project
@@ -707,6 +708,12 @@ The acceptance stage can take time. Developers are not expected to
wait until it is finished before they move on to working on something
else.
+## Deployment to production
+
+If prior stages have passed successfully, and manual code review
+("Gerrit CR:+2 vote") has approved the change, this stage deploys the
+change to production.
+
## Manual tests
Testers may instruct CI to deploy any recent built set of artifacts to
diff --git a/ci-arch.pdf b/ci-arch.pdf
index f3a6de8..076f58d 100644
--- a/ci-arch.pdf
+++ b/ci-arch.pdf
Binary files differ