summaryrefslogtreecommitdiffstats
path: root/jenkins-scripts
diff options
context:
space:
mode:
authorAndrew Grimberg <agrimberg@linuxfoundation.org>2016-09-23 10:56:38 -0700
committerAndrew Grimberg <agrimberg@linuxfoundation.org>2016-09-23 12:01:57 -0700
commit128b3e738f0a3c30342b0d1c7554a3acc49ca8b7 (patch)
treee195b0cf48863298a311b0652867e1e4c1ed66e3 /jenkins-scripts
parent490530fd80827046db0eca6eb016521f316a4583 (diff)
Jenkins spin-up scripts
Scripts used for Jenkins minion startup when used with OpenStack plugin managed minions Change-Id: I616222a0fab12d8f283b5e633a612551c0d5f313 Signed-off-by: Andrew Grimberg <agrimberg@linuxfoundation.org>
Diffstat (limited to 'jenkins-scripts')
-rw-r--r--jenkins-scripts/README8
-rwxr-xr-xjenkins-scripts/basic_settings.sh54
-rwxr-xr-xjenkins-scripts/create_jenkins_user.sh41
-rwxr-xr-xjenkins-scripts/jenkins-init-script.sh27
-rwxr-xr-xjenkins-scripts/system_type.sh31
5 files changed, 161 insertions, 0 deletions
diff --git a/jenkins-scripts/README b/jenkins-scripts/README
new file mode 100644
index 00000000..cff7f26f
--- /dev/null
+++ b/jenkins-scripts/README
@@ -0,0 +1,8 @@
+The scripts in this directory are used by the Jenkins spin-up component
+for dynamic minions.
+
+The spinup script will be as follows (${system_type} will be replaced
+with the appropriate system_type script)
+
+git clone https://gerrit.fd.io/r/p/ci-management.git /ci-management
+/ci-management/jenkins-scripts/jenkins-init-script.sh
diff --git a/jenkins-scripts/basic_settings.sh b/jenkins-scripts/basic_settings.sh
new file mode 100755
index 00000000..412dfff3
--- /dev/null
+++ b/jenkins-scripts/basic_settings.sh
@@ -0,0 +1,54 @@
+#!/bin/bash
+# @License EPL-1.0 <http://spdx.org/licenses/EPL-1.0>
+##############################################################################
+# Copyright (c) 2016 The Linux Foundation and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+##############################################################################
+
+case "$(facter operatingsystem)" in
+ Ubuntu)
+ apt-get update
+ # make sure that the ca-certs are properly updated
+ /usr/sbin/update-ca-certificates
+
+ # attach to the fd.io.dev apt repo
+ echo 'deb http://nexus.fd.io/content/repositories/fd.io.dev/ ./' >> /etc/apt/sources.list
+ ;;
+ *)
+ # Do nothing on other distros for now
+ ;;
+esac
+
+IPADDR=$(facter ipaddress)
+HOSTNAME=$(facter hostname)
+FQDN=$(facter fqdn)
+
+echo "${IPADDR} ${HOSTNAME} ${FQDN}" >> /etc/hosts
+
+#Increase limits
+cat <<EOF > /etc/security/limits.d/jenkins.conf
+jenkins soft nofile 16000
+jenkins hard nofile 16000
+EOF
+
+cat <<EOSSH >> /etc/ssh/ssh_config
+Host *
+ ServerAliveInterval 60
+
+# we don't want to do SSH host key checking on spin-up systems
+# Don't use CIDR since SSH won't parse it
+# 10.30.48.0/23
+Host 10.30.48.* 10.30.49.*
+ StrictHostKeyChecking no
+ UserKnownHostsFile /dev/null
+EOSSH
+
+cat <<EOKNOWN > /etc/ssh/ssh_known_hosts
+[gerrit.fd.io]:29418,[162.253.54.31]:29418 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC76FxV43JIk/HpI5JUZfizmak9znK/QzsjPoNHt/Eo2Vp68kvJIRZ+PzI7RJR0NsdsXlyqzRsGuH+Cj99ZuLVjNMqz1Y1A5y6itYAgT42KDcnV/JoPx6WV+THdQ+oMSp2dINtvD1kc6Om8iAA2CwYOfIZ/FQS5A9OX2xzFopo4qAN3nRk9kpcHyC698R5SDNZBbk6eqlsBz0827KJrSpOSEEMBhtroBM4JV8vImcSWeJuQ5QFdZgQdQaI8R5YFBRbWu3mDSgJfjJk89xT2CkUiqIynNJeiQMM4IZxcdQB3zJ1RUEJepxv77yV09NZ8jwhaN6X659UJZjsCZ5ffvc77
+EOKNOWN
+
+# vim: sw=2 ts=2 sts=2 et :
diff --git a/jenkins-scripts/create_jenkins_user.sh b/jenkins-scripts/create_jenkins_user.sh
new file mode 100755
index 00000000..779d1f7c
--- /dev/null
+++ b/jenkins-scripts/create_jenkins_user.sh
@@ -0,0 +1,41 @@
+#!/bin/bash
+# @License EPL-1.0 <http://spdx.org/licenses/EPL-1.0>
+##############################################################################
+# Copyright (c) 2016 The Linux Foundation and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+##############################################################################
+
+#######################
+# Create Jenkins User #
+#######################
+
+OS=$(facter operatingsystem | tr '[:upper:]' '[:lower:]')
+
+useradd -m -s /bin/bash jenkins
+
+# Check if docker group exists
+grep -q docker /etc/group
+if [ "$?" == '0' ]
+then
+ # Add jenkins user to docker group
+ usermod -a -G docker jenkins
+fi
+
+# Check if mock group exists
+grep -q mock /etc/group
+if [ "$?" == '0' ]
+then
+ # Add jenkins user to mock group so it can build RPMs using mock if available
+ usermod -a -G mock jenkins
+fi
+
+mkdir /home/jenkins/.ssh
+mkdir /w
+cp -r /home/${OS}/.ssh/authorized_keys /home/jenkins/.ssh/authorized_keys
+# Generate ssh key for use by Robot jobs
+echo -e 'y\n' | ssh-keygen -N "" -f /home/jenkins/.ssh/id_rsa -t rsa
+chown -R jenkins:jenkins /home/jenkins/.ssh /w
diff --git a/jenkins-scripts/jenkins-init-script.sh b/jenkins-scripts/jenkins-init-script.sh
new file mode 100755
index 00000000..67987b54
--- /dev/null
+++ b/jenkins-scripts/jenkins-init-script.sh
@@ -0,0 +1,27 @@
+#!/bin/bash
+# @License EPL-1.0 <http://spdx.org/licenses/EPL-1.0>
+##############################################################################
+# Copyright (c) 2016 The Linux Foundation and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+##############################################################################
+
+# vim: ts=4 sw=4 sts=4 et :
+
+cd /ci-management/jenkins-scripts
+chmod +x ./*.sh
+./system_type.sh
+
+source /tmp/system_type.sh
+./basic_settings.sh
+if [ -f "${SYSTEM_TYPE}.sh" ]
+then
+ ./"${SYSTEM_TYPE}.sh"
+fi
+
+# Create the jenkins user last so that hopefully we don't have to deal with
+# guard files
+./create_jenkins_user.sh
diff --git a/jenkins-scripts/system_type.sh b/jenkins-scripts/system_type.sh
new file mode 100755
index 00000000..88210a4c
--- /dev/null
+++ b/jenkins-scripts/system_type.sh
@@ -0,0 +1,31 @@
+#!/bin/bash
+
+# @License EPL-1.0 <http://spdx.org/licenses/EPL-1.0>
+##############################################################################
+# Copyright (c) 2016 The Linux Foundation and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+##############################################################################
+
+HOST=$(/bin/hostname)
+SYSTEM_TYPE=''
+
+IFS=','
+for i in "basebuild,basebuild" \
+ "centos,centos" \
+ "ubuntu1404,ubuntu1404" \
+ "ubuntu1604,ubuntu1604"
+do set -- $i
+ if [[ $HOST == *"$1"* ]]; then
+ SYSTEM_TYPE="$2"
+ break
+ fi
+done
+
+# Write out the system type to an environment file to then be sourced
+echo "SYSTEM_TYPE=${SYSTEM_TYPE}" > /tmp/system_type.sh
+
+# vim: sw=4 ts=4 sts=4 et :