Add debian publishing
Some checks failed
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline failed

Use brenard/debian-python-deb docker image to speedup pipeline
This commit is contained in:
Benjamin Renard 2022-04-30 22:59:19 +02:00
parent 03668e7003
commit bf37e6223e
2 changed files with 57 additions and 19 deletions

View file

@ -5,11 +5,11 @@ clone:
pipeline: pipeline:
test: test:
image: debian image: brenard/debian-python-deb
commands: commands:
- DEBIAN_FRONTEND=noninteractive apt-get -qq update < /dev/null > /dev/null - DEBIAN_FRONTEND=noninteractive apt-get -qq update < /dev/null > /dev/null
- DEBIAN_FRONTEND=noninteractive apt-get -y -qq upgrade < /dev/null > /dev/null - DEBIAN_FRONTEND=noninteractive apt-get -y -qq upgrade < /dev/null > /dev/null
- DEBIAN_FRONTEND=noninteractive apt-get -qq -y install --no-install-recommends python3-all python3-dev python3-pip python3-venv build-essential pkg-config libsystemd-dev libldap2-dev libsasl2-dev libpq-dev libmariadb-dev wget unzip < /dev/null > /dev/null - DEBIAN_FRONTEND=noninteractive apt-get -qq -y install --no-install-recommends pkg-config libsystemd-dev libldap2-dev libsasl2-dev libpq-dev libmariadb-dev wget unzip < /dev/null > /dev/null
- wget --no-verbose -O /opt/instantclient-basic-linux.x64-21.4.0.0.0dbru.zip https://download.oracle.com/otn_software/linux/instantclient/214000/instantclient-basic-linux.x64-21.4.0.0.0dbru.zip - wget --no-verbose -O /opt/instantclient-basic-linux.x64-21.4.0.0.0dbru.zip https://download.oracle.com/otn_software/linux/instantclient/214000/instantclient-basic-linux.x64-21.4.0.0.0dbru.zip
- unzip -qq -d /opt /opt/instantclient-basic-linux.x64-21.4.0.0.0dbru.zip - unzip -qq -d /opt /opt/instantclient-basic-linux.x64-21.4.0.0.0dbru.zip
- echo /opt/instantclient_* > /etc/ld.so.conf.d/oracle-instantclient.conf - echo /opt/instantclient_* > /etc/ld.so.conf.d/oracle-instantclient.conf
@ -17,25 +17,26 @@ pipeline:
- ./tests.sh --quiet - ./tests.sh --quiet
build: build:
image: debian image: brenard/debian-python-deb
when: when:
event: tag event: tag
commands: commands:
- DEBIAN_FRONTEND=noninteractive apt-get -qq update < /dev/null > /dev/null - echo "$GPG_KEY"|base64 -d|gpg --import
- DEBIAN_FRONTEND=noninteractive apt-get -y -qq upgrade < /dev/null > /dev/null
- DEBIAN_FRONTEND=noninteractive apt-get -qq -y install --no-install-recommends git sed python3-all python3-dev python3-pip python3-venv dpkg-dev build-essential debhelper dh-python bash-completion lsb-release < /dev/null > /dev/null
- ./build.sh --quiet - ./build.sh --quiet
- rm -fr deb_dist/mylib-* - rm -fr deb_dist/mylib-*
secrets: [ maintainer_name, maintainer_email, gpg_key, debian_codename ]
publish-dryrun: publish-dryrun:
image: debian group: publish
image: alpine
when: when:
event: tag event: tag
commands: commands:
- ls dist/* - ls dist/*
- ls deb_dist/* - ls deb_dist/*.deb
publish: publish-gitea:
group: publish
image: plugins/gitea-release image: plugins/gitea-release
when: when:
event: tag event: tag
@ -49,3 +50,23 @@ pipeline:
checksum: checksum:
- md5 - md5
- sha512 - sha512
publish-apt:
group: publish
image: brenard/curl
when:
event: tag
commands:
- curl -u $APT_CREDS -X POST -F file=@$( ls dist/python3-mylib_*_all.deb ) $APT_API_URL/files/python3-mylib
- curl -u $APT_CREDS -X POST -F file=@$( ls dist/mylib_*.dsc ) $APT_API_URL/files/python3-mylib
- curl -u $APT_CREDS -X POST -F file=@$( ls dist/mylib_*.orig.tar.gz ) $APT_API_URL/files/python3-mylib
- curl -u $APT_CREDS -X POST -F file=@$( ls dist/mylib_*.debian.tar.xz ) $APT_API_URL/files/python3-mylib
- curl -u $APT_CREDS -X POST -F file=@$( ls dist/mylib_*.buildinfo ) $APT_API_URL/files/python3-mylib
- curl -u $APT_CREDS -X POST -F file=@$( ls dist/mylib_*.changes ) $APT_API_URL/files/python3-mylib
- curl -u $APT_CREDS -X POST $APT_API_URL/repos/$APT_REPO_NAME/include/python3-mylib
- APT_SNAP_NAME=$(date +%s)_$APT_REPO_NAME
- >
curl -u $APT_CREDS -X POST -H 'Content-Type: application/json' --data "{\"Name\":\"$APT_SNAP_NAME\"}" $APT_API_URL/repos/$APT_REPO_NAME/snapshots
- >
curl -u $APT_CREDS -X PUT -H 'Content-Type: application/json' --data "{\"Snapshots\": [{\"Component\": \"main\", \"Name\": \"$APT_SNAP_NAME\"}]}" $APT_API_URL/publish/:./$APT_REPO_NAME
secrets: [ apt_api_url, apt_creds, apt_repo_name ]

View file

@ -28,7 +28,7 @@ else
fi fi
echo "Install dependencies in virtualenv using pip..." echo "Install dependencies in virtualenv using pip..."
$VENV/bin/python3 -m pip install stdeb GitPython wheel $QUIET_ARG $VENV/bin/python3 -m pip install stdeb wheel $QUIET_ARG
echo "Build wheel package..." echo "Build wheel package..."
$VENV/bin/python3 setup.py bdist_wheel $VENV/bin/python3 setup.py bdist_wheel
@ -41,7 +41,9 @@ then
TMP_GITDCH=$(mktemp -d) TMP_GITDCH=$(mktemp -d)
echo "Temporary install gitdch in $TMP_GITDCH..." echo "Temporary install gitdch in $TMP_GITDCH..."
git clone $QUIET_ARG https://gitea.zionetrix.net/bn8/gitdch.git $TMP_GITDCH/gitdch git clone $QUIET_ARG https://gitea.zionetrix.net/bn8/gitdch.git $TMP_GITDCH/gitdch
GITDCH=$TMP_GITDCH/gitdch/gitdch GITDCH="$VENV/bin/python3 $TMP_GITDCH/gitdch/gitdch"
echo "Install gitdch dependencies in $VENV..."
$VENV/bin/python3 -m pip install GitPython $QUIET_ARG
else else
TMP_GITDCH="" TMP_GITDCH=""
echo "Use existing installation of gitdch ($GITDCH)" echo "Use existing installation of gitdch ($GITDCH)"
@ -61,20 +63,35 @@ find deb_dist/ -maxdepth 1 -type f ! -name '*.orig.tar.gz' -delete
echo "Enter in debian package directory..." echo "Enter in debian package directory..."
cd deb_dist/mylib-$VERSION cd deb_dist/mylib-$VERSION
if [ -z "$DEBIAN_CODENAME" ]
then
echo "Retreive debian codename using lsb_release..." echo "Retreive debian codename using lsb_release..."
DEBIAN_CODENAME=$( lsb_release -c -s ) DEBIAN_CODENAME=$( lsb_release -c -s )
[ $( lsb_release -r -s ) -ge 9 ] && DEBIAN_CODENAME="${DEBIAN_CODENAME}-ee" [ $( lsb_release -r -s ) -ge 9 ] && DEBIAN_CODENAME="${DEBIAN_CODENAME}-ee"
else
echo "Use debian codename from environment ($DEBIAN_CODENAME)"
fi
echo "Generate debian changelog using gitdch..." echo "Generate debian changelog using gitdch..."
GITDCH_LOG_ARG='--verbose' GITDCH_ARGS='--verbose'
[ -n "$QUIET_ARG" ] && GITDCH_LOG_ARG='--warning' [ -n "$QUIET_ARG" ] && GITDCH_ARGS='--warning'
$VENV/bin/python3 $GITDCH \ if [ -n "$MAINTAINER_NAME" ]
then
echo "Use maintainer name from environment ($MAINTAINER_NAME)"
GITDCH_ARGS="$GITDCH_ARGS --maintainer-name '$MAINTAINER_NAME'"
fi
if [ -n "$MAINTAINER_EMAIL" ]
then
echo "Use maintainer email from environment ($MAINTAINER_EMAIL)"
GITDCH_ARGS="$GITDCH_ARGS --maintainer-email '$MAINTAINER_EMAIL'"
fi
$GITDCH \
--package-name mylib \ --package-name mylib \
--version "${VERSION}" \ --version "${VERSION}" \
--code-name $DEBIAN_CODENAME \ --code-name $DEBIAN_CODENAME \
--output debian/changelog \ --output debian/changelog \
--path ../../ \ --path ../../ \
$GITDCH_LOG_ARG $GITDCH_ARGS
echo "Add custom package name for dependencies..." echo "Add custom package name for dependencies..."
cat << EOF > debian/py3dist-overrides cat << EOF > debian/py3dist-overrides
@ -86,4 +103,4 @@ EOF
[ -n "$TMP_GITDCH" ] && echo "Clean temporary gitdch installation..." && rm -fr $TMP_GITDCH [ -n "$TMP_GITDCH" ] && echo "Clean temporary gitdch installation..." && rm -fr $TMP_GITDCH
echo "Build debian package..." echo "Build debian package..."
dpkg-buildpackage --no-sign dpkg-buildpackage