Skip to content

Commit 510ea98

Browse files
committed
CI: Add support for Ubuntu 24.04 Docker and DEB builds
This commit introduces comprehensive support for Ubuntu 24.04 (Noble Numbat) across build environments and packaging metadata. Key changes and package updates for Ubuntu 24.04: - Compiler Upgrade: Migrated from GCC/G++ 11 to GCC/G++ 13 to align with Noble's default toolchain. - Python 3.12 Migration: Updated system Python to 3.12. Removed python3-distutils as it has been deprecated and removed from Ubuntu 24.04 repositories (PEP 632). - t64 Transition: Updated DEB runtime dependencies to include the 't64' suffix (e.g., libssl3t64, libapr1t64, libcurl4t64) to comply with Noble's mandatory 64-bit time_t ABI transition. - libcgroup Update: Switched from libcgroup1 to libcgroup2 to match the updated library names in Ubuntu 24.04. - PIP Compliance: Added --break-system-packages flag for PIP installations within the Dockerfile to satisfy PEP 668 requirements.
1 parent 8ecc326 commit 510ea98

19 files changed

Lines changed: 1323 additions & 4 deletions

File tree

.github/workflows/docker-cbdb-build-containers.yml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ on:
6161
- 'devops/deploy/docker/build/rocky8/**'
6262
- 'devops/deploy/docker/build/rocky9/**'
6363
- 'devops/deploy/docker/build/ubuntu22.04/**'
64+
- 'devops/deploy/docker/build/ubuntu24.04/**'
6465
pull_request:
6566
paths:
6667
- 'devops/deploy/docker/build/**'
@@ -77,10 +78,10 @@ jobs:
7778
timeout-minutes: 60
7879
runs-on: ubuntu-latest
7980

80-
# Matrix strategy to build for both Rocky Linux 8 and 9, Ubuntu 22.04
81+
# Matrix strategy to build for both Rocky Linux 8 and 9, Ubuntu 22.04 and 24.04
8182
strategy:
8283
matrix:
83-
platform: ['rocky8', 'rocky9', 'ubuntu22.04']
84+
platform: ['rocky8', 'rocky9', 'ubuntu22.04', 'ubuntu24.04']
8485

8586
steps:
8687
# Checkout repository code with full history
@@ -109,6 +110,8 @@ jobs:
109110
- 'devops/deploy/docker/build/rocky9/**'
110111
ubuntu22.04:
111112
- 'devops/deploy/docker/build/ubuntu22.04/**'
113+
ubuntu24.04:
114+
- 'devops/deploy/docker/build/ubuntu24.04/**'
112115
113116
# Set up QEMU for multi-architecture support
114117
# This allows building ARM64 images on AMD64 infrastructure and vice versa

.github/workflows/docker-cbdb-test-containers.yml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ on:
5050
- 'devops/deploy/docker/test/rocky8/**'
5151
- 'devops/deploy/docker/test/rocky9/**'
5252
- 'devops/deploy/docker/test/ubuntu22.04/**'
53+
- 'devops/deploy/docker/test/ubuntu24.04/**'
5354
pull_request:
5455
paths:
5556
- 'devops/deploy/docker/test/**'
@@ -66,8 +67,8 @@ jobs:
6667
runs-on: ubuntu-latest
6768
strategy:
6869
matrix:
69-
# Build for both Rocky Linux 8 and 9, Ubuntu 22.04
70-
platform: ['rocky8', 'rocky9', 'ubuntu22.04']
70+
# Build for Rocky Linux 8 and 9, Ubuntu 22.04 and 24.04
71+
platform: ['rocky8', 'rocky9', 'ubuntu22.04', 'ubuntu24.04']
7172

7273
steps:
7374
# Checkout repository code
@@ -93,6 +94,8 @@ jobs:
9394
- 'devops/deploy/docker/test/rocky9/**'
9495
ubuntu22.04:
9596
- 'devops/deploy/docker/test/ubuntu22.04/**'
97+
ubuntu24.04:
98+
- 'devops/deploy/docker/test/ubuntu24.04/**'
9699
97100
# Skip if no changes for current platform
98101
- name: Skip if not relevant
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
apache-cloudberry-db-incubating (2.0.0) noble; urgency=medium
2+
3+
* Initial release.
4+
5+
-- Cloudberry Team <dev@cloudberry.apache.org> Wed, 26 Mar 2025 11:10:44 +0000
6+
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
9
2+
Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
Source: apache-cloudberry-db-incubating
2+
Maintainer: Apache Cloudberry (Incubating) <dev@cloudberry.apache.org>
3+
Section: database
4+
Build-Depends: debhelper (>= 9),
5+
bison,
6+
ca-certificates-java,
7+
ca-certificates,
8+
cmake,
9+
curl,
10+
cgroup-tools,
11+
flex,
12+
gcc-13,
13+
g++-13,
14+
git,
15+
krb5-multidev,
16+
libapr1-dev,
17+
libbz2-dev,
18+
libcurl4-gnutls-dev,
19+
libevent-dev,
20+
libkrb5-dev,
21+
libldap-dev,
22+
libperl-dev,
23+
libreadline-dev,
24+
libssl-dev,
25+
libxml2-dev,
26+
libyaml-dev,
27+
libzstd-dev,
28+
libaprutil1-dev,
29+
libpam0g-dev,
30+
libpam0g,
31+
libcgroup2,
32+
libyaml-0-2,
33+
libldap2,
34+
libssl3t64,
35+
libxerces-c-dev,
36+
libxerces-c3.2t64,
37+
ninja-build,
38+
quilt,
39+
unzip,
40+
wget,
41+
zlib1g-dev,
42+
libuv1-dev
43+
44+
Package: apache-cloudberry-db-incubating
45+
Provides: apache-cloudberry-db
46+
Architecture: amd64
47+
Depends: curl,
48+
cgroup-tools,
49+
iputils-ping,
50+
iproute2,
51+
keyutils,
52+
krb5-multidev,
53+
less,
54+
libapr1t64,
55+
libbz2-1.0,
56+
libcurl4t64,
57+
libcurl3t64-gnutls,
58+
libevent-2.1-7t64,
59+
libreadline8t64,
60+
libxml2,
61+
libyaml-0-2,
62+
libldap2,
63+
libzstd1,
64+
libcgroup2,
65+
libssl3t64,
66+
libpam0g,
67+
libprotobuf32t64,
68+
libpsl5t64,
69+
libuv1t64,
70+
liburing2,
71+
libxerces-c3.2t64,
72+
locales,
73+
lsof,
74+
lz4,
75+
net-tools,
76+
openssh-client,
77+
openssh-server,
78+
openssl,
79+
python3,
80+
rsync,
81+
wget,
82+
xz-utils,
83+
zlib1g
84+
Description: Apache Cloudberry (incubating) is an advanced, open-source, massively
85+
parallel processing (MPP) data warehouse developed from PostgreSQL and
86+
Greenplum. It is designed for high-performance analytics on
87+
large-scale data sets, offering powerful analytical capabilities and
88+
enhanced security features.
89+
Key Features:
90+
- Massively parallel processing for optimized performance
91+
- Advanced analytics for complex data processing
92+
- Integration with ETL and BI tools
93+
- Compatibility with multiple data sources and formats
94+
- Enhanced security features
95+
Apache Cloudberry supports both batch processing and real-time data
96+
warehousing, making it a versatile solution for modern data
97+
environments.
98+
Apache Cloudberry (incubating) is an effort undergoing incubation at
99+
the Apache Software Foundation (ASF), sponsored by the Apache
100+
Incubator PMC.
101+
Incubation is required of all newly accepted projects until a further
102+
review indicates that the infrastructure, communications, and decision
103+
making process have stabilized in a manner consistent with other
104+
successful ASF projects.
105+
While incubation status is not necessarily a reflection of the
106+
completeness or stability of the code, it does indicate that the
107+
project has yet to be fully endorsed by the ASF.
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
debian/build/* /usr/cloudberry-db
2+
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
#!/bin/bash
2+
3+
set -e
4+
5+
GPADMIN=gpadmin
6+
GPHOME=/usr/cloudberry-db
7+
8+
if [ "$1" = configure ]; then
9+
10+
ln -sf ${GPHOME} /usr/local/cloudberry-db
11+
12+
fi
13+
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
#!/usr/bin/make -f
2+
3+
DH_VERBOSE = 1
4+
DPKG_EXPORT_BUILDFLAGS = 1
5+
6+
CBDB_BIN_PATH := /usr/local/cloudberry-db
7+
DEBIAN_DESTINATION := $(shell pwd)/debian/build
8+
9+
# assumes that CWD is root of cbdb source
10+
CBDB_PKG_VERSION := $(CBDB_PKG_VERSION)
11+
PACKAGE_CBDB := $(shell cat debian/control | egrep "^Package: " | cut -d " " -f 2)
12+
PATH := ${DEBIAN_DESTINATION}/bin:${PATH}
13+
14+
.PHONY: gpinstall
15+
16+
include /usr/share/dpkg/default.mk
17+
18+
%:
19+
dh $@ --parallel
20+
21+
gpinstall:
22+
make install
23+
24+
override_dh_auto_install: gpinstall
25+
# the staging directory for creating a debian is NOT the right GPHOME.
26+
# change GPHOME to point to the post-install target install directory.
27+
sed -i "s#GPHOME=.*#GPHOME=${CBDB_BIN_PATH}#g" ${DEBIAN_DESTINATION}/cloudberry-env.sh
28+
29+
override_dh_auto_build:
30+
echo "Skipping build"
31+
32+
override_dh_auto_clean:
33+
echo "Skipping clean"
34+
35+
override_dh_auto_configure:
36+
echo "Skipping configure"
37+
38+
override_dh_auto_test:
39+
echo "Skipping auto test"
40+
41+
override_dh_gencontrol:
42+
echo "using version ${CBDB_PKG_VERSION} for binary Cloudberry"
43+
dh_gencontrol -- -v${CBDB_PKG_VERSION} -p${PACKAGE_CBDB}
44+
45+
override_dh_shlibdeps:
46+
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/x86_64-linux-gnu/libfakeroot:${DEBIAN_DESTINATION}/lib dh_shlibdeps --dpkg-shlibdeps-params=--ignore-missing-info
47+
48+
clean_dev_local:
49+
rm -rf ${DEBIAN_DESTINATION}
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
3.0 (native)
2+
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
#abort-on-upstream-changes
2+
#unapply-patches
3+

0 commit comments

Comments
 (0)