mlir-nvidia: updating container
diff --git a/buildbot/google/docker/build_run.sh b/buildbot/google/docker/build_run.sh
index 659c455..c9e3215 100755
--- a/buildbot/google/docker/build_run.sh
+++ b/buildbot/google/docker/build_run.sh
@@ -39,7 +39,7 @@
# Define arguments for mounting the volumes
# These differ on Windows and Linux
-VOLUMES="-v ${SECRET_STORAGE}:/vol/secrets -v workertest:/vol/test"
+VOLUMES="-v ${SECRET_STORAGE}:/vol/secrets -v workertest:/vol/test -v workercache:/vol/ccache"
if [ -n "${OS+x}" ] && [[ "${OS}" == "Windows_NT" ]] ; then
VOLUMES="-v ${SECRET_STORAGE}:c:\\volumes\\secrets -v workertest:c:\volumes\\test -v workercache:c:\sccache"
fi
diff --git a/buildbot/google/docker/buildbot-mlir-nvidia/Dockerfile b/buildbot/google/docker/buildbot-mlir-nvidia/Dockerfile
index 0c21440..b79d14f 100644
--- a/buildbot/google/docker/buildbot-mlir-nvidia/Dockerfile
+++ b/buildbot/google/docker/buildbot-mlir-nvidia/Dockerfile
@@ -17,8 +17,11 @@
# install build tools
RUN apt-get update; \
apt-get install -y software-properties-common apt-transport-https ca-certificates \
- clang-8 lld-8 ninja-build git wget gnupg ccache \
- python python-pip python-psutil pybind11-dev ;\
+ clang-8 lld-8 ninja-build git wget gnupg ccache \
+ python3 python3-pip python3-psutil pybind11-dev \
+ # dumb-init recommended in
+ # https://hub.docker.com/r/buildbot/buildbot-worker/dockerfile
+ dumb-init;\
update-alternatives --install /usr/bin/clang clang /usr/bin/clang-8 100 ;\
update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-8 100 ;\
update-alternatives --install /usr/bin/lld lld /usr/bin/lld-8 100
@@ -45,16 +48,27 @@
apt-get update ;\
apt-get install -y vulkan-sdk
-# install (old) build bot version
-# this version of build bot requires python2!
-RUN pip install buildbot-slave==0.8.11
+# Install build bot (server was at 2.8.5-dev at time of writing).
+RUN pip3 install buildbot-worker==2.8.4
-# Volume to mount secrets into the container
-VOLUME /secrets
+# Workaround permissions issues when writing to named volumes
+# https://github.com/docker/compose/issues/3270#issuecomment-206214034
+RUN mkdir -p /vol/test /vol/ccache /vol/worker ; \
+ chmod -R 777 /vol
-# create user account, some test fail if run as root
+# Volume to mount secrets into the container.
+VOLUME /vol/secrets
+# Volume to store data for local, manual testing of the container.
+VOLUME /vol/test
+# Volume to store ccache.
+VOLUME /vol/ccache
+ENV CCACHE_DIR=/vol/ccache
+# Volume for worker working directory.
+VOLUME /vol/worker
+
+# Create user account, some tests fail if run as root.
RUN useradd buildbot --create-home
-WORKDIR /home/buildbot
+WORKDIR /vol/worker
# copy startup script
COPY run.sh /home/buildbot/
@@ -68,10 +82,6 @@
# Ports:
# 9990 - production
# 9994 - integration
-ENV BUILDBOT_PORT="9990"
+ENV BUILDBOT_PORT="9994"
-# Set up buildbot host and maintainer info.
-RUN mkdir -p "${WORKER_NAME}/info/" ;\
- echo "Christian Kühnel <kuhnel@google.com>" > "${WORKER_NAME}/info/admin"
-
-CMD ./run.sh
+CMD /home/buildbot/run.sh
diff --git a/buildbot/google/docker/buildbot-mlir-nvidia/VERSION b/buildbot/google/docker/buildbot-mlir-nvidia/VERSION
index 8351c19..60d3b2f 100644
--- a/buildbot/google/docker/buildbot-mlir-nvidia/VERSION
+++ b/buildbot/google/docker/buildbot-mlir-nvidia/VERSION
@@ -1 +1 @@
-14
+15
diff --git a/buildbot/google/docker/buildbot-mlir-nvidia/run.sh b/buildbot/google/docker/buildbot-mlir-nvidia/run.sh
index 07cc98f..298aa0e 100755
--- a/buildbot/google/docker/buildbot-mlir-nvidia/run.sh
+++ b/buildbot/google/docker/buildbot-mlir-nvidia/run.sh
@@ -12,7 +12,11 @@
set -eu
# Read the worker password from a mounted file.
-WORKER_PASSWORD=$(cat /secrets/token)
+WORKER_PASSWORD=$(cat /vol/secrets/token)
+
+# Set up buildbot host and maintainer info.
+mkdir -p "${WORKER_NAME}/info/"
+echo "Christian Kuehnel <kuhnel@google.com>" > "${WORKER_NAME}/info/admin"
# generate the host information of this worker
(
@@ -51,14 +55,10 @@
# create the folder structure
echo "creating worker ${WORKER_NAME} at port ${BUILDBOT_PORT}..."
-buildslave create-slave --keepalive=200 "${WORKER_NAME}" \
+buildbot-worker create-worker --keepalive=200 "${WORKER_NAME}" \
lab.llvm.org:${BUILDBOT_PORT} "${WORKER_NAME}" "${WORKER_PASSWORD}"
-# start the daemon, this command return immetiately
+# start the worker, based on
+# https://hub.docker.com/r/buildbot/buildbot-worker/dockerfile
echo "starting worker..."
-buildslave start "${WORKER_NAME}"
-
-# To keep the container running and produce log outputs: dump the worker
-# log to stdout
-echo "Following worker log..."
-tail -f ${WORKER_NAME}/twistd.log
+/usr/bin/dumb-init twistd --pidfile= --nodaemon -l - --python="${WORKER_NAME}/buildbot.tac"
\ No newline at end of file
diff --git a/buildbot/google/terraform/deployment-mlir-nvidia-production.yaml b/buildbot/google/terraform/deployment-mlir-nvidia-production.yaml
index ff5f52a..c758c98 100644
--- a/buildbot/google/terraform/deployment-mlir-nvidia-production.yaml
+++ b/buildbot/google/terraform/deployment-mlir-nvidia-production.yaml
@@ -27,7 +27,7 @@
spec:
containers:
# the image and version we want to run
- - image: gcr.io/sanitizer-bots/buildbot-mlir-nvidia:14
+ - image: gcr.io/sanitizer-bots/buildbot-mlir-nvidia:15
name: mlir-nvidia-production
env:
# connect to production environment, running at port 9990
@@ -48,9 +48,17 @@
nvidia.com/gpu: "1"
volumeMounts:
# mount the secrets into a folder
- - mountPath: /secrets
+ - mountPath: /vol/secrets
mountPropagation: None
name: buildbot-token
+ # storage for ccache
+ - mountPath: /vol/ccache
+ mountPropagation: None
+ name: ccache-vol
+ # work directory of buildbot
+ - mountPath: /vol/buildbot
+ mountPropagation: None
+ name: buildbot-vol
# specify the nood pool on which to deploy
nodeSelector:
pool: nvidia-16core-pool
@@ -61,3 +69,8 @@
secret:
optional: false
secretName: password-mlir-nvidia
+ - name: ccache-vol
+ emptyDir: {}
+ - name: buildbot-vol
+ emptyDir: {}
+
diff --git a/buildbot/google/terraform/deployment-mlir-nvidia-staging.yaml b/buildbot/google/terraform/deployment-mlir-nvidia-staging.yaml
index ce2334c..cde3230 100644
--- a/buildbot/google/terraform/deployment-mlir-nvidia-staging.yaml
+++ b/buildbot/google/terraform/deployment-mlir-nvidia-staging.yaml
@@ -28,7 +28,7 @@
spec:
containers:
# the image and version we want to run
- - image: gcr.io/sanitizer-bots/buildbot-mlir-nvidia:14
+ - image: gcr.io/sanitizer-bots/buildbot-mlir-nvidia:15
name: mlir-nvidia-staging
# set environment variables
env:
@@ -63,3 +63,29 @@
secret:
optional: false
secretName: password-mlir-nvidia
+ # mount the secrets into a folder
+ - mountPath: /vol/secrets
+ mountPropagation: None
+ name: buildbot-token
+ # storage for ccache
+ - mountPath: /vol/ccache
+ mountPropagation: None
+ name: ccache-vol
+ # work directory of buildbot
+ - mountPath: /vol/buildbot
+ mountPropagation: None
+ name: buildbot-vol
+ # specify the nood pool on which to deploy
+ nodeSelector:
+ pool: nvidia-16core-pool
+ restartPolicy: Always
+ volumes:
+ # declare the secret as a volume so we can mount it
+ - name: buildbot-token
+ secret:
+ optional: false
+ secretName: password-mlir-nvidia
+ - name: ccache-vol
+ emptyDir: {}
+ - name: buildbot-vol
+ emptyDir: {}