Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions .github/workflows/docker-cbdb-build-containers.yml
Original file line number Diff line number Diff line change
Expand Up @@ -76,8 +76,10 @@ concurrency:

jobs:
build-and-push:
# Set timeout to prevent hanging builds
timeout-minutes: 60
# Set timeout to prevent hanging builds. The arm64 half runs under
# QEMU, and the Rocky builds already took 35 to 60 minutes before
# Arrow joined them, so 60 left no room.
timeout-minutes: 90
runs-on: ubuntu-latest

# Matrix strategy to build for both Rocky Linux 8 and 9, Ubuntu 22.04 and 24.04
Expand Down
20 changes: 20 additions & 0 deletions devops/deploy/docker/build/rocky10/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -170,6 +170,26 @@ RUN dnf makecache && \
rm -f "${GO_VERSION}.linux-${GO_ARCH}.tar.gz" && \
echo 'export PATH=$PATH:/usr/local/go/bin' | tee -a /etc/profile.d/go.sh > /dev/null

# --------------------------------------------------------------------
# Install Apache Arrow and Parquet C++ for contrib/datalake_fdw
# --------------------------------------------------------------------
# From the Arrow project's own repository, pinned: datalake_fdw shares
# its ABI with Arrow, so the version moves only with a change here.
# EPEL and CRB carry what the packages depend on (re2, thrift, ...).
# The repository is left disabled afterwards, as EPEL is.
# The release package needs nothing from a repository, so it goes in
# with them all disabled: loading their metadata under QEMU took eight
# minutes of an arm64 build.
# --------------------------------------------------------------------
ARG ARROW_VERSION=26.0.0
RUN dnf install -y --disablerepo='*' \
https://packages.apache.org/artifactory/arrow/almalinux/10/apache-arrow-release-latest.rpm && \
dnf install -y --enablerepo=epel --enablerepo=crb \
arrow-devel-${ARROW_VERSION}-1.el10 \
parquet-devel-${ARROW_VERSION}-1.el10 && \
dnf config-manager --disable 'apache-arrow-*' && \
dnf clean all

# --------------------------------------------------------------------
# Copy Configuration Files and Setup the Environment
# --------------------------------------------------------------------
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -125,3 +125,13 @@ def test_locale_generated(host):
locale = host.run("locale -a | grep en_US.utf8")
assert locale.exit_status == 0
assert "en_US.utf8" in locale.stdout


def test_arrow_for_datalake_fdw(host):
"""
Test if Arrow and Parquet C++ are installed at the pinned version.
"""
for module in ("arrow", "parquet"):
version = host.run(f"pkg-config --modversion {module}")
assert version.exit_status == 0
assert version.stdout.strip() == "26.0.0"
22 changes: 22 additions & 0 deletions devops/deploy/docker/build/rocky8/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -171,6 +171,28 @@ RUN dnf makecache && \
rm -f "${GO_VERSION}.linux-${GO_ARCH}.tar.gz" && \
echo 'export PATH=$PATH:/usr/local/go/bin' | tee -a /etc/profile.d/go.sh > /dev/null

# --------------------------------------------------------------------
# Install Apache Arrow and Parquet C++ for contrib/datalake_fdw
# --------------------------------------------------------------------
# From the Arrow project's own repository, pinned: datalake_fdw shares
# its ABI with Arrow, so the version moves only with a change here.
# 22.0.0 is the last release whose headers are C++17: from 23 on they
# need C++20, which this image's gcc 8 does not have.
# EPEL and PowerTools carry what the packages depend on (re2, thrift, ...).
# The repository is left disabled afterwards, as EPEL is.
# The release package needs nothing from a repository, so it goes in
# with them all disabled: loading their metadata under QEMU took eight
# minutes of an arm64 build.
# --------------------------------------------------------------------
ARG ARROW_VERSION=22.0.0
RUN dnf install -y --disablerepo='*' \
https://packages.apache.org/artifactory/arrow/almalinux/8/apache-arrow-release-latest.rpm && \
dnf install -y --enablerepo=epel --enablerepo=powertools \
arrow-devel-${ARROW_VERSION}-1.el8 \
parquet-devel-${ARROW_VERSION}-1.el8 && \
dnf config-manager --disable 'apache-arrow-*' && \
dnf clean all

# --------------------------------------------------------------------
# Copy Configuration Files and Setup the Environment
# --------------------------------------------------------------------
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -124,3 +124,13 @@ def test_locale_generated(host):
locale = host.run("locale -a | grep en_US.utf8")
assert locale.exit_status == 0
assert "en_US.utf8" in locale.stdout


def test_arrow_for_datalake_fdw(host):
"""
Test if Arrow and Parquet C++ are installed at the pinned version.
"""
for module in ("arrow", "parquet"):
version = host.run(f"pkg-config --modversion {module}")
assert version.exit_status == 0
assert version.stdout.strip() == "22.0.0"
20 changes: 20 additions & 0 deletions devops/deploy/docker/build/rocky9/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -172,6 +172,26 @@ RUN dnf makecache && \
rm -f "${GO_VERSION}.linux-${GO_ARCH}.tar.gz" && \
echo 'export PATH=$PATH:/usr/local/go/bin' | tee -a /etc/profile.d/go.sh > /dev/null

# --------------------------------------------------------------------
# Install Apache Arrow and Parquet C++ for contrib/datalake_fdw
# --------------------------------------------------------------------
# From the Arrow project's own repository, pinned: datalake_fdw shares
# its ABI with Arrow, so the version moves only with a change here.
# EPEL and CRB carry what the packages depend on (re2, thrift, ...).
# The repository is left disabled afterwards, as EPEL is.
# The release package needs nothing from a repository, so it goes in
# with them all disabled: loading their metadata under QEMU took eight
# minutes of an arm64 build.
# --------------------------------------------------------------------
ARG ARROW_VERSION=26.0.0
RUN dnf install -y --disablerepo='*' \
https://packages.apache.org/artifactory/arrow/almalinux/9/apache-arrow-release-latest.rpm && \
dnf install -y --enablerepo=epel --enablerepo=crb \
arrow-devel-${ARROW_VERSION}-1.el9 \
parquet-devel-${ARROW_VERSION}-1.el9 && \
dnf config-manager --disable 'apache-arrow-*' && \
dnf clean all

# --------------------------------------------------------------------
# Copy Configuration Files and Setup the Environment
# --------------------------------------------------------------------
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -127,3 +127,13 @@ def test_locale_generated(host):
locale = host.run("locale -a | grep en_US.utf8")
assert locale.exit_status == 0
assert "en_US.utf8" in locale.stdout


def test_arrow_for_datalake_fdw(host):
"""
Test if Arrow and Parquet C++ are installed at the pinned version.
"""
for module in ("arrow", "parquet"):
version = host.run(f"pkg-config --modversion {module}")
assert version.exit_status == 0
assert version.stdout.strip() == "26.0.0"
Loading