Skip to content

Commit

Permalink
create qt6 docker images (#14)
Browse files Browse the repository at this point in the history
  • Loading branch information
Paulchen-Panther authored Oct 20, 2023
1 parent ca24a63 commit c7277f3
Show file tree
Hide file tree
Showing 4 changed files with 108 additions and 36 deletions.
64 changes: 49 additions & 15 deletions .github/workflows/package.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
name: Package Repository
run-name: ${{ github.event_name == 'schedule' && '⏰ Scheduled build' || github.event.head_commit.message }}
run-name: |
${{ github.event_name == 'schedule' && '⏰ Scheduled build' || '' }}
${{ github.event_name == 'push' && '🌱 Push Build -' || '' }}
${{ github.event_name == 'push' && github.event.head_commit.message || '' }}
on:
schedule:
Expand All @@ -18,7 +21,7 @@ jobs:
#############################

ubuntu_debian:
name: ${{ matrix.os.description }}
name: 🐧 ${{ matrix.os.description }} Qt ${{ matrix.qt_version }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
Expand All @@ -33,6 +36,7 @@ jobs:
{ distribution: debian, codename: bookworm, description: Debian 12.x (Bookworm) },
{ distribution: debian, codename: trixie, description: Debian 13.x (Trixie) }
]
qt_version: [ '5', '6' ]
include:
# declare the following target_platform for all matrix jobs
- target_platform: linux/amd64,linux/arm64,linux/arm/v7
Expand All @@ -43,6 +47,12 @@ jobs:
target_platform: linux/amd64,linux/arm64,linux/arm/v5,linux/arm/v7
- os: { distribution: debian, codename: trixie }
target_platform: linux/amd64,linux/arm64,linux/arm/v5,linux/arm/v7
exclude:
# qt6 is not available on ubuntu focal and debian buster
- os: { distribution: ubuntu, codename: focal }
qt_version: '6'
- os: { distribution: debian, codename: buster }
qt_version: '6'

steps:
- name: 👀 Checkout
Expand Down Expand Up @@ -71,11 +81,13 @@ jobs:
uses: docker/metadata-action@v5
with:
images: ghcr.io/${{ env.REPOSITORY }}/${{ matrix.os.distribution }}
tags: ${{ matrix.os.codename }}
tags: |
type=raw,value=${{ matrix.os.codename }},enable=${{ matrix.qt_version == '5' }}
type=raw,value=${{ matrix.os.codename }}-qt6,enable=${{ matrix.qt_version == '6' }}
labels: |
maintainer=Hyperion Project <[email protected]>
org.opencontainers.image.vendor=Hyperion Project
org.opencontainers.image.title=${{ matrix.os.description }}
org.opencontainers.image.title=${{ matrix.os.description }} - QT ${{ matrix.qt_version }}
org.opencontainers.image.description=Compilation environment to build Hyperion for ${{ matrix.os.distribution }} ${{ matrix.os.codename }}
org.opencontainers.image.url=${{ github.server_url }}
org.opencontainers.image.source=${{ github.server_url }}/hyperion.docker-ci
Expand All @@ -95,30 +107,49 @@ jobs:
build-args: |
DIST=${{ matrix.os.distribution }}
SUITE=${{ matrix.os.codename }}
QT_VERSION=${{ matrix.qt_version }}
REPOSITORY="${{ github.server_url }}/${{ env.REPOSITORY }}"
- name: 🐳 Set up, 👷 Build, 🔀 Combine and 🚀 Push Debian Buster armv6 image
debian_buster_armv6:
name: 🐧 Debian 10.x (Buster) (armv6) Qt 5
needs: [ ubuntu_debian ]
runs-on: ubuntu-latest
steps:
- name: 👀 Checkout
uses: actions/checkout@v4

- name: ✅ Determine current Repository
if: ${{ !startsWith(github.repository, env.REPOSITORY) }}
run: echo "REPOSITORY=$(echo '${{ github.actor }}' | tr '[:upper:]' '[:lower:]')" >> ${GITHUB_ENV}

- name: 🛠️ Set up QEMU
uses: docker/setup-qemu-action@v3

- name: 🐳 Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: 👷 Build, 🔀 Combine and 🚀 Push Debian Buster armv6 image
if: ${{ matrix.os.codename == 'buster' }}
run: |
docker buildx build --provenance=false --push --tag ghcr.io/${{ env.REPOSITORY }}/${{ matrix.os.distribution }}:${{ env.FILE_TAG }} --platform linux/arm/v5 --file ${{ env.FILE_TAG }} .
docker buildx imagetools create -t ${{ steps.docker_metadata.outputs.tags }} --append ghcr.io/${{ env.REPOSITORY }}/${{ matrix.os.distribution }}:${{ env.FILE_TAG }}
env:
FILE_TAG: buster-armv6
echo ${{ secrets.DOCKER_CI }} | docker login ghcr.io -u ${{ github.actor }} --password-stdin
docker buildx build --provenance=false --push --tag ghcr.io/${{ env.REPOSITORY }}/debian:buster-armv6 --platform linux/arm/v5 --file buster-armv6 .
docker buildx imagetools create -t ghcr.io/${{ env.REPOSITORY }}/debian:buster --append ghcr.io/${{ env.REPOSITORY }}/debian:buster-armv6
####################
###### Fedora ######
####################

fedora:
name: ${{ matrix.description }} ${{ matrix.tag }}
name: 🐧 ${{ matrix.description }} ${{ matrix.tag }} Qt ${{ matrix.qt_version }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
tag: [ 37, 38, 39, 40 ]
qt_version: [ '5', '6' ]
include:
- dist: fedora
- description: 🐧 Fedora
- description: Fedora
- target_platform: linux/amd64, linux/arm64

steps:
Expand Down Expand Up @@ -148,12 +179,14 @@ jobs:
uses: docker/metadata-action@v4
with:
images: ghcr.io/${{ env.REPOSITORY }}/${{ matrix.dist }}
tags: ${{ matrix.tag }}
tags: |
type=raw,value=${{ matrix.tag }},enable=${{ matrix.qt_version == '5' }}
type=raw,value=${{ matrix.tag }}-qt6,enable=${{ matrix.qt_version == '6' }}
labels: |
maintainer=Hyperion Project <[email protected]>
org.opencontainers.image.vendor=Hyperion Project
org.opencontainers.image.title=${{ matrix.description }}
org.opencontainers.image.description=Compilation environment to build the RPM packages for the DNF Repository
org.opencontainers.image.title=${{ matrix.description }} - QT ${{ matrix.qt_version }}
org.opencontainers.image.description=Compilation environment to build Hyperion for ${{ matrix.description }} ${{ matrix.tag }}
org.opencontainers.image.url=${{ github.server_url }}
org.opencontainers.image.source=${{ github.server_url }}/hyperion.docker-ci
org.opencontainers.image.documentation=https://docs.hyperion-project.org/
Expand All @@ -172,4 +205,5 @@ jobs:
build-args: |
DIST=${{ matrix.dist }}
SUITE=${{ matrix.tag }}
REPOSITORY="${{ github.server_url }}/${{ env.REPOSITORY }}"
QT_VERSION=${{ matrix.qt_version }}
REPOSITORY="${{ github.server_url }}/${{ env.REPOSITORY }}"
6 changes: 3 additions & 3 deletions buster-armv6
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ LABEL maintainer="Hyperion Project <[email protected]>" \
# install deps
RUN install_packages \
git \
cmake=3.13.4-1 \
cmake-data=3.13.4-1 \
python3-dev \
qtbase5-dev \
libqt5serialport5-dev \
Expand All @@ -35,9 +37,7 @@ RUN install_packages \
libasound2-dev \
libjpeg-dev \
libturbojpeg0-dev \
libftdi1-dev \
cmake=3.13.4-1 \
cmake-data=3.13.4-1 && \
libftdi1-dev && \
apt-get clean -q -y && \
apt-get autoremove -y && \
rm -rf /var/lib/apt/lists/*
37 changes: 28 additions & 9 deletions fedora
Original file line number Diff line number Diff line change
@@ -1,25 +1,44 @@
ARG DIST="fedora"
ARG SUITE="36"
ARG SUITE="37"
ARG QT_VERSION="5"
ARG REPOSITORY="https://github.com/hyperion-project"

FROM ${DIST}:${SUITE}

ARG DIST
ARG SUITE
ARG QT_VERSION
ARG REPOSITORY
ARG TARGETPLATFORM

# install deps
RUN dnf -y update && \
dnf -y groupinstall 'Development Tools' 'C Development Tools and Libraries' 'RPM Development Tools' && \
dnf -y install \
LABEL maintainer="Hyperion Project <[email protected]>" \
org.opencontainers.image.title="${DIST} ${SUITE} ${TARGETPLATFORM} - QT ${QT_VERSION}" \
org.opencontainers.image.description="Compilation environment to build Hyperion for ${DIST} ${SUITE}" \
org.opencontainers.image.url="${REPOSITORY}" \
org.opencontainers.image.source="${REPOSITORY}/hyperion.docker-ci" \
org.opencontainers.image.vendor="Hyperion Project" \
org.opencontainers.image.documentation="https://docs.hyperion-project.org" \
org.opencontainers.image.licenses="MIT"

ENV DNF_INSTALL="dnf -y install"

# update
RUN dnf -y update

# install qt5 or qt6
RUN if [ "$QT_VERSION" = "6" ]; then \
$DNF_INSTALL qt6-qtbase-devel qt6-qtserialport-devel libxkbcommon-devel; \
else \
$DNF_INSTALL qt5-qtbase-devel qt5-qtserialport-devel qt5-qtx11extras-devel; \
fi

# install general deps
RUN dnf -y groupinstall 'Development Tools' 'C Development Tools and Libraries' 'RPM Development Tools' && \
$DNF_INSTALL \
fedora-packager \
python3-devel \
qt5-qtbase-devel \
qt5-qtserialport-devel \
libXrandr-devel \
xcb-util-image-devel \
qt5-qtx11extras-devel \
turbojpeg-devel \
libjpeg-turbo-devel \
libusb1-devel \
Expand All @@ -40,4 +59,4 @@ RUN dnf -y update && \
RUN rpmdev-setuptree

# cleanup
RUN dnf clean all && rm -rf /var/cache/dnf
RUN dnf clean all && rm -rf /var/cache/dnf
37 changes: 28 additions & 9 deletions ubuntu_debian
Original file line number Diff line number Diff line change
@@ -1,16 +1,18 @@
ARG DIST="debian"
ARG SUITE="buster"
ARG QT_VERSION="5"
ARG REPOSITORY="https://github.com/hyperion-project"

FROM ${DIST}:${SUITE}

ARG DIST
ARG SUITE
ARG QT_VERSION
ARG REPOSITORY
ARG TARGETPLATFORM

LABEL maintainer="Hyperion Project <[email protected]>" \
org.opencontainers.image.title="${DIST} ${SUITE} ${TARGETPLATFORM}" \
org.opencontainers.image.title="${DIST} ${SUITE} ${TARGETPLATFORM} - QT ${QT_VERSION}" \
org.opencontainers.image.description="Compilation environment to build Hyperion for ${DIST} ${SUITE}" \
org.opencontainers.image.url="${REPOSITORY}" \
org.opencontainers.image.source="${REPOSITORY}/hyperion.docker-ci" \
Expand All @@ -25,22 +27,36 @@ ENV APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=DontWarn
ENV APT_INSTALL="apt-get -y install --no-install-recommends"
ENV APT_UPDATE="apt-get -y update"

# install general deps (all platforms/arch/os)
ARG DEBIAN_FRONTEND=noninteractive
RUN $APT_UPDATE && $APT_INSTALL \

# update
RUN $APT_UPDATE

# install qt5 or qt6 (qt6 is not available on ubuntu focal and debian buster)
# on debian bullseye add backports to install qt6
RUN if [ "$SUITE" != "buster" ] && [ "$SUITE" != "focal" ] && [ "$QT_VERSION" = "6" ]; then \
if [ "$SUITE" = "bullseye" ]; then \
echo "deb http://deb.debian.org/debian bullseye-backports main contrib non-free" | tee -a /etc/apt/sources.list; \
$APT_UPDATE; \
fi; \
$APT_INSTALL qt6-base-dev libqt6serialport6-dev libxkbcommon-dev libvulkan-dev libgl1-mesa-dev; \
else \
$APT_INSTALL qtbase5-dev libqt5serialport5-dev libqt5sql5-sqlite libqt5svg5-dev; \
fi

# install general deps (all platforms/arch/os)
RUN $APT_INSTALL \
devscripts \
fakeroot \
debhelper \
libdistro-info-perl \
git \
python3-dev \
qtbase5-dev \
libqt5serialport5-dev \
libqt5sql5-sqlite \
libqt5svg5-dev \
build-essential \
libusb-1.0-0-dev \
libcec-dev \
libp8-platform-dev \
libudev-dev \
libavahi-core-dev \
libavahi-compat-libdnssd-dev \
zlib1g-dev \
Expand All @@ -57,9 +73,9 @@ RUN if [ "$TARGETPLATFORM" = "linux/arm/v7" ]; then \
if [ "$SUITE" = "buster" ]; then \
$APT_INSTALL cmake=3.13.4-1 cmake-data=3.13.4-1; \
elif [ "$SUITE" = "focal" ]; then \
echo "deb [arch=armhf] http://ports.ubuntu.com/ bionic main restricted" > /etc/apt/sources.list.d/groovy-sources.list; \
echo "deb [arch=armhf] http://ports.ubuntu.com/ bionic main restricted" > /etc/apt/sources.list.d/bionic-sources.list; \
$APT_UPDATE && $APT_INSTALL -t bionic cmake; \
rm /etc/apt/sources.list.d/groovy-sources.list; \
rm /etc/apt/sources.list.d/bionic-sources.list; \
else \
$APT_INSTALL cmake; \
fi; \
Expand All @@ -70,6 +86,9 @@ fi
# install X11/XCB on Ubuntu for all arch and on Debian for amd64
# install libraspberrypi-dev on Debian for arm64/armhf
RUN if [ "$DIST" = "ubuntu" ] || [ "$TARGETPLATFORM" = "linux/amd64" ]; then \
if [ "$QT_VERSION" = "5" ]; then \
$APT_INSTALL libqt5x11extras5-dev; \
fi; \
$APT_INSTALL libqt5x11extras5-dev libxcb-util0-dev libxcb-randr0-dev libxcb-shm0-dev libxcb-render0-dev libxcb-image0-dev libxrandr-dev libxrender-dev; \
elif [ "$TARGETPLATFORM" = "linux/arm64" ] || [ "$TARGETPLATFORM" = "linux/arm/v7" ] && [ "$SUITE" != "trixie" ]; then \
$APT_INSTALL wget gpg dirmngr gpg-agent; \
Expand Down

0 comments on commit c7277f3

Please sign in to comment.