Update FreeBSD-12 base image Also explicitly install bash (not the default shell on FreeBSD) instead of relying on the GCE instrumentation to have it pulled in already. Change-Id: I103a86c61ef0adcb34097e094e773f5738145997
diff --git a/gce/jenkins-slave.sh b/gce/jenkins-slave.sh index fc840a2..4a38245 100644 --- a/gce/jenkins-slave.sh +++ b/gce/jenkins-slave.sh
@@ -1,4 +1,4 @@ -#!/usr/bin/env bash +#!/bin/sh # # Copyright 2015 The Bazel Authors. All rights reserved. # @@ -99,5 +99,23 @@ EOF +# As this init script is called before the setup is complete, we have to do +# some dance to make sure we only start the actual script once bash (optional +# on some systems) is installed. + +cat > /root/call-jenkins-startup <<'EOF' + +PATH=$PATH:/usr/local/bin ; export PATH +echo `date` PATH=$PATH >> /root/early-startup.log + +while [ -z "`which bash`" ] ; do + echo `date` Waiting for bash to be installed >> /root/early-startup.log + sleep 60 +done + +bash /root/jenkins-startup + +EOF + # Start the actual jenkins daemon -echo bash /root/jenkins-startup | batch +echo /bin/sh /root/call-jenkins-startup | batch
diff --git a/gce/vm.sh b/gce/vm.sh index 9c7cb97..ceaaa62 100755 --- a/gce/vm.sh +++ b/gce/vm.sh
@@ -63,10 +63,10 @@ "freebsd-11-slave-2 https://www.googleapis.com/compute/v1/projects/freebsd-org-cloud-dev/global/images/freebsd-11-0-stable-amd64-2017-01-06 freebsd-11-2 europe-west1-d default startup-script=jenkins-slave.sh freebsd-slave.sh freebsd-ci-homedir.sh" "freebsd-11-slave-3 https://www.googleapis.com/compute/v1/projects/freebsd-org-cloud-dev/global/images/freebsd-11-0-stable-amd64-2017-01-06 freebsd-11-3 europe-west1-d default startup-script=jenkins-slave.sh freebsd-slave.sh freebsd-ci-homedir.sh" "freebsd-11-slave-4 https://www.googleapis.com/compute/v1/projects/freebsd-org-cloud-dev/global/images/freebsd-11-0-stable-amd64-2017-01-06 freebsd-11-4 europe-west1-d default startup-script=jenkins-slave.sh freebsd-slave.sh freebsd-ci-homedir.sh" - "freebsd-12-slave-1 https://www.googleapis.com/compute/v1/projects/freebsd-org-cloud-dev/global/images/freebsd-12-0-current-amd64-2017-07-04 freebsd-12-1 europe-west1-d default startup-script=jenkins-slave.sh freebsd-slave.sh freebsd-ci-homedir.sh" - "freebsd-12-slave-2 https://www.googleapis.com/compute/v1/projects/freebsd-org-cloud-dev/global/images/freebsd-12-0-current-amd64-2017-07-04 freebsd-12-2 europe-west1-d default startup-script=jenkins-slave.sh freebsd-slave.sh freebsd-ci-homedir.sh" - "freebsd-12-slave-3 https://www.googleapis.com/compute/v1/projects/freebsd-org-cloud-dev/global/images/freebsd-12-0-current-amd64-2017-07-04 freebsd-12-3 europe-west1-d default startup-script=jenkins-slave.sh freebsd-slave.sh freebsd-ci-homedir.sh" - "freebsd-12-slave-4 https://www.googleapis.com/compute/v1/projects/freebsd-org-cloud-dev/global/images/freebsd-12-0-current-amd64-2017-07-04 freebsd-12-4 europe-west1-d default startup-script=jenkins-slave.sh freebsd-slave.sh freebsd-ci-homedir.sh" + "freebsd-12-slave-1 https://www.googleapis.com/compute/v1/projects/freebsd-org-cloud-dev/global/images/freebsd-12-0-current-amd64-2017-10-31 freebsd-12-1 europe-west1-d default startup-script=jenkins-slave.sh freebsd-slave.sh freebsd-ci-homedir.sh" + "freebsd-12-slave-2 https://www.googleapis.com/compute/v1/projects/freebsd-org-cloud-dev/global/images/freebsd-12-0-current-amd64-2017-10-31 freebsd-12-2 europe-west1-d default startup-script=jenkins-slave.sh freebsd-slave.sh freebsd-ci-homedir.sh" + "freebsd-12-slave-3 https://www.googleapis.com/compute/v1/projects/freebsd-org-cloud-dev/global/images/freebsd-12-0-current-amd64-2017-10-31 freebsd-12-3 europe-west1-d default startup-script=jenkins-slave.sh freebsd-slave.sh freebsd-ci-homedir.sh" + "freebsd-12-slave-4 https://www.googleapis.com/compute/v1/projects/freebsd-org-cloud-dev/global/images/freebsd-12-0-current-amd64-2017-10-31 freebsd-12-4 europe-west1-d default startup-script=jenkins-slave.sh freebsd-slave.sh freebsd-ci-homedir.sh" # Fow Windows, we use a custom image with pre-installed MSVC. "windows-slave-1 windows-server-2012-r2-dc-v20160112-vs2015-cpp-python-msys windows-x86_64-1 europe-west1-d default windows-startup-script-ps1=jenkins-slave-windows.ps1" "windows-slave-2 windows-server-2012-r2-dc-v20160112-vs2015-cpp-python-msys windows-x86_64-2 europe-west1-d default windows-startup-script-ps1=jenkins-slave-windows.ps1" @@ -100,7 +100,7 @@ "ubuntu-16-04-slave-staging $UBUNTU1604 ubuntu_16.04-x86_64-staging europe-west1-d staging startup-script=jenkins-slave.sh ubuntu-16-04-slave.sh bootstrap-bazel.sh linux-android.sh cleanup-install.sh" "ubuntu-docker-slave-staging $UBUNTU1604 ubuntu_16.04-x86_64-docker-staging europe-west1-d default startup-script=jenkins-slave.sh ubuntu-16-04-slave.sh ubuntu-16-04-docker.sh bootstrap-bazel.sh linux-android.sh cleanup-install.sh" "freebsd-11-slave-staging https://www.googleapis.com/compute/v1/projects/freebsd-org-cloud-dev/global/images/freebsd-11-0-stable-amd64-2017-01-06 freebsd-11-staging europe-west1-d staging startup-script=jenkins-slave.sh freebsd-slave.sh freebsd-ci-homedir.sh" - "freebsd-12-slave-staging https://www.googleapis.com/compute/v1/projects/freebsd-org-cloud-dev/global/images/freebsd-12-0-current-amd64-2017-07-04 freebsd-12-staging europe-west1-d staging startup-script=jenkins-slave.sh freebsd-slave.sh freebsd-ci-homedir.sh" + "freebsd-12-slave-staging https://www.googleapis.com/compute/v1/projects/freebsd-org-cloud-dev/global/images/freebsd-12-0-current-amd64-2017-10-31 freebsd-12-staging europe-west1-d staging startup-script=jenkins-slave.sh freebsd-slave.sh freebsd-ci-homedir.sh" # Fow Windows, we use a custom image with pre-installed MSVC. "windows-slave-staging windows-server-2012-r2-dc-v20160112-vs2015-cpp-python-msys windows-x86_64-staging europe-west1-d staging windows-startup-script-ps1=jenkins-slave-windows.ps1" # Remote Cache @@ -180,6 +180,9 @@ freebsd*) # FreeBSD # Wait a bit for the VM to fully start wait_vm "$TAG" "$LOCATION" 120 /usr/bin/true + # Install bash directly calling gcloud, as the ssh_command function + # already depends on bash being installed and in PATH. + gcloud compute ssh --zone="${LOCATION}" --command "sudo pkg install -y bash" "${TAG}" # Create the jenkins user, run additional set-up scripts and mark # the install process as finished. ssh_command "$TAG" "$LOCATION" \