X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/7559642efc91415ff3d13a8076867cf73de662b2..e9ab67bb8788241d6ebbfbe74b5af36f4bd63dd8:/tools/salt-install/installer.sh diff --git a/tools/salt-install/installer.sh b/tools/salt-install/installer.sh index 104ce3a602..c86e9b02c3 100755 --- a/tools/salt-install/installer.sh +++ b/tools/salt-install/installer.sh @@ -60,6 +60,13 @@ checktools() { fi } +cleanup() { + local NODE=$1 + local SSH=`ssh_cmd "$NODE"` + # Delete the old repository + $SSH $DEPLOY_USER@$NODE rm -rf ${GITTARGET}.git ${GITTARGET} +} + sync() { local NODE=$1 local BRANCH=$2 @@ -68,33 +75,26 @@ sync() { # each node, pushing our branch, and updating the checkout. if [[ "$NODE" != localhost ]] ; then - SSH=`ssh_cmd "$NODE"` - GIT="eval `git_cmd $NODE`" - if ! $SSH $DEPLOY_USER@$NODE test -d ${GITTARGET}.git ; then - - # Initialize the git repository (1st time case). We're - # actually going to make two repositories here because git - # will complain if you try to push to a repository with a - # checkout. So we're going to create a "bare" repository - # and then clone a regular repository (with a checkout) - # from that. - - $SSH $DEPLOY_USER@$NODE git init --bare --shared=0600 ${GITTARGET}.git - if ! $GIT remote add $NODE $DEPLOY_USER@$NODE:${GITTARGET}.git ; then - $GIT remote set-url $NODE $DEPLOY_USER@$NODE:${GITTARGET}.git - fi - $GIT push $NODE $BRANCH - $SSH $DEPLOY_USER@$NODE "umask 0077 && git clone ${GITTARGET}.git ${GITTARGET}" - fi + SSH=`ssh_cmd "$NODE"` + GIT="eval `git_cmd $NODE`" - # The update case. - # - # Push to the bare repository on the remote node, then in the - # remote node repository with the checkout, pull the branch - # from the bare repository. + cleanup $NODE - $GIT push $NODE $BRANCH - $SSH $DEPLOY_USER@$NODE "git -C ${GITTARGET} checkout ${BRANCH} && git -C ${GITTARGET} pull" + # Update the git remote for the remote repository. + if ! $GIT remote add $NODE $DEPLOY_USER@$NODE:${GITTARGET}.git ; then + $GIT remote set-url $NODE $DEPLOY_USER@$NODE:${GITTARGET}.git + fi + + # Initialize the git repository. We're + # actually going to make two repositories here because git + # will complain if you try to push to a repository with a + # checkout. So we're going to create a "bare" repository + # and then clone a regular repository (with a checkout) + # from that. + + $SSH $DEPLOY_USER@$NODE git init --bare --shared=0600 ${GITTARGET}.git + $GIT push $NODE $BRANCH + $SSH $DEPLOY_USER@$NODE "umask 0077 && git clone -s ${GITTARGET}.git ${GITTARGET} && git -C ${GITTARGET} checkout ${BRANCH}" fi } @@ -112,7 +112,7 @@ deploynode() { fi logfile=deploy-${NODE}-$(date -Iseconds).log - SSH=`ssh_cmd "$NODE"` + SSH=`ssh_cmd "$NODE"` if [[ "$NODE" = localhost ]] ; then SUDO='' @@ -120,8 +120,9 @@ deploynode() { SUDO=sudo fi $SUDO ./provision.sh --config ${CONFIG_FILE} ${ROLES} 2>&1 | tee $logfile - else - $SSH $DEPLOY_USER@$NODE "cd ${GITTARGET} && sudo ./provision.sh --config ${CONFIG_FILE} ${ROLES}" 2>&1 | tee $logfile + else + $SSH $DEPLOY_USER@$NODE "cd ${GITTARGET} && git log -n1 HEAD && sudo ./provision.sh --config ${CONFIG_FILE} ${ROLES}" 2>&1 | tee $logfile + cleanup $NODE fi }