Docker build improvements (#8218)

Fixes https://github.com/certbot/certbot/issues/8208.
Fixes https://github.com/certbot/certbot/issues/8198.

In addition to those two linked issues, this PR:

* Splits both the build and deploy steps based on architecture for performance. The Docker builds should no longer be the bottleneck in any stage of the pipeline.
* Skips building Docker images for ARM on `test-` branches like [we do for snaps](https://github.com/certbot/certbot/blob/e8a232297d6faedb3b0bffc197a2e98c2e59edcb/.azure-pipelines/templates/jobs/packaging-jobs.yml#L67-L71). I initially didn't want to do this, but the ARM builds take ~18 minutes which is significantly longer than any other job currently running on our `test-` branches.

You can see tests running on my fork at:

* [Release pipeline](https://dev.azure.com/bmw0523/bmw/_build/results?buildId=387&view=results)
* [Test pipeline](https://dev.azure.com/bmw0523/bmw/_build/results?buildId=388&view=results)
* [Nightly pipeline](https://dev.azure.com/bmw0523/bmw/_build/results?buildId=390&view=results)

* update script intro

* update readme

* ParseRequestedArch

* build all arch in Azure

* Build docker images during testing/packaging.

* require global variable?

* Error if TAG_BASE is empty.

* prepare build job

* change variable syntax

* Update deploy stage.

* remove old dockerTag param

* add displayName

* fix docker images command

* split docker_build by arch

* Allow deploying a subset of architectures.

* deploy in parallel

* Skip ARM builds on test- branches.

* fix spacing
This commit is contained in:
Brad Warren
2020-08-18 10:48:01 -07:00
committed by GitHub
parent acb6d34c5f
commit 4e9d3afcc4
9 changed files with 116 additions and 30 deletions
+6 -5
View File
@@ -20,11 +20,12 @@ DNS plugin Docker images to Docker Hub.
High-level behavior
-------------------
Running `./build.sh <TAG> && ./deploy.sh <TAG>` causes the Docker images to be
built and deployed to Docker Hub where `<TAG>` is the base of the tag that
should be given to the given images. The tag should either be `nightly` or a
git version tag like `v0.34.0`. The given tag is only the base of the tag
because the CPU architecture is also added to the tag.
Running `./build.sh <TAG> all && ./deploy.sh <TAG> all` causes the Docker
images to be built and deployed to Docker Hub for all supported architectures
where `<TAG>` is the base of the tag that should be given to the given images.
The tag should either be `nightly` or a git version tag like `v0.34.0`. The
given tag is only the base of the tag because the CPU architecture is also
added to the tag.
Configuration
-------------