| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175 |
- kind: pipeline
- name: clone-prepare-build-sign-release
- # https://github.com/drone/drone
-
- platform:
- os: linux
- arch: amd64
-
- clone:
- disable: false
- depth: 50
-
- steps:
- - name: prepare
- image: plugins/docker
- # http://plugins.drone.io/drone-plugins/drone-docker/
- # https://github.com/drone-plugins/drone-docker
- when:
- event: [ tag ] # [ push, tag ]
- settings:
- dry_run: false
- registry: reg.unino.de
- insecure: false
- #auth: authtoken for registry
- username: { from_secret: reg-user }
- password: { from_secret: reg-pass }
- repo: reg.unino.de/develop/debian-${DRONE_REPO_NAMESPACE}-${DRONE_REPO_NAME}
- #mirror: registry-1.docker.io
- bip: 172.17.0.1/16 # set bridge if non-existent
- context: /drone/src # defaults to root of git repo
- #custom_dns: 127.0.0.11 # defaults to 8.8.8.8 and 8.8.4.4
- storage_driver: overlay2 # aufs, overlay or vfs
- #debug: true
- #launch_debug: true
- target: builder # Dockerfile build target e.g. builder, debug, production
- dockerfile: Dockerfile
- auto_tag: false
- auto_tag_suffix: linux-amd64
- force_tag: true
- tags: [ latest, builder ]
- build_args: # custom args for docker build, e.g. additional BUILD_DEPS etc.
- - DEB_RELEASE=stretch
- - BUILD_DEPS=libhidapi-dev libssl-dev
- - BUILD_ARCH=armhf # amd64 arm64 armel armhf i386 mips mips64el mipsel powerpc ppc64el s390x
-
- - name: build
- image: reg.unino.de/develop/debian-${DRONE_REPO_NAMESPACE}-${DRONE_REPO_NAME}:latest
- # https://readme.drone.io/user-guide/pipeline/
- # https://docs.drone.io/reference/environ/
- when:
- event: [ push, tag ]
- depends_on: [ clone, prepare ]
- environment:
- MAKEFLAGS: -j2
- # https://wiki.debian.org/CrossCompiling#Building_with_dpkg-buildpackage
- # https://www.gnu.org/software/make/manual/html_node/Implicit-Variables.html
- # https://www.gnu.org/software/make/manual/html_node/Catalogue-of-Rules.html#Catalogue-of-Rules
- # BINARIES for PREFIX: addr2line ar as c++filt cpp cpp-6 dwp elfedit g++ g++-6 gcc gcc-6 gcc-ar gcc-ar-6 gcc-nm gcc-nm-6 gcc-ranlib gcc-ranlib-6 gcov gcov-6 gcov-dump gcov-dump-6 gcov-tool gcov-tool-6 gprof ld ld.bfd ld.gold nm objcopy objdump ranlib readelf size strings strip
- BUILD_ARCH: amd64 armhf # amd64 arm64 armel armhf i386 mips mips64el mipsel powerpc ppc64el s390x
- commands:
- - NAME="${DRONE_REPO_NAME}" ;
- VERSION="$(git describe --always)" ;
- if test -d "debian" ; then
- VERSION=$(dpkg-parsechangelog -SVersion | sed 's/-.*//') ;
- fi ;
- DESTDIR="dist" ;
- RELEASE_DIR="release" ;
- ARCHIVE_NAME="$${NAME}_$${VERSION}" ;
- ARCHIVE_ROOT="$${NAME}-$${VERSION}" ;
- SRC_DIR="$(pwd)" ;
-
- - mkdir -p "$${RELEASE_DIR}" &&
- tar --exclude='./.*' --exclude='debian' --exclude="$${RELEASE_DIR}"
- --transform "s/\./$${ARCHIVE_ROOT}/"
- -cJf "$${SRC_DIR}/$${RELEASE_DIR}/$${ARCHIVE_NAME}.orig.tar.xz" .
-
- - for ARCH in $${BUILD_ARCH} ; do set -e ;
- echo " ░▒▓█ BUILDING for architecture \"$${ARCH}\" █▓▒░ " ;
- BUILD_DIR="$${SRC_DIR}/build/$${ARCH}/$${ARCHIVE_ROOT}" ;
- case "$${ARCH}" in
- amd64) PREFIX="x86_64-linux-gnu-" ;;
- arm64) PREFIX="aarch64-linux-gnu-" ;;
- armel) PREFIX="arm-linux-gnueabi-" ;;
- armhf) PREFIX="arm-linux-gnueabihf-" ;;
- i386) PREFIX="i686-linux-gnu-" ;;
- mips) PREFIX="mips-linux-gnu-" ;;
- mips64el) PREFIX="mips64el-linux-gnuabi64-" ;;
- mipsel) PREFIX="mipsel-linux-gnu-" ;;
- powerpc) PREFIX="powerpc-linux-gnu-" ;;
- ppc64el) PREFIX="powerpc64le-linux-gnu-" ;;
- s390x) PREFIX="s390x-linux-gnu-" ;;
- *) PREFIX="" ;;
- esac ;
- if test "$${ARCH}" = "$(dpkg --print-architecture)" ; then
- PREFIX="" ;
- else
- export CONFIG_SITE="/etc/dpkg-cross/cross-config.$${ARCH}" ;
- fi ;
- export CC="$${PREFIX}gcc" ;
- export CXX="$${PREFIX}g++" ;
- export LD="$${PREFIX}ld" ;
- export STRIP="$${PREFIX}strip" ;
- export MAKEFLAGS="$${MAKEFLAGS}" ;
- mkdir -p "$${BUILD_DIR}" ;
- cd "$${BUILD_DIR}" ;
- tar -xf "$${SRC_DIR}/$${RELEASE_DIR}/$${ARCHIVE_NAME}.orig.tar.xz"
- -C "$${BUILD_DIR}" --strip 1 ;
- cp -p "$${SRC_DIR}/$${RELEASE_DIR}/$${ARCHIVE_NAME}.orig.tar.xz"
- "$${BUILD_DIR}/../" ;
- if test -d "$${SRC_DIR}/debian" ; then
- cp -rp "$${SRC_DIR}/debian"
- "$${BUILD_DIR}/" ;
- export DEBIAN_FRONTEND="noninteractive" ;
- export DEB_BUILD_OPTIONS="nocheck" ;
- apt-get -qy -o Dpkg::Use-Pty=0 build-dep -a $${ARCH} . ;
- dpkg-buildpackage -us -uc -a "$${ARCH}" &&
- cp ../*.tar.xz ../*.deb ../*.dsc "$${SRC_DIR}/$${RELEASE_DIR}/" &&
- ls -la .. ;
- make clean ;
- else
- make &&
- make install ;
- tar --exclude='./.*'
- --transform "s/\./$${ARCHIVE_ROOT}/"
- -C "$${BUILD_DIR}/$${DESTDIR}"
- -cJf "$${SRC_DIR}/$${RELEASE_DIR}/$${ARCHIVE_NAME}.$${ARCH}.tar.xz" . &&
- ls -la "$${SRC_DIR}/$${RELEASE_DIR}/$${ARCHIVE_NAME}.$${ARCH}.tar.xz" ;
- make clean ;
- fi ;
- cd "$${SRC_DIR}" ;
- done
- - ls -la "$${SRC_DIR}/$${RELEASE_DIR}" &&
- find "$${SRC_DIR}/$${RELEASE_DIR}" -type f -exec md5sum '{}' \;
- - exit 0 ; ░▒▓█ BUILD END █▓▒░
-
-
- - name: sign
- image: plugins/gpgsign
- # http://plugins.drone.io/drone-plugins/drone-gpgsign/
- # https://github.com/drone-plugins/drone-gpgsign
- when:
- event: [ push, tag ]
- depends_on: [ build ]
- settings:
- key: { from_secret: gpg-key }
- passphrase: { from_secret: gpg-pass }
- detach_sign: true
- clear_sign: false
- files:
- - release/*
- excludes:
- - release/*.asc
-
-
- # http://plugins.drone.io/drone-plugins/drone-gitea-release/
- # https://github.com/drone-plugins/drone-gitea-release
- - name: release
- image: plugins/gitea-release
- # http://plugins.drone.io/drone-plugins/drone-gitea-release/
- # https://github.com/drone-plugins/drone-gitea-release
- when:
- event: [ tag ]
- depends_on: [ sign ]
- settings:
- title: Release ${DRONE_REPO_NAME}-${DRONE_TAG} # file or string
- note: RELEASE.md # file or string
- draft: false
- prerelease: false
- base_url: https://git.unino.de
- insecure: false
- api_key: { from_secret: gitea-release } # create gitea-release access token in /user/settings/applications
- checksum: [ md5 ] # [ md5, sha1, sha256, sha512, adler32, crc32 ]
- file_exists: overwrite # overwrite, skip, fail
- files: # wildcard * matching files with prefix supported
- - release/*
|