# Install packages we need. Docker must be installed and configured, # as should Go itself. We just install some extra bits and pieces. function install_pkgs() { export DEBIAN_FRONTEND=noninteractive while true; do if sudo -E apt-get update && \ sudo -E apt-get install -y "$@"; then break fi done } install_pkgs make linux-libc-dev graphviz jq curl binutils gnupg gnupg-agent \ gcc pkg-config apt-transport-https ca-certificates software-properties-common # Install headers, only if available. if test -n "$(apt-cache search --names-only "^linux-headers-$(uname -r)$")"; then install_pkgs "linux-headers-$(uname -r)" fi # Setup for parallelization with PARTITION and TOTAL_PARTITIONS. export PARTITION=${BUILDKITE_PARALLEL_JOB:-0} PARTITION=$((${PARTITION}+1)) # 1-indexed, but PARALLEL_JOB is 0-indexed. export TOTAL_PARTITIONS=${BUILDKITE_PARALLEL_JOB_COUNT:-1} # Ensure Docker has experimental enabled. EXPERIMENTAL=$(sudo docker version --format='{{.Server.Experimental}}') if test "${EXPERIMENTAL}" != "true"; then make sudo TARGETS=//runsc:runsc ARGS="install --experimental=true" sudo systemctl restart docker fi # Helper for benchmarks, based on the branch. if test "${BUILDKITE_BRANCH}" = "master"; then export BENCHMARKS_OFFICIAL=true else export BENCHMARKS_OFFICIAL=false fi # Clear existing profiles. sudo rm -rf /tmp/profile # Allow to read dmesg for all users. It is required for the syslog test. sudo sysctl -w kernel.dmesg_restrict=0 # Download credentials, if a release agent. if test "${BUILDKITE_AGENT_META_DATA_QUEUE}" = "release"; then # Pull down secrets. gcloud secrets versions access --secret="repo-key" --format='get(payload.data)' latest | tr '_-' '/+' | base64 -d > repo.key # Configure the Docker credential helper (to push images). gcloud auth configure-docker -q fi