#!/bin/bash
#
# Copyright 2017 Huawei Technologies Co., Ltd.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#

function restart_jenkins() {
    sudo systemctl restart jenkins
    sleep 1
    echo -n "Restarting jenkins"
    until $(curl --output /dev/null --silent --head --fail http://localhost:8080/login); do
	printf '.'
	sleep 3
    done
    echo
    sleep 1
}

sed -i 's|archive\.ubuntu\.com|mirrors.ocf.berkeley.edu|g' /etc/apt/sources.list

# Assume that the vagrant host is running a local Nexus proxy
echo "192.168.33.1 nexus-proxy" >> /etc/hosts


cat >> /etc/inputrc <<EOF
set show-all-if-ambiguous on
set show-all-if-unmodified on
set match-hidden-files off
set mark-symlinked-directories on
EOF


apt-get update
apt-get -y install git
git config --global user.email "jenkins@localhost"
git config --global user.name "jenkins"
apt-get -y install curl openjdk-8-jdk maven unzip

# install Jenkins
wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -
sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
apt-get update
apt-get -y install jenkins jenkins-job-builder python-pip

apt-get -y install docker.io
sudo usermod -aG docker ubuntu
sudo usermod -aG docker jenkins

su -l jenkins -c "/vagrant/jenkins-init-1.sh"

restart_jenkins

su -l jenkins -c "/vagrant/jenkins-init-2.sh"

restart_jenkins

su -l jenkins -c "/vagrant/jjb-init.sh"

