kind: pipeline type: docker name: build steps: - name: compute-release-version image: alpine:3.19 environment: GITEA_TOKEN: from_secret: GITEA_TOKEN GITEA_BASE_URL: https://git.coadcorp.com commands: - apk add --no-cache curl jq - | set -euo pipefail repo_owner="${DRONE_REPO_OWNER}" repo_name="${DRONE_REPO_NAME}" releases_url="${GITEA_BASE_URL}/api/v1/repos/${repo_owner}/${repo_name}/releases?limit=1" latest_tag="$(curl -sf -H "Authorization: token ${GITEA_TOKEN}" "${releases_url}" | jq -r '.[0].tag_name // empty')" if [ -z "${latest_tag}" ] || [ "${latest_tag}" = "null" ]; then latest_tag="v0.0.0" fi version="${latest_tag#v}" IFS='.' read -r major minor patch <<< "${version}" if ! [[ "${major:-}" =~ ^[0-9]+$ ]]; then major=0; fi if ! [[ "${minor:-}" =~ ^[0-9]+$ ]]; then minor=0; fi if ! [[ "${patch:-}" =~ ^[0-9]+$ ]]; then patch=0; fi patch=$((patch + 1)) next_tag="v${major}.${minor}.${patch}" echo "${next_tag}" > .release_version echo "Next release: ${next_tag}" - name: build-deb-amd64 image: cache.coadcorp.com/library/buildpack-deps:jammy depends_on: - compute-release-version environment: DEBIAN_FRONTEND: noninteractive commands: - apt-get update - apt-get install -y --no-install-recommends build-essential qt5-qmake qtbase5-dev qtbase5-dev-tools libexif-dev qt5-image-formats-plugins libmosquitto-dev dpkg-dev fakeroot ca-certificates - ARCH=amd64 BUILD_DIR=build-amd64 bash sbin/build_deb.sh "$(cat .release_version)" - ls -la dist - name: build-deb-armhf image: cache.coadcorp.com/library/buildpack-deps:bullseye depends_on: - compute-release-version environment: DEBIAN_FRONTEND: noninteractive ARM_CFLAGS: -march=armv6 -mfpu=vfp -mfloat-abi=hard -marm commands: - dpkg --add-architecture armhf - | cat > /etc/apt/sources.list <<'EOF' deb [arch=amd64] http://deb.debian.org/debian bullseye main contrib non-free deb [arch=amd64] http://deb.debian.org/debian bullseye-updates main contrib non-free deb [arch=amd64] http://security.debian.org/debian-security bullseye-security main contrib non-free deb [arch=armhf] http://deb.debian.org/debian bullseye main contrib non-free deb [arch=armhf] http://deb.debian.org/debian bullseye-updates main contrib non-free deb [arch=armhf] http://security.debian.org/debian-security bullseye-security main contrib non-free EOF - apt-get update - apt-get install -y --no-install-recommends build-essential qt5-qmake qtbase5-dev qtbase5-dev-tools libexif-dev qt5-image-formats-plugins libmosquitto-dev dpkg-dev fakeroot ca-certificates gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf qtbase5-dev:armhf libqt5core5a:armhf libqt5gui5:armhf libqt5widgets5:armhf libqt5network5:armhf libexif-dev:armhf libmosquitto-dev:armhf qt5-image-formats-plugins:armhf - ARCH=armhf BUILD_DIR=build-armhf QMAKESPEC=$PWD/mkspecs/linux-armhf-g++ QMAKE_QTCONF=$PWD/mkspecs/qt-armhf.conf QMAKE_CFLAGS="$ARM_CFLAGS" QMAKE_CXXFLAGS="$ARM_CFLAGS" bash sbin/build_deb.sh "$(cat .release_version)" - ls -la dist - name: build-deb-arm64 image: cache.coadcorp.com/library/buildpack-deps:bullseye depends_on: - compute-release-version environment: DEBIAN_FRONTEND: noninteractive ARM64_CFLAGS: -march=armv8-a commands: - dpkg --add-architecture arm64 - | cat > /etc/apt/sources.list <<'EOF' deb [arch=amd64] http://deb.debian.org/debian bullseye main contrib non-free deb [arch=amd64] http://deb.debian.org/debian bullseye-updates main contrib non-free deb [arch=amd64] http://security.debian.org/debian-security bullseye-security main contrib non-free deb [arch=arm64] http://deb.debian.org/debian bullseye main contrib non-free deb [arch=arm64] http://deb.debian.org/debian bullseye-updates main contrib non-free deb [arch=arm64] http://security.debian.org/debian-security bullseye-security main contrib non-free EOF - apt-get update - apt-get install -y --no-install-recommends build-essential qt5-qmake qtbase5-dev qtbase5-dev-tools libexif-dev qt5-image-formats-plugins libmosquitto-dev dpkg-dev fakeroot ca-certificates gcc-aarch64-linux-gnu g++-aarch64-linux-gnu qtbase5-dev:arm64 libqt5core5a:arm64 libqt5gui5:arm64 libqt5widgets5:arm64 libqt5network5:arm64 libexif-dev:arm64 libmosquitto-dev:arm64 qt5-image-formats-plugins:arm64 - ARCH=arm64 BUILD_DIR=build-arm64 QMAKESPEC=$PWD/mkspecs/linux-arm64-g++ QMAKE_QTCONF=$PWD/mkspecs/qt-arm64.conf QMAKE_CFLAGS="$ARM64_CFLAGS" QMAKE_CXXFLAGS="$ARM64_CFLAGS" bash sbin/build_deb.sh "$(cat .release_version)" - ls -la dist - name: build-deps-image image: cache.coadcorp.com/plugins/docker settings: registry: registry.coadcorp.com repo: slide/build-deps dockerfile: Dockerfile.builddeps username: from_secret: REGISTRY_USER password: from_secret: REGISTRY_PASS tags: - latest - ${DRONE_COMMIT_SHA} when: event: - promote target: - build-deps - name: gitea-release image: alpine:3.19 depends_on: - build-deb-amd64 - build-deb-armhf - build-deb-arm64 environment: GITEA_TOKEN: from_secret: GITEA_TOKEN GITEA_BASE_URL: https://git.coadcorp.com commands: - apk add --no-cache curl jq - | set -euo pipefail release_tag="$(cat .release_version)" repo_owner="${DRONE_REPO_OWNER}" repo_name="${DRONE_REPO_NAME}" api_base="${GITEA_BASE_URL}/api/v1/repos/${repo_owner}/${repo_name}" payload="$(jq -n \ --arg tag "${release_tag}" \ --arg name "${release_tag}" \ --arg body "Automated release for ${release_tag}" \ --arg target "${DRONE_COMMIT_SHA}" \ '{tag_name:$tag, name:$name, body:$body, draft:false, prerelease:false, target_commitish:$target}')" response="$(curl -sS -w '\n%{http_code}' -H "Authorization: token ${GITEA_TOKEN}" -H "Content-Type: application/json" -d "${payload}" "${api_base}/releases")" status="$(echo "${response}" | tail -n1)" body="$(echo "${response}" | sed '$d')" if [ "${status}" != "201" ] && [ "${status}" != "200" ]; then body="$(curl -sS -H "Authorization: token ${GITEA_TOKEN}" "${api_base}/releases/tags/${release_tag}")" fi release_id="$(echo "${body}" | jq -r '.id // empty')" if [ -z "${release_id}" ] || [ "${release_id}" = "null" ]; then echo "Failed to create or fetch release for ${release_tag}" echo "${body}" exit 1 fi for file in dist/*.deb; do name="$(basename "${file}")" curl -sS -H "Authorization: token ${GITEA_TOKEN}" \ -F "attachment=@${file}" \ "${api_base}/releases/${release_id}/assets?name=${name}" >/dev/null done