Skip to content

Commit d1bc218

Browse files
committed
Redo images and support way more compiler versions
ChangeLog: * .github/workflows/build-base.yml: * .github/workflows/build-latest.yml: * Dockerfile.base: Removed. * Dockerfile.clang14: New file. * Dockerfile.clang15: New file. * Dockerfile.clang16: New file. * Dockerfile.clang17: New file. * Dockerfile.clang18: New file. * Dockerfile.clang19: New file. * Dockerfile.clang20: New file. * Dockerfile.clang21: New file. * Dockerfile.common: New file. * Dockerfile.gcc10: New file. * Dockerfile.gcc11: New file. * Dockerfile.gcc12: New file. * Dockerfile.gcc13: New file. * Dockerfile.gcc14: New file. * Dockerfile.gcc15: New file. * Dockerfile.gcc16: New file. * Dockerfile.gcc9: New file. * Dockerfile.latest: Removed. * README.md:
1 parent 4559be0 commit d1bc218

22 files changed

+504
-129
lines changed

.github/workflows/build-base.yml

+67-5
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
# Copyright © 2025 GSI Helmholtzzentrum fuer Schwerionenforschung GmbH
33
# Matthias Kretz <m.kretz@gsi.de>
44

5-
name: Build Base Image
5+
name: Build Images from packages
66

77
on:
88
workflow_dispatch: # Allows manual trigger via GitHub UI
@@ -14,7 +14,7 @@ permissions:
1414
packages: write # Required to push to GHCR
1515

1616
jobs:
17-
build-and-push:
17+
common:
1818
runs-on: ubuntu-latest
1919

2020
steps:
@@ -31,10 +31,72 @@ jobs:
3131
username: ${{ github.actor }}
3232
password: ${{ secrets.GITHUB_TOKEN }}
3333

34-
- name: Build and push Docker image
34+
- name: build and publish
3535
uses: docker/build-push-action@v6
3636
with:
3737
context: .
38-
file: Dockerfile.base
38+
file: Dockerfile.common
3939
push: true
40-
tags: ghcr.io/${{ github.repository }}/base
40+
tags: ghcr.io/${{ github.repository }}/common
41+
42+
after-common:
43+
needs: common
44+
45+
strategy:
46+
matrix:
47+
image: [clang14, clang15, clang16, clang17, clang18, gcc9, gcc10, gcc11, gcc12, gcc13, gcc14]
48+
49+
runs-on: ubuntu-latest
50+
51+
steps:
52+
- name: Checkout repository
53+
uses: actions/checkout@v4
54+
55+
- name: Set up Docker Buildx
56+
uses: docker/setup-buildx-action@v3
57+
58+
- name: Log in to GHCR
59+
uses: docker/login-action@v3
60+
with:
61+
registry: ghcr.io
62+
username: ${{ github.actor }}
63+
password: ${{ secrets.GITHUB_TOKEN }}
64+
65+
- name: build and publish
66+
uses: docker/build-push-action@v6
67+
with:
68+
context: .
69+
file: Dockerfile.${{ matrix.image }}
70+
push: true
71+
tags: ghcr.io/${{ github.repository }}/${{ matrix.image }}
72+
73+
upstream-clang:
74+
needs: after-common
75+
76+
strategy:
77+
matrix:
78+
image: [clang19, clang20, clang21]
79+
80+
runs-on: ubuntu-latest
81+
82+
steps:
83+
- name: Checkout repository
84+
uses: actions/checkout@v4
85+
86+
- name: Set up Docker Buildx
87+
uses: docker/setup-buildx-action@v3
88+
89+
- name: Log in to GHCR
90+
uses: docker/login-action@v3
91+
with:
92+
registry: ghcr.io
93+
username: ${{ github.actor }}
94+
password: ${{ secrets.GITHUB_TOKEN }}
95+
96+
- name: build and publish
97+
uses: docker/build-push-action@v6
98+
with:
99+
context: .
100+
file: Dockerfile.${{ matrix.image }}
101+
push: true
102+
tags: ghcr.io/${{ github.repository }}/${{ matrix.image }}

.github/workflows/build-latest.yml

+30-4
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
# Copyright © 2025 GSI Helmholtzzentrum fuer Schwerionenforschung GmbH
33
# Matthias Kretz <m.kretz@gsi.de>
44

5-
name: Build Latest Image
5+
name: Build Images from source
66

77
on:
88
workflow_dispatch: # Allows manual trigger via GitHub UI
@@ -14,7 +14,7 @@ permissions:
1414
packages: write # Required to push to GHCR
1515

1616
jobs:
17-
build-and-push:
17+
gcc15:
1818
runs-on: ubuntu-latest
1919

2020
steps:
@@ -35,7 +35,33 @@ jobs:
3535
uses: docker/build-push-action@v6
3636
with:
3737
context: .
38-
file: Dockerfile.latest
38+
file: Dockerfile.gcc15
3939
push: true
40-
tags: ghcr.io/${{ github.repository }}/latest
40+
tags: ghcr.io/${{ github.repository }}/gcc15
4141

42+
gcc16:
43+
needs: gcc15
44+
45+
runs-on: ubuntu-latest
46+
47+
steps:
48+
- name: Checkout repository
49+
uses: actions/checkout@v4
50+
51+
- name: Set up Docker Buildx
52+
uses: docker/setup-buildx-action@v3
53+
54+
- name: Log in to GHCR
55+
uses: docker/login-action@v3
56+
with:
57+
registry: ghcr.io
58+
username: ${{ github.actor }}
59+
password: ${{ secrets.GITHUB_TOKEN }}
60+
61+
- name: Build and push Docker image
62+
uses: docker/build-push-action@v6
63+
with:
64+
context: .
65+
file: Dockerfile.gcc16
66+
push: true
67+
tags: ghcr.io/${{ github.repository }}/gcc16

Dockerfile.base

-43
This file was deleted.

Dockerfile.clang14

+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# SPDX-License-Identifier: GPL-3.0-or-later
2+
# Copyright © 2025 GSI Helmholtzzentrum fuer Schwerionenforschung GmbH
3+
# Matthias Kretz <m.kretz@gsi.de>
4+
5+
FROM ghcr.io/mattkretz/cplusplus-ci/common
6+
7+
ENV DEBIAN_FRONTEND=noninteractive
8+
9+
ENV LLVM_VERSION=14
10+
11+
RUN apt-get install -y --no-install-recommends \
12+
clang-${LLVM_VERSION} \
13+
clang-tidy-${LLVM_VERSION} \
14+
clang-format-${LLVM_VERSION} \
15+
libc++-${LLVM_VERSION}-dev \
16+
libc++abi-${LLVM_VERSION}-dev \
17+
&& \
18+
update-alternatives --install /usr/bin/clang clang /usr/bin/clang-${LLVM_VERSION} ${LLVM_VERSION}0 \
19+
--slave /usr/bin/clang++ clang++ /usr/bin/clang++-${LLVM_VERSION} && \
20+
update-alternatives --install /usr/bin/clang-tidy clang-tidy /usr/bin/clang-tidy-${LLVM_VERSION} ${LLVM_VERSION}0 && \
21+
update-alternatives --install /usr/bin/clang-format clang-format /usr/bin/clang-format-${LLVM_VERSION} ${LLVM_VERSION}0 && \
22+
apt-get clean

Dockerfile.clang15

+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# SPDX-License-Identifier: GPL-3.0-or-later
2+
# Copyright © 2025 GSI Helmholtzzentrum fuer Schwerionenforschung GmbH
3+
# Matthias Kretz <m.kretz@gsi.de>
4+
5+
FROM ghcr.io/mattkretz/cplusplus-ci/common
6+
7+
ENV DEBIAN_FRONTEND=noninteractive
8+
9+
ENV LLVM_VERSION=15
10+
11+
RUN apt-get install -y --no-install-recommends \
12+
clang-${LLVM_VERSION} \
13+
clang-tidy-${LLVM_VERSION} \
14+
clang-format-${LLVM_VERSION} \
15+
libc++-${LLVM_VERSION}-dev \
16+
libc++abi-${LLVM_VERSION}-dev \
17+
&& \
18+
update-alternatives --install /usr/bin/clang clang /usr/bin/clang-${LLVM_VERSION} ${LLVM_VERSION}0 \
19+
--slave /usr/bin/clang++ clang++ /usr/bin/clang++-${LLVM_VERSION} && \
20+
update-alternatives --install /usr/bin/clang-tidy clang-tidy /usr/bin/clang-tidy-${LLVM_VERSION} ${LLVM_VERSION}0 && \
21+
update-alternatives --install /usr/bin/clang-format clang-format /usr/bin/clang-format-${LLVM_VERSION} ${LLVM_VERSION}0 && \
22+
apt-get clean

Dockerfile.clang16

+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# SPDX-License-Identifier: GPL-3.0-or-later
2+
# Copyright © 2025 GSI Helmholtzzentrum fuer Schwerionenforschung GmbH
3+
# Matthias Kretz <m.kretz@gsi.de>
4+
5+
FROM ghcr.io/mattkretz/cplusplus-ci/common
6+
7+
ENV DEBIAN_FRONTEND=noninteractive
8+
9+
ENV LLVM_VERSION=16
10+
11+
RUN apt-get install -y --no-install-recommends \
12+
clang-${LLVM_VERSION} \
13+
clang-tidy-${LLVM_VERSION} \
14+
clang-format-${LLVM_VERSION} \
15+
libc++-${LLVM_VERSION}-dev \
16+
libc++abi-${LLVM_VERSION}-dev \
17+
&& \
18+
update-alternatives --install /usr/bin/clang clang /usr/bin/clang-${LLVM_VERSION} ${LLVM_VERSION}0 \
19+
--slave /usr/bin/clang++ clang++ /usr/bin/clang++-${LLVM_VERSION} && \
20+
update-alternatives --install /usr/bin/clang-tidy clang-tidy /usr/bin/clang-tidy-${LLVM_VERSION} ${LLVM_VERSION}0 && \
21+
update-alternatives --install /usr/bin/clang-format clang-format /usr/bin/clang-format-${LLVM_VERSION} ${LLVM_VERSION}0 && \
22+
apt-get clean

Dockerfile.clang17

+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# SPDX-License-Identifier: GPL-3.0-or-later
2+
# Copyright © 2025 GSI Helmholtzzentrum fuer Schwerionenforschung GmbH
3+
# Matthias Kretz <m.kretz@gsi.de>
4+
5+
FROM ghcr.io/mattkretz/cplusplus-ci/common
6+
7+
ENV DEBIAN_FRONTEND=noninteractive
8+
9+
ENV LLVM_VERSION=17
10+
11+
RUN apt-get install -y --no-install-recommends \
12+
clang-${LLVM_VERSION} \
13+
clang-tidy-${LLVM_VERSION} \
14+
clang-format-${LLVM_VERSION} \
15+
libc++-${LLVM_VERSION}-dev \
16+
libc++abi-${LLVM_VERSION}-dev \
17+
&& \
18+
update-alternatives --install /usr/bin/clang clang /usr/bin/clang-${LLVM_VERSION} ${LLVM_VERSION}0 \
19+
--slave /usr/bin/clang++ clang++ /usr/bin/clang++-${LLVM_VERSION} && \
20+
update-alternatives --install /usr/bin/clang-tidy clang-tidy /usr/bin/clang-tidy-${LLVM_VERSION} ${LLVM_VERSION}0 && \
21+
update-alternatives --install /usr/bin/clang-format clang-format /usr/bin/clang-format-${LLVM_VERSION} ${LLVM_VERSION}0 && \
22+
apt-get clean

Dockerfile.clang18

+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# SPDX-License-Identifier: GPL-3.0-or-later
2+
# Copyright © 2025 GSI Helmholtzzentrum fuer Schwerionenforschung GmbH
3+
# Matthias Kretz <m.kretz@gsi.de>
4+
5+
FROM ghcr.io/mattkretz/cplusplus-ci/common
6+
7+
ENV DEBIAN_FRONTEND=noninteractive
8+
9+
ENV LLVM_VERSION=18
10+
11+
RUN apt-get install -y --no-install-recommends \
12+
clang-${LLVM_VERSION} \
13+
clang-tidy-${LLVM_VERSION} \
14+
clang-format-${LLVM_VERSION} \
15+
libc++-${LLVM_VERSION}-dev \
16+
libc++abi-${LLVM_VERSION}-dev \
17+
&& \
18+
update-alternatives --install /usr/bin/clang clang /usr/bin/clang-${LLVM_VERSION} ${LLVM_VERSION}0 \
19+
--slave /usr/bin/clang++ clang++ /usr/bin/clang++-${LLVM_VERSION} && \
20+
update-alternatives --install /usr/bin/clang-tidy clang-tidy /usr/bin/clang-tidy-${LLVM_VERSION} ${LLVM_VERSION}0 && \
21+
update-alternatives --install /usr/bin/clang-format clang-format /usr/bin/clang-format-${LLVM_VERSION} ${LLVM_VERSION}0 && \
22+
apt-get clean

Dockerfile.clang19

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# SPDX-License-Identifier: GPL-3.0-or-later
2+
# Copyright © 2025 GSI Helmholtzzentrum fuer Schwerionenforschung GmbH
3+
# Matthias Kretz <m.kretz@gsi.de>
4+
5+
FROM ghcr.io/mattkretz/cplusplus-ci/gcc14
6+
7+
ENV DEBIAN_FRONTEND=noninteractive
8+
9+
ENV LLVM_VERSION=19
10+
11+
RUN wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key|apt-key add - && \
12+
add-apt-repository "deb http://apt.llvm.org/noble/ llvm-toolchain-noble-${LLVM_VERSION} main" && \
13+
apt-get update && \
14+
apt-get install -y --no-install-recommends \
15+
clang-${LLVM_VERSION} \
16+
clang-tidy-${LLVM_VERSION} \
17+
clang-format-${LLVM_VERSION} \
18+
libc++-${LLVM_VERSION}-dev \
19+
libc++abi-${LLVM_VERSION}-dev && \
20+
update-alternatives --install /usr/bin/clang clang /usr/bin/clang-${LLVM_VERSION} ${LLVM_VERSION}0 \
21+
--slave /usr/bin/clang++ clang++ /usr/bin/clang++-${LLVM_VERSION} && \
22+
update-alternatives --install /usr/bin/clang-tidy clang-tidy /usr/bin/clang-tidy-${LLVM_VERSION} ${LLVM_VERSION}0 && \
23+
update-alternatives --install /usr/bin/clang-format clang-format /usr/bin/clang-format-${LLVM_VERSION} ${LLVM_VERSION}0 && \
24+
apt-get clean

Dockerfile.clang20

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# SPDX-License-Identifier: GPL-3.0-or-later
2+
# Copyright © 2025 GSI Helmholtzzentrum fuer Schwerionenforschung GmbH
3+
# Matthias Kretz <m.kretz@gsi.de>
4+
5+
FROM ghcr.io/mattkretz/cplusplus-ci/gcc14
6+
7+
ENV DEBIAN_FRONTEND=noninteractive
8+
9+
ENV LLVM_VERSION=20
10+
11+
RUN wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key|apt-key add - && \
12+
add-apt-repository "deb http://apt.llvm.org/noble/ llvm-toolchain-noble-${LLVM_VERSION} main" && \
13+
apt-get update && \
14+
apt-get install -y --no-install-recommends \
15+
clang-${LLVM_VERSION} \
16+
clang-tidy-${LLVM_VERSION} \
17+
clang-format-${LLVM_VERSION} \
18+
libc++-${LLVM_VERSION}-dev \
19+
libc++abi-${LLVM_VERSION}-dev && \
20+
update-alternatives --install /usr/bin/clang clang /usr/bin/clang-${LLVM_VERSION} ${LLVM_VERSION}0 \
21+
--slave /usr/bin/clang++ clang++ /usr/bin/clang++-${LLVM_VERSION} && \
22+
update-alternatives --install /usr/bin/clang-tidy clang-tidy /usr/bin/clang-tidy-${LLVM_VERSION} ${LLVM_VERSION}0 && \
23+
update-alternatives --install /usr/bin/clang-format clang-format /usr/bin/clang-format-${LLVM_VERSION} ${LLVM_VERSION}0 && \
24+
apt-get clean

Dockerfile.clang21

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# SPDX-License-Identifier: GPL-3.0-or-later
2+
# Copyright © 2025 GSI Helmholtzzentrum fuer Schwerionenforschung GmbH
3+
# Matthias Kretz <m.kretz@gsi.de>
4+
5+
FROM ghcr.io/mattkretz/cplusplus-ci/gcc14
6+
7+
ENV DEBIAN_FRONTEND=noninteractive
8+
9+
ENV LLVM_VERSION=21
10+
11+
RUN wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key|apt-key add - && \
12+
add-apt-repository "deb http://apt.llvm.org/noble/ llvm-toolchain-noble main" && \
13+
apt-get update && \
14+
apt-get install -y --no-install-recommends \
15+
clang-${LLVM_VERSION} \
16+
clang-tidy-${LLVM_VERSION} \
17+
clang-format-${LLVM_VERSION} \
18+
libc++-${LLVM_VERSION}-dev \
19+
libc++abi-${LLVM_VERSION}-dev && \
20+
update-alternatives --install /usr/bin/clang clang /usr/bin/clang-${LLVM_VERSION} ${LLVM_VERSION}0 \
21+
--slave /usr/bin/clang++ clang++ /usr/bin/clang++-${LLVM_VERSION} && \
22+
update-alternatives --install /usr/bin/clang-tidy clang-tidy /usr/bin/clang-tidy-${LLVM_VERSION} ${LLVM_VERSION}0 && \
23+
update-alternatives --install /usr/bin/clang-format clang-format /usr/bin/clang-format-${LLVM_VERSION} ${LLVM_VERSION}0 && \
24+
apt-get clean

0 commit comments

Comments
 (0)