From 2caa3672322a8b63f631e88f596be14ca95db2a9 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Wed, 20 Jun 2018 21:34:56 +0200 Subject: [PATCH] split out functionality from entrypoint into individual scripts --- Dockerfile | 6 ++- gitlab-ci-entrypoint | 10 ++++ gitlab-ci-git-buildpackage | 86 ++++++++++++---------------------- gitlab-ci-git-buildpackage-all | 24 ++++++++++ 4 files changed, 68 insertions(+), 58 deletions(-) create mode 100755 gitlab-ci-entrypoint create mode 100755 gitlab-ci-git-buildpackage-all diff --git a/Dockerfile b/Dockerfile index 8067d54..51e489d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -25,12 +25,14 @@ RUN mkdir -p /usr/share/man/man1 \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* -COPY gitlab-ci-git-buildpackage / COPY gitlab-ci-common /usr/share/ COPY gitlab-ci-aptly /usr/bin/ COPY gitlab-ci-autopkgtest /usr/bin/ +COPY gitlab-ci-entrypoint /usr/bin/ +COPY gitlab-ci-git-buildpackage /usr/bin/ +COPY gitlab-ci-git-buildpackage-all /usr/bin/ COPY gitlab-ci-lintian /usr/bin/ COPY gitlab-ci-enable-sid /usr/bin/ COPY gitlab-ci-enable-experimental /usr/bin/ -ENTRYPOINT ["/gitlab-ci-git-buildpackage"] +ENTRYPOINT ["/usr/bin/gitlab-ci-entrypoint"] diff --git a/gitlab-ci-entrypoint b/gitlab-ci-entrypoint new file mode 100755 index 0000000..e5d2276 --- /dev/null +++ b/gitlab-ci-entrypoint @@ -0,0 +1,10 @@ +#!/bin/bash -e + +! test -z "$CI_COMMIT_REF_NAME" + +if [ "$CI_COMMIT_REF_NAME" == "upstream" ] || [ "$CI_COMMIT_REF_NAME" == "pristine-tar" ]; then + echo No builds run on the $CI_COMMIT_REF_NAME branch, exiting + exit 0 +fi + +exec "$@" diff --git a/gitlab-ci-git-buildpackage b/gitlab-ci-git-buildpackage index 3c8c076..68b2dfc 100755 --- a/gitlab-ci-git-buildpackage +++ b/gitlab-ci-git-buildpackage @@ -1,63 +1,37 @@ -#!/bin/bash - -if [ "$CI_COMMIT_REF_NAME" == "upstream" ] || [ "$CI_COMMIT_REF_NAME" == "pristine-tar" ]; then - echo No builds run on the $CI_COMMIT_REF_NAME branch, exiting - exit 0 -fi +#!/bin/bash -e . /usr/share/gitlab-ci-common -# https://gitlab.com/gitlab-org/gitlab-runner/issues/1380#note_48552305 -lockfile=/.lock -if [[ ! -f $lockfile ]] ; then - set -e - set -x +# these are all required +! test -z "$CI_PROJECT_DIR" +! test -z "$CI_COMMIT_SHA" +! test -z "$CI_COMMIT_TAG" +! test -z "$CI_COMMIT_REF_NAME" - gitlab-ci-enable-sid - gitlab-ci-enable-experimental +set -x - if [ ! -z "$EXTRA_APT_SOURCE" ]; then - printf "\n$EXTRA_APT_SOURCE\n" >> /etc/apt/sources.list - fi +$apt_get update - if [ ! -z "$DEBIAN_RELEASE" ]; then - sed -i "s, testing , $DEBIAN_RELEASE ," /etc/apt/sources.list - fi - - $apt_get update - $apt_get dist-upgrade - - cd $CI_PROJECT_DIR - if dpkg --compare-versions `dpkg -s apt |sed -n 's,^Version: \(.*\),\1,p'` ge 1.1; then - $apt_get build-dep $CI_PROJECT_DIR - else - # this is running on an older version, like jessie-backports - 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 install --no-install-recommends \ - build-essential fakeroot git-buildpackage pristine-tar $BUILD_DEPENDS - fi - $apt_get autoremove --purge - dpkg-checkbuilddeps - echo "ensure pristine-tar branch exists and is current" - git clean -fdx - git reset --hard - git fetch --all - git checkout -B pristine-tar origin/pristine-tar - echo "make $CI_COMMIT_REF_NAME 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 - - gitlab-ci-lintian - - if [ -e $CI_PROJECT_DIR/debian/tests/control ]; then - gitlab-ci-autopkgtest - fi +cd $CI_PROJECT_DIR +if dpkg --compare-versions `dpkg -s apt |sed -n 's,^Version: \(.*\),\1,p'` ge 1.1; then + $apt_get build-dep $CI_PROJECT_DIR +else + # this is running on an older version, like jessie-backports + 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 install --no-install-recommends \ + build-essential fakeroot git-buildpackage pristine-tar $BUILD_DEPENDS +fi +$apt_get autoremove --purge +dpkg-checkbuilddeps +echo "ensure pristine-tar branch exists and is current" +git clean -fdx +git reset --hard +git fetch --all +git checkout -B pristine-tar origin/pristine-tar +echo "make $CI_COMMIT_REF_NAME 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 - -[[ $CI ]] && touch $lockfile - -exec "$@" diff --git a/gitlab-ci-git-buildpackage-all b/gitlab-ci-git-buildpackage-all new file mode 100755 index 0000000..7198997 --- /dev/null +++ b/gitlab-ci-git-buildpackage-all @@ -0,0 +1,24 @@ +#!/bin/bash -e + +. /usr/share/gitlab-ci-common + +# these are all required +! test -z "$CI_PROJECT_DIR" +! test -z "$CI_COMMIT_SHA" +! test -z "$CI_COMMIT_TAG" +! test -z "$CI_COMMIT_REF_NAME" + +set -x + +gitlab-ci-enable-sid +gitlab-ci-enable-experimental + +$apt_get update +$apt_get dist-upgrade + +gitlab-ci-git-buildpackage +gitlab-ci-lintian + +if [ -e $CI_PROJECT_DIR/debian/tests/control ]; then + gitlab-ci-autopkgtest +fi