This document provides an overview of the composite GitHub Actions used by the reusable workflows in qcom-build-utils.
Composite actions are reusable units of workflow steps defined in .github/actions/. They encapsulate common functionality that can be shared across multiple workflows.
The qcom-build-utils repository provides four main composite actions:
- build_package - Builds Debian packages using git-buildpackage and sbuild
- abi_checker - Checks ABI compatibility against previous package versions
- push_to_repo - Uploads built packages to the staging APT repository
- build_container - Builds and tests Docker container images for package compilation
| Action | Purpose | Key Features |
|---|---|---|
| build_package | Build Debian packages | Cross-compilation, native builds, lintian checks |
| abi_checker | ABI compatibility validation | Symbol comparison, version checking |
| push_to_repo | Repository publishing | Metadata updates, version deduplication |
| build_container | Container image building | Multi-arch support, automated testing |
All actions are referenced relative to the qcom-build-utils checkout:
uses: ./qcom-build-utils/.github/actions/{action_name}Actions use consistent error handling:
set +e # Allow commands to fail
command_that_might_fail
RET=$?
set -e # Re-enable exit on error
if (( RET != 0 )); then
echo "❌ Error occurred"
exit 1
fiActions use emoji for clear status indication:
- ✅ Success
- ❌ Fatal error
⚠️ Warning- ℹ️ Information
Actions that use containers require:
container:
options: --privilegedThis is needed for:
- sbuild chroot operations
- Mount operations
- Namespace manipulation
graph TD
A[build_package] -->|Creates build-area/| B[abi_checker]
A -->|Creates build-area/| C[push_to_repo]
D[build_container] -->|Provides images for| A
In a workflow:
build_container(if rebuilding containers)build_package(builds the package)abi_checker(checks ABI compatibility)push_to_repo(uploads to repository)
- Always run ABI checker: Prevents accidental API/ABI breakage
- Test before pushing: Use
push-to-repo: falsein pre-merge - Rebuild containers weekly: Keep build environment up-to-date
- Check build logs: Review failures in detail using build log output
- Version semantics: Follow semantic versioning based on ABI changes
Set repository secret:
ACTIONS_STEP_DEBUG = true
For build_package failures:
# Look in build-area/ for .build file
tail -n 500 build-area/*.buildRun container locally:
docker run -it --rm \
ghcr.io/qualcomm-linux/pkg-builder:arm64-noble \
/bin/bashUse act tool to test GitHub Actions locally:
act -j job-name- Workflow Architecture - Overall system architecture
- Reusable Workflows - Workflows that use these actions
- Package Repository Integration - How to use workflows in your package repository