Skip to content

Commit c5659dd

Browse files
committed
[libc++] Add a utility script to run the Docker image used by builders
Several contributors have been asking me how to reproduce the CI environment locally. This is the last step towards making that work out-of-the-box. Basically, just run `libcxx/utils/ci/run-buildbot-container` and you're good to go. Differential Revision: https://reviews.llvm.org/D97782
1 parent 18fa1d3 commit c5659dd

File tree

2 files changed

+27
-12
lines changed

2 files changed

+27
-12
lines changed

libcxx/utils/ci/Dockerfile

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -17,19 +17,10 @@
1717
# The environment variables in `secrets.env` must be replaced by the actual
1818
# tokens for this to work. These should obviously never be checked in.
1919
#
20-
# To start a shell in the Docker image, use:
21-
# $ docker run -it --volume "$(git rev-parse --show-toplevel):/llvm" --workdir "/llvm" $(docker build -q .) bash
22-
#
23-
# This will fire up the Docker container and mount the root of the monorepo
24-
# as /llvm in the container. Be careful, the state in /llvm is shared between
25-
# the container and the host machine.
26-
#
27-
# Finally, a pre-built version of this image is available on DockerHub as
28-
# ldionne/libcxx-builder. To use the pre-built version of the image, use
29-
#
30-
# $ docker pull ldionne/libcxx-builder
31-
# $ docker run -it <options> ldionne/libcxx-builder
20+
# If you're only looking to run the Docker image locally for debugging a
21+
# build bot, see the `run-buildbot-container` script located in this directory.
3222
#
23+
# A pre-built version of this image is maintained on DockerHub as ldionne/libcxx-builder.
3324
# To update the image, rebuild it and push it to ldionne/libcxx-builder (which
3425
# will obviously only work if you have permission to do so).
3526
#
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
#!/usr/bin/env bash
2+
3+
# This script starts a shell in a container running the libc++ build bot Docker
4+
# image. That image emulates the environment used by libc++'s Linux builders on
5+
# BuildKite.
6+
#
7+
# Once you're inside the shell, you can run the various build jobs with the
8+
# `run-buildbot` script.
9+
#
10+
# This script must be run from within the LLVM monorepo. Furthermore, the
11+
# monorepo will be mounted as `/llvm` inside the container. Be careful, the
12+
# state in `/llvm` is shared between the container and the host machine, which
13+
# is useful for editing files on the host machine and re-running the build bot
14+
# in the container.
15+
16+
set -e
17+
18+
MONOREPO_ROOT="$(git rev-parse --show-toplevel)"
19+
if [[ ! -d "${MONOREPO_ROOT}/libcxx/utils/ci" ]]; then
20+
echo "Was unable to find the root of the LLVM monorepo; are you running from within the monorepo?"
21+
exit 1
22+
fi
23+
docker pull ldionne/libcxx-builder
24+
docker run -it --volume "${MONOREPO_ROOT}:/llvm" --workdir "/llvm" ldionne/libcxx-builder bash

0 commit comments

Comments
 (0)