github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/acceptancetests/repository/charms/jenkins-slave/hooks/config-changed (about) 1 #!/bin/bash 2 set -eux 3 4 status-set maintenance "Updating scripts" || true 5 if [[ ! -d /var/lib/jenkins/bin ]]; then 6 mkdir -p /var/lib/jenkins/bin 7 fi 8 cp $JUJU_CHARM_DIR/scripts/start-jenkins-slave.sh /var/lib/jenkins/bin 9 chmod +x /var/lib/jenkins/bin/start-jenkins-slave.sh 10 cp $JUJU_CHARM_DIR/scripts/place-slave.sh /var/lib/jenkins/bin 11 chmod +x /var/lib/jenkins/bin/place-slave.sh 12 13 status-set maintenance "Checking config" 14 PACKAGES=$(config-get packages) 15 if [[ "$PACKAGES" != "" ]]; then 16 status-set maintenance "Installing packages." || true 17 apt-get install -y $PACKAGES 18 fi 19 20 SLAVE_NAME=$(config-get slave-name) 21 if [[ "$SLAVE_NAME" == "" ]]; then 22 APP_NAME=$(echo $JUJU_UNIT_NAME | cut -d / -f 1) 23 APP_ALPHA=$(echo $JUJU_UNIT_NAME | cut -d / -f 2 | tr 0123456789 abcdefghij) 24 SLAVE_NAME="$APP_NAME-$APP_ALPHA" 25 fi 26 27 MASTER_URL=$(config-get master-url) 28 # This is a hack. We don't want to iterate, but we need to 29 # because we need the state of relations and config to know 30 # if this charm is active or something else. 31 for app in $(relation-ids slave); do 32 for unit in $(relation-list -r $app); do 33 MASTER_URL"$(relation-get -r $app url $unit)" 34 break 35 done 36 done 37 if [[ "$MASTER_URL" == "" ]]; then 38 status-set blocked "Set master-url option or relate to master" || true 39 juju-log "master-url config is not set or master needs to export its url" 40 exit 0 41 fi 42 43 status-set maintenance "Updating configuration." || true 44 cp $JUJU_CHARM_DIR/files/default/jenkins-slave /etc/default/jenkins-slave 45 sed -i -r \ 46 "s,NAME=jenkins-slave,NAME=$SLAVE_NAME," /etc/default/jenkins-slave 47 sed -i -r \ 48 "s,#JENKINS_URL=.*,JENKINS_URL=$MASTER_URL," /etc/default/jenkins-slave 49 50 if [[ -d /etc/systemd ]]; then 51 cp $JUJU_CHARM_DIR/files/systemd/system/jenkins-slave.service \ 52 /etc/systemd/system/jenkins-slave.service 53 systemctl enable jenkins-slave 54 else 55 cp $JUJU_CHARM_DIR/files/init/jenkins-slave.conf \ 56 /etc/init/jenkins-slave.conf 57 ln -s /lib/init/upstart-job /etc/init.d/jenkins-slave || true 58 fi 59 60 status-set maintenance "Checking jenkins slave.jar" || true 61 /var/lib/jenkins/bin/place-slave.sh "$MASTER_URL" 62 63 status-set maintenance "Starting services." || true 64 service jenkins-slave stop 2>/dev/null || true 65 service jenkins-slave start || true 66 status-set active "$SLAVE_NAME is accepting work" || true