99 push :
1010 branches : [ master ]
1111
12- # If pushes to master are made in rapid succession, cancel existing docker builds and use newer commits
13- concurrency :
14- group : ${{ github.workflow }}-${{ github.ref_name }}
15- cancel-in-progress : true
16-
17- env :
18- SECRET_DOCKER_CI : ${{ secrets.DOCKER_CI }}
19- REPOSITORY : hyperion-project
20-
2112jobs :
2213
23- # ############################
24- # ##### Ubuntu & Debian ######
25- # ############################
26-
27- ubuntu_debian :
14+ ubuntu_debian_fedora :
2815 name : π§ ${{ matrix.os.description }} Qt ${{ matrix.qt_version }}
29- runs-on : ubuntu-22.04
30- strategy :
31- fail-fast : false
32- matrix :
33- os : [
34- { distribution: ubuntu, codename: focal, description: Ubuntu 20.04 (Focal Fossa) },
35- { distribution: ubuntu, codename: jammy, description: Ubuntu 22.04 (Jammy Jellyfish) },
36- { distribution: ubuntu, codename: noble, description: Ubuntu 24.04 (Noble Numbat) },
37- { distribution: ubuntu, codename: oracular, description: Ubuntu 24.10 (Oracular Oriole) },
38- { distribution: debian, codename: buster, description: Debian 10.x (Buster) },
39- { distribution: debian, codename: bullseye, description: Debian 11.x (Bullseye) },
40- { distribution: debian, codename: bookworm, description: Debian 12.x (Bookworm) },
41- { distribution: debian, codename: trixie, description: Debian 13.x (Trixie) }
42- ]
43- qt_version : [ '5', '6' ]
44- include :
45- - target_platform : linux/amd64,linux/arm64,linux/arm/v7
46- exclude :
47- # qt6 is not available on ubuntu focal and debian buster
48- - os : { distribution: ubuntu, codename: focal }
49- qt_version : ' 6'
50- - os : { distribution: debian, codename: buster }
51- qt_version : ' 6'
52-
53- steps :
54- - name : π Checkout
55- uses : actions/checkout@v4
56-
57- - name : β
Determine current Repository
58- if : ${{ !startsWith(github.repository, env.REPOSITORY) }}
59- run : echo "REPOSITORY=$(echo '${{ github.actor }}' | tr '[:upper:]' '[:lower:]')" >> ${GITHUB_ENV}
60-
61- - name : π οΈ Set up QEMU
62- uses : docker/setup-qemu-action@v3
63-
64- - name : π³ Set up Docker Buildx
65- uses : docker/setup-buildx-action@v3
66-
67- - name : π Login to GitHub Container Registry
68- if : ${{ env.SECRET_DOCKER_CI != null }}
69- uses : docker/login-action@v3
70- with :
71- registry : ghcr.io
72- username : ${{ github.actor }}
73- password : ${{ secrets.DOCKER_CI }}
74-
75- - name : π³ Set up Docker metadata
76- id : docker_metadata
77- uses : docker/metadata-action@v5
78- with :
79- images : ghcr.io/${{ env.REPOSITORY }}/${{ matrix.os.distribution }}
80- tags : |
81- type=raw,value=${{ matrix.os.codename }},enable=${{ matrix.qt_version == '5' }}
82- type=raw,value=${{ matrix.os.codename }}-qt6,enable=${{ matrix.qt_version == '6' }}
83- labels : |
84- maintainer=Hyperion Project <[email protected] > 85- org.opencontainers.image.vendor=Hyperion Project
86- org.opencontainers.image.title=${{ matrix.os.description }} - QT ${{ matrix.qt_version }}
87- org.opencontainers.image.description=Compilation environment to build Hyperion for ${{ matrix.os.distribution }} ${{ matrix.os.codename }}
88- org.opencontainers.image.url=${{ github.server_url }}
89- org.opencontainers.image.source=${{ github.server_url }}/hyperion.docker-ci
90- org.opencontainers.image.documentation=https://docs.hyperion-project.org/
91- org.opencontainers.image.licenses=MIT
92-
93- - name : π· Build and π Push to GitHub Container/Package Registry
94- uses : docker/build-push-action@v6
95- with :
96- context : .
97- file : ubuntu_debian
98- push : true
99- platforms : ${{ matrix.target_platform }}
100- provenance : false
101- tags : ${{ steps.docker_metadata.outputs.tags }}
102- labels : ${{ steps.docker_metadata.outputs.labels }}
103- build-args : |
104- DIST=${{ matrix.os.distribution }}
105- SUITE=${{ matrix.os.codename }}
106- QT_VERSION=${{ matrix.qt_version }}
107- REPOSITORY="${{ github.server_url }}/${{ env.REPOSITORY }}"
108-
109- debian_armv6 :
110- name : π§ ${{ matrix.os.description }} Qt ${{ matrix.qt_version }} (armv6)
111- needs : [ ubuntu_debian ]
112- runs-on : ubuntu-22.04
11316 strategy :
11417 fail-fast : false
11518 matrix :
11619 os : [
117- { codename: buster, description: Debian 10.x (Buster) },
118- { codename: bullseye, description: Debian 11.x (Bullseye) },
119- { codename: bookworm, description: Debian 12.x (Bookworm) }
20+ { distribution: ubuntu, codename: focal, description: Ubuntu 20.04 (Focal Fossa), target_platform: "['amd64', 'arm64', 'armv7']" },
21+ { distribution: ubuntu, codename: jammy, description: Ubuntu 22.04 (Jammy Jellyfish), target_platform: "['amd64', 'arm64', 'armv7']" },
22+ { distribution: ubuntu, codename: noble, description: Ubuntu 24.04 (Noble Numbat), target_platform: "['amd64', 'arm64', 'armv7']" },
23+ { distribution: ubuntu, codename: oracular, description: Ubuntu 24.10 (Oracular Oriole), target_platform: "['amd64', 'arm64', 'armv7']" },
24+ { distribution: debian, codename: buster, description: Debian 10.x (Buster), target_platform: "['amd64', 'arm64', 'armv6', 'armv7']" },
25+ { distribution: debian, codename: bullseye, description: Debian 11.x (Bullseye), target_platform: "['amd64', 'arm64', 'armv6', 'armv7']" },
26+ { distribution: debian, codename: bookworm, description: Debian 12.x (Bookworm), target_platform: "['amd64', 'arm64', 'armv6', 'armv7']" },
27+ { distribution: debian, codename: trixie, description: Debian 13.x (Trixie), target_platform: "['amd64', 'arm64', 'armv7']" },
28+ { distribution: fedora, codename: 39, description: Fedora 39, target_platform: "['amd64', 'arm64']" },
29+ { distribution: fedora, codename: 40, description: Fedora 40, target_platform: "['amd64', 'arm64']" },
30+ { distribution: fedora, codename: 41, description: Fedora 41, target_platform: "['amd64', 'arm64']" }
12031 ]
121- qt_version : [ '5', '6' ]
32+ qt_version : [ 5, 6 ]
12233 exclude :
123- # qt6 is not available on debian buster/bullseye
124- - os : { codename: buster, description: Debian 10.x (Buster) }
125- qt_version : ' 6'
126- - os : { codename: bullseye, description: Debian 11.x (Bullseye) }
127- qt_version : ' 6'
128-
129- steps :
130- - name : π Checkout
131- uses : actions/checkout@v4
132-
133- - name : β
Determine current Repository
134- if : ${{ !startsWith(github.repository, env.REPOSITORY) }}
135- run : echo "REPOSITORY=$(echo '${{ github.actor }}' | tr '[:upper:]' '[:lower:]')" >> ${GITHUB_ENV}
136-
137- - name : π οΈ Set up QEMU
138- uses : docker/setup-qemu-action@v3
139-
140- - name : π³ Set up Docker Buildx
141- uses : docker/setup-buildx-action@v3
142-
143- - name : π· Build, π Combine and π Push to GitHub Container/Package Registry
144- run : |
145- echo ${{ secrets.DOCKER_CI }} | docker login ghcr.io -u ${{ github.actor }} --password-stdin
146- docker buildx build --provenance=false --push --build-arg SUITE=${{ matrix.os.codename }} --build-arg QT_VERSION=${{ matrix.qt_version }} --platform=linux/arm/v6 --tag ghcr.io/${{ env.REPOSITORY }}/debian:${{ env.IMAGE }}-armv6 --file debian-armv6 .
147- docker buildx imagetools create -t ghcr.io/${{ env.REPOSITORY }}/debian:${{ env.IMAGE }} --append ghcr.io/${{ env.REPOSITORY }}/debian:${{ env.IMAGE }}-armv6
148- env :
149- IMAGE : ${{ matrix.qt_version == '6' && format('{0}-qt6', matrix.os.codename) || matrix.os.codename }}
150-
151- # ###################
152- # ##### Fedora ######
153- # ###################
154-
155- fedora :
156- name : π§ ${{ matrix.description }} ${{ matrix.tag }} Qt ${{ matrix.qt_version }}
157- runs-on : ubuntu-22.04
158- strategy :
159- fail-fast : false
160- matrix :
161- tag : [ 39, 40, 41 ]
162- qt_version : [ '5', '6' ]
163- include :
164- - dist : fedora
165- - description : Fedora
166- - target_platform : linux/amd64, linux/arm64
167-
168- steps :
169- - name : π Checkout
170- uses : actions/checkout@v4
171-
172- - name : β
Determine current Repository
173- if : ${{ !startsWith(github.repository, env.REPOSITORY) }}
174- run : echo "REPOSITORY=$(echo '${{ github.actor }}' | tr '[:upper:]' '[:lower:]')" >> ${GITHUB_ENV}
175-
176- - name : π οΈ Set up QEMU
177- uses : docker/setup-qemu-action@v3
178-
179- - name : π³ Set up Docker Buildx
180- uses : docker/setup-buildx-action@v3
181-
182- - name : π Login to GitHub Container Registry
183- if : ${{ env.SECRET_DOCKER_CI != null }}
184- uses : docker/login-action@v3
185- with :
186- registry : ghcr.io
187- username : ${{ github.actor }}
188- password : ${{ secrets.DOCKER_CI }}
189-
190- - name : π³ Set up Docker metadata
191- id : docker_metadata
192- uses : docker/metadata-action@v5
193- with :
194- images : ghcr.io/${{ env.REPOSITORY }}/${{ matrix.dist }}
195- tags : |
196- type=raw,value=${{ matrix.tag }},enable=${{ matrix.qt_version == '5' }}
197- type=raw,value=${{ matrix.tag }}-qt6,enable=${{ matrix.qt_version == '6' }}
198- labels : |
199- maintainer=Hyperion Project <[email protected] > 200- org.opencontainers.image.vendor=Hyperion Project
201- org.opencontainers.image.title=${{ matrix.description }} - QT ${{ matrix.qt_version }}
202- org.opencontainers.image.description=Compilation environment to build Hyperion for ${{ matrix.description }} ${{ matrix.tag }}
203- org.opencontainers.image.url=${{ github.server_url }}
204- org.opencontainers.image.source=${{ github.server_url }}/hyperion.docker-ci
205- org.opencontainers.image.documentation=https://docs.hyperion-project.org/
206- org.opencontainers.image.licenses=MIT
207-
208- - name : π· Build and π Push to GitHub Container/Package Registry
209- uses : docker/build-push-action@v6
210- with :
211- context : .
212- file : fedora
213- push : ${{ env.SECRET_DOCKER_CI != null }}
214- platforms : ${{ matrix.target_platform }}
215- provenance : false
216- tags : ${{ steps.docker_metadata.outputs.tags }}
217- labels : ${{ steps.docker_metadata.outputs.labels }}
218- build-args : |
219- DIST=${{ matrix.dist }}
220- SUITE=${{ matrix.tag }}
221- QT_VERSION=${{ matrix.qt_version }}
222- REPOSITORY="${{ github.server_url }}/${{ env.REPOSITORY }}"
34+ # Qt6 is not available on Ubuntu Focal and Debian Buster
35+ # Qt6 on Debian Bullseye (only armv6) is excluded in reusable workflow qt5_6.yml because target_platform is passed as string to reusable workflow
36+ - os : { codename: focal }
37+ qt_version : 6
38+ - os : { codename: buster }
39+ qt_version : 6
40+
41+ uses : ./.github/workflows/qt5_6.yml
42+ secrets : inherit
43+ with :
44+ distribution : ${{ matrix.os.distribution }}
45+ codename : ${{ matrix.os.codename }}
46+ qt_version : ${{ matrix.qt_version }}
47+ target_platform : ${{ matrix.os.target_platform }}
0 commit comments