buildbot config
This commit is contained in:
parent
796735bd71
commit
ef000b6bb4
5 changed files with 238 additions and 0 deletions
1
containers/buildbot-linux/.dockerignore
Normal file
1
containers/buildbot-linux/.dockerignore
Normal file
|
@ -0,0 +1 @@
|
|||
cloudbuild.yaml
|
84
containers/buildbot-linux/Dockerfile
Normal file
84
containers/buildbot-linux/Dockerfile
Normal file
|
@ -0,0 +1,84 @@
|
|||
FROM ubuntu:latest
|
||||
|
||||
RUN echo 'intall packages'; \
|
||||
apt-get update; \
|
||||
apt-get upgrade; \
|
||||
apt-get install -y --no-install-recommends \
|
||||
gosu tini \
|
||||
locales openssh-client gnupg ca-certificates apt-transport-https \
|
||||
zip wget curl git \
|
||||
gdb build-essential \
|
||||
ninja-build \
|
||||
libelf-dev libffi-dev gcc-multilib libmpfr-dev libpfm4-dev \
|
||||
# for llvm-libc tests that build mpfr and gmp from source
|
||||
autoconf automake libtool \
|
||||
python3 python3-psutil python3-pip python3-setuptools \
|
||||
lsb-release software-properties-common \
|
||||
swig python3-dev libedit-dev libncurses5-dev libxml2-dev liblzma-dev golang rsync jq \
|
||||
# for llvm installation script
|
||||
sudo \
|
||||
# build scripts
|
||||
nodejs ccache \
|
||||
# shell users
|
||||
less vim
|
||||
|
||||
# Install cmake 3.23+ from source.
|
||||
RUN wget --no-verbose -O /cmake.sh https://github.com/Kitware/CMake/releases/download/v3.23.3/cmake-3.23.3-linux-x86_64.sh; \
|
||||
chmod +x /cmake.sh; \
|
||||
mkdir -p /etc/cmake; \
|
||||
/cmake.sh --prefix=/etc/cmake --skip-license; \
|
||||
ln -s /etc/cmake/bin/cmake /usr/bin/cmake; \
|
||||
cmake --version; \
|
||||
rm /cmake.sh
|
||||
|
||||
# Install sccache.
|
||||
RUN curl -o sccache-v0.5.4-x86_64-unknown-linux-musl.tar.gz -L https://github.com/mozilla/sccache/releases/download/v0.5.4/sccache-v0.5.4-x86_64-unknown-linux-musl.tar.gz \
|
||||
&& echo "4bf3ce366aa02599019093584a5cbad4df783f8d6e3610548c2044daa595d40b sccache-v0.5.4-x86_64-unknown-linux-musl.tar.gz" | shasum -a 256 -c \
|
||||
&& tar xzf ./sccache-v0.5.4-x86_64-unknown-linux-musl.tar.gz \
|
||||
&& mv sccache-v0.5.4-x86_64-unknown-linux-musl/sccache /usr/bin \
|
||||
&& chown root:root /usr/bin/sccache \
|
||||
&& ls -la /usr/bin/sccache \
|
||||
&& sccache --version
|
||||
|
||||
# LLVM must be installed after prerequsite packages.
|
||||
ENV LLVM_VERSION=16
|
||||
RUN echo 'install llvm ${LLVM_VERSION}' && \
|
||||
wget --no-verbose https://apt.llvm.org/llvm.sh && \
|
||||
chmod +x llvm.sh && \
|
||||
./llvm.sh ${LLVM_VERSION} && \
|
||||
apt-get update && \
|
||||
apt-get install -y clang-${LLVM_VERSION} clang-format-${LLVM_VERSION} clang-tidy-${LLVM_VERSION} lld-${LLVM_VERSION} && \
|
||||
ln -s /usr/bin/clang-${LLVM_VERSION} /usr/bin/clang && \
|
||||
ln -s /usr/bin/clang++-${LLVM_VERSION} /usr/bin/clang++ && \
|
||||
ln -s /usr/bin/clang-tidy-${LLVM_VERSION} /usr/bin/clang-tidy && \
|
||||
ln -s /usr/bin/clang-tidy-diff-${LLVM_VERSION}.py /usr/bin/clang-tidy-diff && \
|
||||
ln -s /usr/bin/clang-format-${LLVM_VERSION} /usr/bin/clang-format && \
|
||||
ln -s /usr/bin/clang-format-diff-${LLVM_VERSION} /usr/bin/clang-format-diff && \
|
||||
ln -s /usr/bin/lld-${LLVM_VERSION} /usr/bin/lld && \
|
||||
ln -s /usr/bin/lldb-${LLVM_VERSION} /usr/bin/lldb && \
|
||||
ln -s /usr/bin/ld.lld-${LLVM_VERSION} /usr/bin/ld.lld && \
|
||||
clang --version
|
||||
|
||||
RUN echo 'configure locale' && \
|
||||
sed --in-place '/en_US.UTF-8/s/^#//' /etc/locale.gen && \
|
||||
locale-gen
|
||||
ENV LANG en_US.UTF-8
|
||||
ENV LANGUAGE en_US:en
|
||||
ENV LC_ALL en_US.UTF-8
|
||||
|
||||
RUN pip3 install buildbot-worker==2.8.4
|
||||
|
||||
VOLUME /build
|
||||
# WORKDIR /build
|
||||
|
||||
RUN groupadd -g 121 runner \
|
||||
&& useradd -mr -d /home/runner -u 1001 -g 121 runner \
|
||||
&& mkdir -p /build \
|
||||
&& chown -R runner:runner /build;
|
||||
|
||||
COPY *.sh /usr/local/bin/
|
||||
RUN chmod og+rx /usr/local/bin/*.sh
|
||||
|
||||
ENTRYPOINT ["entrypoint.sh"]
|
||||
CMD ["gosu", "runner", "sleep", "infinity"]
|
||||
|
37
containers/buildbot-linux/entrypoint.sh
Executable file
37
containers/buildbot-linux/entrypoint.sh
Executable file
|
@ -0,0 +1,37 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright 2021 Google LLC
|
||||
#
|
||||
# Licensed under the the Apache License v2.0 with LLVM Exceptions (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# https://llvm.org/LICENSE.txt
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
set -eu
|
||||
set -o pipefail
|
||||
|
||||
USER=runner
|
||||
WORKDIR=/build
|
||||
chown -R ${USER}:${USER} "$WORKDIR"
|
||||
|
||||
export CCACHE_DIR="${WORKDIR}"/ccache
|
||||
export CCACHE_MAXSIZE=20G
|
||||
mkdir -p "${CCACHE_DIR}"
|
||||
chown -R ${USER}:${USER} "${CCACHE_DIR}"
|
||||
|
||||
export SCCACHE_DIR="$WORKDIR/sccache"
|
||||
export SCCACHE_IDLE_TIMEOUT="0"
|
||||
rm -rf "$SCCACHE_DIR"
|
||||
mkdir -p "${SCCACHE_DIR}"
|
||||
chown -R ${USER}:${USER} "${SCCACHE_DIR}"
|
||||
chmod oug+rw "${SCCACHE_DIR}"
|
||||
gosu "$USER" bash -c 'SCCACHE_DIR="${SCCACHE_DIR}" SCCACHE_IDLE_TIMEOUT=0 SCCACHE_CACHE_SIZE=20G sccache --start-server'
|
||||
|
||||
# Run with tini to correctly pass exit codes.
|
||||
exec /usr/bin/tini -g -- $@
|
57
kubernetes/buildbot/linux-test.yaml
Normal file
57
kubernetes/buildbot/linux-test.yaml
Normal file
|
@ -0,0 +1,57 @@
|
|||
# Copyright 2021 Google LLC
|
||||
#
|
||||
# Licensed under the the Apache License v2.0 with LLVM Exceptions (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# https://llvm.org/LICENSE.txt
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: buildbot-linux-test
|
||||
spec:
|
||||
replicas: 1
|
||||
strategy:
|
||||
rollingUpdate:
|
||||
maxUnavailable: 1
|
||||
maxSurge: 0
|
||||
type: RollingUpdate
|
||||
selector:
|
||||
matchLabels:
|
||||
app: buildbot-linux-test
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: buildbot-linux-test
|
||||
spec:
|
||||
containers:
|
||||
- name: runner
|
||||
image: gcr.io/llvm-premerge-checks/buildbot-linux:latest
|
||||
resources:
|
||||
limits:
|
||||
cpu: 31
|
||||
memory: 80Gi
|
||||
requests:
|
||||
cpu: 31
|
||||
memory: 80Gi
|
||||
volumeMounts:
|
||||
- name: workdir
|
||||
mountPath: /build
|
||||
env:
|
||||
- name: POD_NAME
|
||||
valueFrom:
|
||||
fieldRef:
|
||||
fieldPath: metadata.name
|
||||
volumes:
|
||||
- name: workdir
|
||||
emptyDir: {}
|
||||
nodeSelector:
|
||||
cloud.google.com/gke-nodepool: linux-agents-2
|
||||
terminationGracePeriodSeconds: 30
|
59
kubernetes/buildbot/windows-test.yaml
Normal file
59
kubernetes/buildbot/windows-test.yaml
Normal file
|
@ -0,0 +1,59 @@
|
|||
# Copyright 2022 Google LLC
|
||||
#
|
||||
# Licensed under the the Apache License v2.0 with LLVM Exceptions (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# https://llvm.org/LICENSE.txt
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: buildbot-windows-test
|
||||
spec:
|
||||
replicas: 1
|
||||
strategy:
|
||||
type: Recreate
|
||||
selector:
|
||||
matchLabels:
|
||||
app: buildbot-windows-test
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: buildbot-windows-test
|
||||
spec:
|
||||
containers:
|
||||
- name: runner
|
||||
image: gcr.io/llvm-premerge-checks/buildbot-windows:latest
|
||||
resources:
|
||||
limits:
|
||||
cpu: 31
|
||||
memory: 110Gi
|
||||
requests:
|
||||
cpu: 31
|
||||
memory: 110Gi
|
||||
volumeMounts:
|
||||
- name: workdir
|
||||
mountPath: "C:\\ws"
|
||||
env:
|
||||
- name: WORKDIR
|
||||
value: "c:/ws" # matching workdir
|
||||
# Empty dir volume can use all disk space from VM. By default container
|
||||
# disk will only be 20Gb and run out of space.
|
||||
volumes:
|
||||
- name: workdir
|
||||
emptyDir: {}
|
||||
nodeSelector:
|
||||
cloud.google.com/gke-nodepool: windows-32
|
||||
tolerations:
|
||||
- key: "node.kubernetes.io/os"
|
||||
operator: "Equal"
|
||||
value: "windows"
|
||||
effect: "NoSchedule"
|
||||
terminationGracePeriodSeconds: 30
|
Loading…
Reference in a new issue