7
AS_JENKINS="sudo -i -u $JENKINS_USER"
9
export LAUNCHPAD_USER="$(config-get launchpad-user)"
10
config-get ppa-team > $JENKINS_HOME/ppa.team
16
config-get backport-archive > /etc/apt/sources.list.d/backports.list
17
until apt-get update; do
21
apt-get install -yq --force-yes bzr make
24
juju-log "Installing Jenkins plugins ..."
25
cp $HOOK_DIR/files/*.hpi $JENKINS_HOME/plugins/
28
open-port 873 # rsyncd
31
juju-log "Installing credentials ..."
32
GPG="$JENKINS_HOME/.gnupg"
33
SSH="$JENKINS_HOME/.ssh"
34
mkdir --parents "$GPG" "$SSH"
35
config-get ssh-private | base64 --decode > "$SSH/id_rsa"
36
config-get ssh-public | base64 --decode > "$SSH/id_rsa.pub"
37
config-get gpg-private | base64 --decode > "$GPG/secring.gpg"
38
config-get gpg-public | base64 --decode > "$GPG/pubring.gpg"
39
config-get lp-oauth | base64 --decode > "$JENKINS_HOME/.launchpad.credentials"
41
chmod 0600 $GPG/* $SSH/* $JENKINS_HOME/.*cred*
44
for key in $SSH/id_rsa $SSH/id_rsa.pub $GPG/pubring.gpg $GPG/secring.gpg $JENKINS_HOME/.launchpad.credentials; do
45
if ! [ -s "$key" ]; then
46
# Don't fail on this because this is expected to be empty on initial
47
# upgrade and then filled in after the fact
48
juju-log "WARNING: $key is missing or empty."
53
HOSTS="$SSH/known_hosts"
54
if ! grep -qs bazaar.launchpad.net "$HOSTS"; then
55
ssh-keyscan -t rsa bazaar.launchpad.net | tee "$HOSTS"
56
ssh-keyscan -t rsa ppa.launchpad.net | tee -a "$HOSTS"
61
config-get os-username > "$JENKINS_HOME/os.username"
62
config-get os-auth-url > "$JENKINS_HOME/os.auth.url"
63
config-get os-region-name > "$JENKINS_HOME/os.region.name"
64
config-get os-password > "$JENKINS_HOME/os.password"
65
config-get os-tenant-name > "$JENKINS_HOME/os.tenant.name"
66
chmod 0600 $JENKINS_HOME/os.*
69
chown "$JENKINS_USER:$JENKINS_GROUP" -R "$JENKINS_HOME"
72
if [ "$CODE_BRANCH" != "$OLD_BRANCH" ]; then
73
juju-log "Deleting $CODE_PATH because juju config changed..."
77
juju-log "Ensuring lightweight checkout of $CODE_BRANCH gets to $CODE_PATH ..."
78
[ -d "$CODE_PATH" ] || bzr checkout --lightweight $CODE_BRANCH $CODE_PATH 2>/dev/null
80
# `bzr update` will output like "Tree is up to date at revision 858 of branch foo" on stderr.
81
bzr update "$CODE_PATH" 2>"$BRANCH_INFO"
82
juju-log "$(tail -1 <"$BRANCH_INFO")"
83
(cd "$CODE_PATH" && make install && su -p "$JENKINS_USER" -c "make install-user HOME=$JENKINS_HOME")
85
# $BRANCH_MARKER is used by config-changed to know whether we need to switch
86
# to a different branch or simply pull new commits on the existing branch.
87
echo "$CODE_BRANCH" >"$BRANCH_MARKER"