All checks were successful
continuous-integration/drone/push Build is passing
145 lines
6.1 KiB
YAML
145 lines
6.1 KiB
YAML
kind: pipeline
|
|
type: docker
|
|
name: build
|
|
|
|
steps:
|
|
- name: semver
|
|
image: cedrichopf/drone-semver
|
|
settings:
|
|
file: CHANGELOG.md
|
|
autoincrement: true
|
|
|
|
- name: set-release-version
|
|
image: alpine:3.19
|
|
depends_on:
|
|
- semver
|
|
commands:
|
|
- |
|
|
set -eu
|
|
release_tag="$(sed -n 's/^##[[:space:]]*v\\([0-9][0-9]*\\.[0-9][0-9]*\\.[0-9][0-9]*\\).*/v\\1/p' CHANGELOG.md | head -n1)"
|
|
if [ -z "$release_tag" ]; then
|
|
echo "Failed to read release version from CHANGELOG.md"
|
|
exit 1
|
|
fi
|
|
echo "$release_tag" > .release_version
|
|
echo "Release version: $release_tag"
|
|
- name: build-deb-amd64
|
|
image: cache.coadcorp.com/library/buildpack-deps:jammy
|
|
depends_on:
|
|
- set-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:
|
|
- set-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:
|
|
- set-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 -eu
|
|
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
|