commit 3cdb4d4b12346f25bad7ff1d7ae2c8b2b895a825
parent 50e73dede4268cf1d121f591308cf2628a109286
Author: Florian Dold <dold@taler.net>
Date: Tue, 8 Sep 2026 21:15:37 +0200
CI packaging: build all Debian web UI packages
Add the merchant, auditor, exchange AML, exchange KYC and challenger
web UI jobs. Share their packaging script with the bank web UI job
and require all eight Debian packages before uploading a revision.
Diffstat:
13 files changed, 110 insertions(+), 31 deletions(-)
diff --git a/contrib/ci/build-webui-deb-package.sh b/contrib/ci/build-webui-deb-package.sh
@@ -0,0 +1,35 @@
+#!/bin/bash
+# This file is in the public domain.
+# Build one of the repository's web UI Debian packages.
+
+set -exuo pipefail
+
+package_name="${1:?package name is required}"
+
+unset LD_LIBRARY_PATH
+
+./bootstrap
+
+# Keep the package's Debian directory available at the repository root.
+rm -f ./debian
+ln -s "packages/${package_name}/debian" ./debian
+
+cd "packages/${package_name}"
+
+apt-get update
+apt-get upgrade -y
+mk-build-deps --install --tool='apt-get -o Debug::pkgProblemResolver=yes --no-install-recommends --yes' debian/control
+
+# Use the same repository version as the wallet CLI package. Keep the
+# assignment separate from export so version generation errors stop the job.
+VERSION="$(../../contrib/ci/jobs/3-wallet-cli-deb-package/version.sh)"
+export VERSION
+echo "Building package version ${VERSION}"
+
+../../contrib/ci/write-debian-changelog.sh \
+ "${package_name}" "${VERSION}" debian/changelog
+./configure --prefix=/usr
+dpkg-buildpackage -rfakeroot -b -uc -us
+
+mkdir -p "/artifacts/wallet-core/${CI_COMMIT_REF}"
+mv ../"${package_name}"_*.deb "/artifacts/wallet-core/${CI_COMMIT_REF}/"
diff --git a/contrib/ci/jobs/4-challenger-webui-deb-package/config.ini b/contrib/ci/jobs/4-challenger-webui-deb-package/config.ini
@@ -0,0 +1,6 @@
+[build]
+HALT_ON_FAILURE = True
+WARN_ON_FAILURE = False
+CONTAINER_BUILD = True
+CONTAINER_NAME = localhost/wallet-core
+CONTAINER_ARCH = amd64
diff --git a/contrib/ci/jobs/4-challenger-webui-deb-package/job.sh b/contrib/ci/jobs/4-challenger-webui-deb-package/job.sh
@@ -0,0 +1,4 @@
+#!/bin/bash
+# This file is in the public domain.
+
+exec ./contrib/ci/build-webui-deb-package.sh challenger-webui
diff --git a/contrib/ci/jobs/4-libeufin-bank-webui-deb-package/job.sh b/contrib/ci/jobs/4-libeufin-bank-webui-deb-package/job.sh
@@ -1,32 +1,4 @@
#!/bin/bash
# This file is in the public domain.
-# Helper script to build the latest DEB packages in the container.
-set -exuo pipefail
-
-unset LD_LIBRARY_PATH
-
-./bootstrap
-
-# Keep the package's Debian directory available at the repository root.
-rm -f ./debian
-ln -s packages/libeufin-bank-webui/debian .
-
-cd packages/libeufin-bank-webui
-
-apt-get update
-apt-get upgrade -y
-mk-build-deps --install --tool='apt-get -o Debug::pkgProblemResolver=yes --no-install-recommends --yes' debian/control
-
-# Use the same repository version as the wallet CLI package.
-VERSION="$(../../contrib/ci/jobs/3-wallet-cli-deb-package/version.sh)"
-export VERSION
-echo "Building package version ${VERSION}"
-
-../../contrib/ci/write-debian-changelog.sh \
- libeufin-bank-webui "${VERSION}" debian/changelog
-./configure --prefix=/usr
-dpkg-buildpackage -rfakeroot -b -uc -us
-
-mkdir -p "/artifacts/wallet-core/${CI_COMMIT_REF}"
-mv ../libeufin-bank-webui_*.deb "/artifacts/wallet-core/${CI_COMMIT_REF}/"
+exec ./contrib/ci/build-webui-deb-package.sh libeufin-bank-webui
diff --git a/contrib/ci/jobs/4-taler-auditor-webui-deb-package/config.ini b/contrib/ci/jobs/4-taler-auditor-webui-deb-package/config.ini
@@ -0,0 +1,6 @@
+[build]
+HALT_ON_FAILURE = True
+WARN_ON_FAILURE = False
+CONTAINER_BUILD = True
+CONTAINER_NAME = localhost/wallet-core
+CONTAINER_ARCH = amd64
diff --git a/contrib/ci/jobs/4-taler-auditor-webui-deb-package/job.sh b/contrib/ci/jobs/4-taler-auditor-webui-deb-package/job.sh
@@ -0,0 +1,4 @@
+#!/bin/bash
+# This file is in the public domain.
+
+exec ./contrib/ci/build-webui-deb-package.sh taler-auditor-webui
diff --git a/contrib/ci/jobs/4-taler-exchange-aml-webui-deb-package/config.ini b/contrib/ci/jobs/4-taler-exchange-aml-webui-deb-package/config.ini
@@ -0,0 +1,6 @@
+[build]
+HALT_ON_FAILURE = True
+WARN_ON_FAILURE = False
+CONTAINER_BUILD = True
+CONTAINER_NAME = localhost/wallet-core
+CONTAINER_ARCH = amd64
diff --git a/contrib/ci/jobs/4-taler-exchange-aml-webui-deb-package/job.sh b/contrib/ci/jobs/4-taler-exchange-aml-webui-deb-package/job.sh
@@ -0,0 +1,4 @@
+#!/bin/bash
+# This file is in the public domain.
+
+exec ./contrib/ci/build-webui-deb-package.sh taler-exchange-aml-webui
diff --git a/contrib/ci/jobs/4-taler-exchange-kyc-webui-deb-package/config.ini b/contrib/ci/jobs/4-taler-exchange-kyc-webui-deb-package/config.ini
@@ -0,0 +1,6 @@
+[build]
+HALT_ON_FAILURE = True
+WARN_ON_FAILURE = False
+CONTAINER_BUILD = True
+CONTAINER_NAME = localhost/wallet-core
+CONTAINER_ARCH = amd64
diff --git a/contrib/ci/jobs/4-taler-exchange-kyc-webui-deb-package/job.sh b/contrib/ci/jobs/4-taler-exchange-kyc-webui-deb-package/job.sh
@@ -0,0 +1,4 @@
+#!/bin/bash
+# This file is in the public domain.
+
+exec ./contrib/ci/build-webui-deb-package.sh taler-exchange-kyc-webui
diff --git a/contrib/ci/jobs/4-taler-merchant-webui-deb-package/config.ini b/contrib/ci/jobs/4-taler-merchant-webui-deb-package/config.ini
@@ -0,0 +1,6 @@
+[build]
+HALT_ON_FAILURE = True
+WARN_ON_FAILURE = False
+CONTAINER_BUILD = True
+CONTAINER_NAME = localhost/wallet-core
+CONTAINER_ARCH = amd64
diff --git a/contrib/ci/jobs/4-taler-merchant-webui-deb-package/job.sh b/contrib/ci/jobs/4-taler-merchant-webui-deb-package/job.sh
@@ -0,0 +1,4 @@
+#!/bin/bash
+# This file is in the public domain.
+
+exec ./contrib/ci/build-webui-deb-package.sh taler-merchant-webui
diff --git a/contrib/ci/jobs/5-deploy-packages/job.sh b/contrib/ci/jobs/5-deploy-packages/job.sh
@@ -1,7 +1,29 @@
#!/bin/bash
set -exuo pipefail
-ARTIFACT_PATH="/artifacts/wallet-core/${CI_COMMIT_REF}/*.deb"
+artifact_dir="/artifacts/wallet-core/${CI_COMMIT_REF}"
+
+# Do not publish an incomplete set of packages for this revision.
+shopt -s nullglob
+packages=(
+ taler-wallet-cli
+ taler-harness
+ libeufin-bank-webui
+ taler-merchant-webui
+ taler-auditor-webui
+ taler-exchange-aml-webui
+ taler-exchange-kyc-webui
+ challenger-webui
+)
+artifacts=()
+for package in "${packages[@]}"; do
+ package_artifacts=("${artifact_dir}/${package}_"*.deb)
+ if [ "${#package_artifacts[@]}" -eq 0 ]; then
+ echo "Missing Debian package for ${CI_COMMIT_REF}: ${package}" >&2
+ exit 1
+ fi
+ artifacts+=("${package_artifacts[@]}")
+done
RSYNC_HOST="taler.host.internal"
RSYNC_PORT=424242
@@ -11,4 +33,4 @@ RSYNC_DEST="rsync://${RSYNC_HOST}/${RSYNC_PATH}"
rsync -vP \
--port ${RSYNC_PORT} \
- ${ARTIFACT_PATH} ${RSYNC_DEST}
+ "${artifacts[@]}" "${RSYNC_DEST}"