Status: Work in progress
This guide describes several maintenance workflows that have to be executed frequently.
Our Linux and Windows CI workers run on GCE instances. The basic update process consists of the following two steps:
Note: Many changes to the Linux workers don't require these two steps since we run Docker containers on Linux. See below for a description on how to create and deploy new Docker images.
All steps require git
and the Google Cloud SDK to be installed on your machine.
You need a machine with a recent version of MacOS and Microsoft Remote Desktop (10) installed.
cd
into the continuous-integration/buildkite
directory.create_images.py <platform1> <platform2> <...>
. For Windows, this usually means to include bk-windows
and bk-trusted-windows
, whereas the windows-playground
platform is optional. Hint: You can see a list of available platforms by running the script without any arguments.\setup.ps1
.bazel-public
for trusted
images, bazel-untrusted
for “normal” images).create_images
again.create_instances.py --local_config <instance_group1> <instance_group2> <...>
. The available instances group names can be found in the configuration file. Moreover, you can run the script without any arguments to get a list of available instance groups or check the configuration file. For Windows you would usually pass bk-windows bk-trusted-windows
to the script.Most changes can be rolled out by creating and deploying new Docker images. This step requires that Docker is installed and set up, and you need permissions to access the container registry in our GCP project.
docker builder prune -a -f
.cd
into the continuous-integration/buildkite/docker
directory.build.sh
.If you need to create and deploy new VM images, you can follow these steps:
cd
into the continuous-integration/buildkite
directory.python3.6 create_images.py <platform1> <platform2> <...>
. For Linux, this usually means to include bk-docker
and bk-trusted-docker
. Hint: You can see a list of available platforms by running the script without any arguments.python3.6 create_instances.py --local_config <instance_group1> <instance_group2> <...>
. The available instances group names can be found in the configuration file. For Linux you would usually pass bk-docker bk-trusted-docker
to the script.We are operating a number of physical Mac machines in our office. Please see go/bazel-ci-playbook if you're in the Google network.