Skip to content

Commit 2a980f2

Browse files
Add Debusine builder images
Create Debusine-oriented Debian builder images in qcom-build-utils and add a GHCR publishing workflow for them. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1 parent 0391637 commit 2a980f2

6 files changed

Lines changed: 128 additions & 0 deletions

File tree

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
name: Debusine Container Build And Upload
2+
description: |
3+
Builds and uploads to GHCR the Debian builder images used by the Debusine-based
4+
reusable workflows. Images are built natively on an arm64 runner and published
5+
on push, scheduled runs, and manual dispatches.
6+
7+
on:
8+
schedule:
9+
- cron: '0 0 * * 1'
10+
11+
pull_request:
12+
branches:
13+
- main
14+
- development
15+
paths:
16+
- '.github/workflows/qcom-debusine-container-build-and-upload.yml'
17+
- 'Dockerfiles/debusine-builder/**'
18+
19+
push:
20+
branches:
21+
- main
22+
- development
23+
paths:
24+
- '.github/workflows/qcom-debusine-container-build-and-upload.yml'
25+
- 'Dockerfiles/debusine-builder/**'
26+
27+
workflow_dispatch:
28+
29+
permissions:
30+
contents: read
31+
packages: write
32+
33+
env:
34+
QCOM_ORG_NAME: qualcomm-linux
35+
IMAGE_NAME: debusine-pkg-builder
36+
37+
jobs:
38+
build-debian-arm64:
39+
name: Build ${{ matrix.suite }} image
40+
runs-on: ubuntu-24.04-arm
41+
strategy:
42+
fail-fast: false
43+
matrix:
44+
suite:
45+
- trixie
46+
- sid
47+
48+
steps:
49+
- name: Checkout repository
50+
uses: actions/checkout@v5
51+
52+
- name: Build Debian image
53+
run: |
54+
docker build \
55+
-t ghcr.io/${{ env.QCOM_ORG_NAME }}/${{ env.IMAGE_NAME }}:${{ matrix.suite }} \
56+
-f Dockerfiles/debusine-builder/Dockerfile.${{ matrix.suite }} \
57+
Dockerfiles/debusine-builder
58+
59+
- name: Log in to GHCR
60+
if: ${{ github.event_name == 'schedule' || github.event_name == 'push' || github.event_name == 'workflow_dispatch' }}
61+
uses: docker/login-action@v3
62+
with:
63+
registry: ghcr.io
64+
username: ${{ github.actor }}
65+
password: ${{ secrets.GITHUB_TOKEN }}
66+
67+
- name: Upload Debian image
68+
if: ${{ github.event_name == 'schedule' || github.event_name == 'push' || github.event_name == 'workflow_dispatch' }}
69+
run: docker push ghcr.io/${{ env.QCOM_ORG_NAME }}/${{ env.IMAGE_NAME }}:${{ matrix.suite }}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
FROM debian:sid
2+
3+
ENV DEBIAN_FRONTEND=noninteractive
4+
5+
COPY base-packages.txt /tmp/base-packages.txt
6+
7+
RUN apt-get update && \
8+
apt-get install --no-install-recommends -y \
9+
$(tr '\n' ' ' < /tmp/base-packages.txt) \
10+
debusine-client \
11+
python3-debusine && \
12+
apt-get clean && \
13+
rm -rf /var/lib/apt/lists/* /tmp/base-packages.txt
14+
15+
WORKDIR /workspace
16+
17+
CMD ["bash"]
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
FROM debian:trixie
2+
3+
ENV DEBIAN_FRONTEND=noninteractive
4+
5+
COPY base-packages.txt /tmp/base-packages.txt
6+
COPY trixie-backports.sources /etc/apt/sources.list.d/trixie-backports.sources
7+
8+
RUN apt-get update && \
9+
apt-get install --no-install-recommends -y \
10+
$(tr '\n' ' ' < /tmp/base-packages.txt) \
11+
debusine-client/trixie-backports \
12+
python3-debusine/trixie-backports && \
13+
apt-get clean && \
14+
rm -rf /var/lib/apt/lists/* /tmp/base-packages.txt
15+
16+
WORKDIR /workspace
17+
18+
CMD ["bash"]
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
ca-certificates
2+
curl
3+
dctrl-tools
4+
devscripts
5+
dpkg-dev
6+
git
7+
git-buildpackage
8+
python3-tenacity
9+
python3-yaml
10+
yq
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
Types: deb
2+
URIs: http://deb.debian.org/debian
3+
Suites: trixie-backports
4+
Components: main
5+
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg

README.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,13 @@ qcom-build-utils/
4343
│ │ └── push_to_repo/ # Publish packages to staging APT repo
4444
│ └── workflows/ # Reusable workflow definitions
4545
│ ├── qcom-build-pkg-reusable-workflow.yml
46+
│ ├── qcom-debusine-container-build-and-upload.yml
4647
│ ├── qcom-promote-upstream-reusable-workflow.yml
4748
│ ├── qcom-upstream-pr-pkg-build-reusable-workflow.yml
4849
│ ├── qcom-release-reusable-workflow.yml
4950
│ └── qcom-preflight-checks.yml
51+
├── Dockerfiles/
52+
│ └── debusine-builder/ # GHCR builder images for the Debusine workflow
5053
├── scripts/ # Python & shell build utilities
5154
│ ├── deb_abi_checker.py # ABI comparison tool (libabigail)
5255
│ ├── ppa_interface.py # APT repository interface
@@ -77,6 +80,12 @@ Package repositories call these workflows from their own `.github/workflows/` di
7780
| **qcom-release-reusable-workflow** | Triggers a formal release — finalizes the changelog, builds packages, uploads to S3, and notifies downstream consumers. |
7881
| **qcom-preflight-checks** | Security and quality gates — runs repolinter, semgrep, license checks, and dependency review. |
7982

83+
## Builder Images
84+
85+
`qcom-build-utils` also owns the Debian container images used by the Debusine-based
86+
build path. The image sources live under `Dockerfiles/debusine-builder/`, and the
87+
`qcom-debusine-container-build-and-upload.yml` workflow publishes them to GHCR.
88+
8089
## Composite Actions
8190

8291
| Action | Description |

0 commit comments

Comments
 (0)