Skip to content

CI: Add source-release-based convenience packaging workflow#1720

Open
tuhaihe wants to merge 3 commits into
apache:mainfrom
tuhaihe:package_on_tag
Open

CI: Add source-release-based convenience packaging workflow#1720
tuhaihe wants to merge 3 commits into
apache:mainfrom
tuhaihe:package_on_tag

Conversation

@tuhaihe
Copy link
Copy Markdown
Member

@tuhaihe tuhaihe commented May 6, 2026

Add a manual GitHub Actions workflow to build Apache Cloudberry convenience DEB/RPM packages from an ASF-approved source release.

The workflow:

  • requires explicit source tarball, .asc, and .sha512 URLs from downloads.apache.org
  • verifies the source release with KEYS, GPG signature, and SHA-512 before building
  • runs the full flow inside Cloudberry Docker build images
  • builds DEB/RPM artifacts for the current supported OS/arch matrix
  • generates .sha512 files for produced convenience binaries

Also update the workflow README with usage and scope notes.

Fixes #ISSUE_Number

What does this PR do?

Type of Change

  • Bug fix (non-breaking change)
  • New feature (non-breaking change)
  • Breaking change (fix or feature with breaking changes)
  • Documentation update

Breaking Changes

Test Plan

  • Unit tests added/updated
  • Integration tests added/updated
  • Passed make installcheck
  • Passed make -C src/test installcheck-cbdb-parallel

Impact

Performance:

User-facing changes:

Dependencies:

Checklist

Additional Context

CI Skip Instructions


Add a GitHub Actions workflow to build Apache Cloudberry convenience
DEB/RPM packages from verified source releases.

Workflow features:
- Two modes: official source release validation and git ref test
- Multi-platform support: Rocky 8/9 and Ubuntu 22.04/24.04
- Multi-arch support: x86_64 and arm64
- Concurrency control to prevent duplicate builds
- Timeout settings (30 minutes per job)
- Matrix reuse via fromJSON() for DRY configuration
- GPG signature and SHA-512 verification for official releases
- Package installation smoke test with gpdemo
- Organized input fields with mode-specific descriptions

Also includes Ubuntu 24.04 packaging updates:
- Change Architecture from amd64 to any for multi-arch support
- Add logic to copy pre-built binaries from CBDB_BIN_PATH
- Include Apache compliance files (LICENSE, NOTICE, DISCLAIMER)
- Fix LD_LIBRARY_PATH for multi-arch compatibility

Also update the workflow README with usage and scope notes.
@tuhaihe
Copy link
Copy Markdown
Member Author

tuhaihe commented May 8, 2026

@tuhaihe tuhaihe marked this pull request as ready for review May 8, 2026 07:23
@tuhaihe tuhaihe requested a review from leborchuk May 14, 2026 08:05
@tuhaihe
Copy link
Copy Markdown
Member Author

tuhaihe commented May 14, 2026

Hi @leborchuk, PTAL. Thanks! Welcome to help add the Copilot as a reviewer.

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a new manual GitHub Actions workflow to build “convenience” DEB/RPM packages from an ASF-approved Cloudberry source release (including signature/checksum verification), and updates Debian packaging metadata to better support multi-arch builds.

Changes:

  • Added package-convenience-binaries.yml workflow to verify an official source release (KEYS + .asc + .sha512), build packages in Cloudberry build containers across an OS/arch matrix, and run an install + gpdemo smoke test.
  • Updated Ubuntu 24.04 Debian packaging to stage binaries properly for packaging and to use multiarch paths in dh_shlibdeps.
  • Updated workflow documentation to describe the new manual packaging workflow and its inputs/modes.

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 4 comments.

File Description
devops/build/packaging/deb/ubuntu24.04/rules Stages binaries/compliance files for DEB builds and fixes multiarch fakeroot library path usage.
devops/build/packaging/deb/ubuntu24.04/control Allows DEB builds on any supported architecture (Architecture: any).
.github/workflows/README.md Documents the new manual convenience packaging workflow and its usage.
.github/workflows/package-convenience-binaries.yml New end-to-end workflow for verified source-release packaging + artifact checksums + install smoke tests.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

type: string

permissions:
contents: read
name: ${{ matrix.platform.target_os }}-${{ matrix.platform.target_arch }}-${{ matrix.platform.package_type }}
needs: verify-source-release
runs-on: ${{ matrix.platform.runner }}
timeout-minutes: 30
name: ${{ matrix.platform.label }}-install-test
needs: [build-packages]
runs-on: ${{ matrix.platform.runner }}
timeout-minutes: 30
Comment on lines +581 to +586
# Find package file using ls
if [[ "${PACKAGE_TYPE}" == "deb" ]]; then
package_file=$(ls "${artifact_dir}"/*.deb 2>/dev/null | head -n 1)
else
package_file=$(ls "${artifact_dir}"/*.rpm 2>/dev/null | head -n 1)
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants