split out functionality from entrypoint into individual scripts

This commit is contained in:
Hans-Christoph Steiner 2018-06-20 21:34:56 +02:00
parent 213709b138
commit 2caa367232
4 changed files with 68 additions and 58 deletions

View File

@ -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"]

10
gitlab-ci-entrypoint Executable file
View File

@ -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 "$@"

View File

@ -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 "$@"

24
gitlab-ci-git-buildpackage-all Executable file
View File

@ -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