diff --git a/ci/entrypoint.sh b/ci/entrypoint.sh index 563e83c..c3d8e56 100644 --- a/ci/entrypoint.sh +++ b/ci/entrypoint.sh @@ -1,135 +1,145 @@ #!/bin/bash if [ ! -d "/srv/stick.git" ]; then git clone https://git.kolab.org/diffusion/QA/stick.git /srv/stick.git else pushd /srv/stick.git git remote set-url origin https://git.kolab.org/diffusion/QA/stick.git git fetch origin git reset --hard origin/master git clean -d -f -x popd fi # Create 3 as an alias for 1, so the _shell function # can output data without the caller getting the input. exec 3>&1 # If PS1 is set, we're interactive if [ ! -z "${PS1}" ]; then # Set a sensible prompt PS1='[\u@${IMAGE} \W]\$ ' export GIT_PS1_SHOWDIRTYSTATE=1 export GIT_PS1_SHOWUNTRACKEDFILES=1 export GIT_PS1_SHOWUPSTREAM="auto verbose" if [ ! -f "/etc/bash_completion" ]; then if [ -f "/etc/bash_completion.d/git" ]; then . /etc/bash_completion.d/git PS1='[\u@${IMAGE} \W$(__git_ps1 " (%s)")]\$ ' fi else PS1='[\u@${IMAGE} \W$(__git_ps1 " (%s)")]\$ ' fi export PS1 PROMPT_COMMAND="echo -ne '\033]0;${IMAGE} (in ${HOSTNAME})\007'" if [ -f "/usr/share/git-core/contrib/completion/git-prompt.sh" ]; then source /usr/share/git-core/contrib/completion/git-prompt.sh fi fi function _report { echo $(printf '%0.1s' "="{1..72}) cat ${TMPDIR:-/tmp}/report.log rm -rf ${TMPDIR:-/tmp}/report.log echo $(printf '%0.1s' "="{1..72}) } function _report_msg { printf "%*s" $(( ( ${BASH_SUBSHELL} - 1 ) * 4 )) " " >> ${TMPDIR:-/tmp}/report.log echo "$@" >> ${TMPDIR:-/tmp}/report.log } export -f _report_msg function _shell { echo "Running $@ ..." >&3 $@ >&3 2>&3 ; retval=$? if [ ${retval} -eq 0 ]; then _report_msg "Running '$@' OK (at $(git rev-parse HEAD))" echo "Running $@ OK (at $(git rev-parse HEAD))" >&3 else _report_msg "Running '$@' FAILED (at $(git rev-parse HEAD))" echo "Running $@ FAILED (at $(git rev-parse HEAD))" >&3 fi echo ${retval} } export -f _shell if [ ! -d "/srv/${PACKAGE}.git" ]; then git clone ${RO_URI} /srv/${PACKAGE}.git + pushd /srv/${PACKAGE}.git - git branch -la | sed -e 's/* //g' -e 's/ remotes\/origin\///g' -e '/^HEAD/d' | grep -E "^(master|${PACKAGE})" | xargs -n 1 git checkout + + for branch in $(git branch -la | sed -e 's/^* //g' -e 's/ //g' -e '/remotes\/origin\/HEAD/d' -e 's|remotes/origin/||g'); do + git checkout $branch + done + popd else pushd /srv/${PACKAGE}.git + git remote set-url origin ${RO_URI} git fetch origin git reset --hard origin/master git clean -d -f -x - git branch -la | sed -e 's/* //g' -e 's/ remotes\/origin\///g' -e '/^HEAD/d' | grep -E "^(master|${PACKAGE})" | sort --version-sort -u | xargs -n 1 git checkout + + for branch in $(git branch -la | sed -e 's/^* //g' -e 's/ //g' -e '/remotes\/origin\/HEAD/d' -e 's|remotes/origin/||g'); do + git checkout $branch + done + popd fi yum clean metadata yum -y update rpmdev-setuptree pushd /srv/${PACKAGE}.git if [ ! -z "${COMMIT}" ]; then git checkout ${COMMIT} fi # TODO: A differential has a base commit. retval=$(_shell yum-builddep -y --disablerepo=openSUSE_Tools ${PACKAGE}) if [ ${retval} -ne 0 ]; then _report exit 1 fi if [ -x "../stick.git/drydocker/${PACKAGE}/test_build.sh" ]; then retval=$(_shell ../stick.git/drydocker/${PACKAGE}/test_build.sh) if [ ${retval} -ne 0 ]; then _report exit 1 fi fi if [ -x "../stick.git/drydocker/${PACKAGE}/test_unit.sh" ]; then retval=$(_shell ../stick.git/drydocker/${PACKAGE}/test_unit.sh) if [ ${retval} -ne 0 ]; then _report exit 1 fi fi if [ -x "../stick.git/drydocker/${PACKAGE}/test_obs.sh" ]; then retval=$(_shell ../stick.git/drydocker/${PACKAGE}/test_obs.sh) if [ ${retval} -ne 0 ]; then _report exit 1 fi fi popd _report