From 4cd308deaaa34dc4cf8a42a9246e56f0b972bf75 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Fri, 18 May 2018 15:35:25 +0200 Subject: [PATCH] use lockfile to prevent running gitlab-ci commands twice Workaround for this bug: https://gitlab.com/gitlab-org/gitlab-runner/issues/1380#note_48552305 --- gitlab-ci-git-buildpackage | 46 +++++++++++++++++++++----------------- 1 file changed, 26 insertions(+), 20 deletions(-) diff --git a/gitlab-ci-git-buildpackage b/gitlab-ci-git-buildpackage index c30fe06..6fe32cf 100755 --- a/gitlab-ci-git-buildpackage +++ b/gitlab-ci-git-buildpackage @@ -5,28 +5,34 @@ if [ "$CI_COMMIT_REF_NAME" == "upstream" ] || [ "$CI_COMMIT_REF_NAME" == "prist exit 0 fi -set -e -set -x +# https://gitlab.com/gitlab-org/gitlab-runner/issues/1380#note_48552305 +lockfile=/.lock +if [[ ! -f $lockfile ]] ; then + set -e + set -x -apt-get -qy update -apt-get -qy dist-upgrade + apt-get -qy update + apt-get -qy dist-upgrade -cd $CI_PROJECT_DIR -export BUILD_DEPENDS=`sed 's/\s*|[^,]*,/,/g' debian/control | perl -ne 'next if /^#/; $p=(s/^Build-Depends:\s*/ / or (/^ / and $p)); s/,|\n|\([^)]+\)//mg; print if $p'` -apt-get -qy install --no-install-recommends \ - build-essential dpkg-dev fakeroot git-buildpackage pristine-tar $BUILD_DEPENDS -apt-get -qy autoremove --purge -dpkg-checkbuilddeps -echo "ensure pristine-tar branch exists" -git branch -a -git remote -v -git branch --track pristine-tar origin/pristine-tar || true -echo "make master branch current for gbp" -git checkout -B "$CI_COMMIT_REF_NAME" "$CI_COMMIT_SHA" -if [ -z "$CI_COMMIT_TAG" ]; then - gbp buildpackage -uc -us --git-debian-branch="$CI_COMMIT_REF_NAME" -else - gbp buildpackage -uc -us + cd $CI_PROJECT_DIR + export BUILD_DEPENDS=`sed 's/\s*|[^,]*,/,/g' debian/control | perl -ne 'next if /^#/; $p=(s/^Build-Depends:\s*/ / or (/^ / and $p)); s/,|\n|\([^)]+\)//mg; print if $p'` + apt-get -qy install --no-install-recommends \ + build-essential dpkg-dev fakeroot git-buildpackage pristine-tar $BUILD_DEPENDS + apt-get -qy autoremove --purge + dpkg-checkbuilddeps + echo "ensure pristine-tar branch exists" + git branch -a + git remote -v + git branch --track pristine-tar origin/pristine-tar || true + echo "make master branch current for gbp" + git checkout -B "$CI_COMMIT_REF_NAME" "$CI_COMMIT_SHA" + if [ -z "$CI_COMMIT_TAG" ]; then + gbp buildpackage -uc -us --git-debian-branch="$CI_COMMIT_REF_NAME" + else + gbp buildpackage -uc -us + fi fi +[[ $CI ]] && touch $lockfile + exec "$@"