Skip to content

Commit 7bd9857

Browse files
committed
GitHub workflow for building a container for C++ CI
ChangeLog: * .github/dependabot.yml: New file. * .github/workflows/build-ci-docker.yml: New file. * .github/workflows/reuse.yml: New file. * .pre-commit-config.yaml: New file. * Dockerfile: New file. * LICENSES/CC0-1.0.txt: New file. * LICENSES/GPL-3.0-or-later.txt: New file.
0 parents  commit 7bd9857

File tree

7 files changed

+484
-0
lines changed

7 files changed

+484
-0
lines changed

.github/dependabot.yml

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
# SPDX-FileCopyrightText: 2024–2025 GSI Helmholtzzentrum fuer Schwerionenforschung GmbH, Darmstadt, Germany
2+
#
3+
# SPDX-License-Identifier: CC0-1.0
4+
5+
version: 2
6+
updates:
7+
- package-ecosystem: "github-actions"
8+
directory: "/" # Location of package manifests
9+
schedule:
10+
interval: "monthly"

.github/workflows/build-ci-docker.yml

+38
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
# SPDX-License-Identifier: GPL-3.0-or-later
2+
# Copyright © 2025 GSI Helmholtzzentrum fuer Schwerionenforschung GmbH
3+
# Matthias Kretz <[email protected]>
4+
5+
name: Build and Push C++ CI Docker Image
6+
7+
on:
8+
workflow_dispatch: # Allows manual trigger via GitHub UI
9+
10+
permissions:
11+
contents: read
12+
packages: write # Required to push to GHCR
13+
14+
jobs:
15+
build-and-push:
16+
runs-on: ubuntu-latest
17+
18+
steps:
19+
- name: Checkout repository
20+
uses: actions/checkout@v4
21+
22+
- name: Set up Docker Buildx
23+
uses: docker/setup-buildx-action@v3
24+
25+
- name: Log in to GHCR
26+
uses: docker/login-action@v3
27+
with:
28+
registry: ghcr.io
29+
username: ${{ github.actor }}
30+
password: ${{ secrets.GITHUB_TOKEN }}
31+
32+
- name: Build and push Docker image
33+
uses: docker/build-push-action@v5
34+
with:
35+
context: .
36+
push: true
37+
tags: ghcr.io/${{ github.actor }}/cplusplus-ci:latest
38+

.github/workflows/reuse.yml

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# SPDX-FileCopyrightText: 2020 Free Software Foundation Europe e.V.
2+
# SPDX-License-Identifier: CC0-1.0
3+
name: REUSE Compliance Check
4+
5+
on: [push, pull_request]
6+
7+
jobs:
8+
test:
9+
runs-on: ubuntu-latest
10+
steps:
11+
- uses: actions/checkout@v4
12+
- name: REUSE Compliance Check
13+
uses: fsfe/reuse-action@v5

.pre-commit-config.yaml

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# SPDX-FileCopyrightText: 2020 Free Software Foundation Europe e.V.
2+
# SPDX-License-Identifier: CC0-1.0
3+
repos:
4+
- repo: https://github.com/fsfe/reuse-tool
5+
rev: v5.0.2
6+
hooks:
7+
- id: reuse

Dockerfile

+63
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
# SPDX-License-Identifier: GPL-3.0-or-later
2+
# Copyright © 2025 GSI Helmholtzzentrum fuer Schwerionenforschung GmbH
3+
# Matthias Kretz <[email protected]>
4+
5+
FROM ubuntu:24.04
6+
7+
ENV DEBIAN_FRONTEND=noninteractive
8+
9+
RUN dpkg --add-architecture i386 && \
10+
apt-get update && \
11+
apt-get install -y --no-install-recommends \
12+
software-properties-common \
13+
wget \
14+
curl \
15+
ca-certificates \
16+
gnupg \
17+
lsb-release \
18+
make \
19+
cmake \
20+
git \
21+
zsh \
22+
build-essential \
23+
ninja-build \
24+
python3 \
25+
python3-pip && \
26+
add-apt-repository -y ppa:ubuntu-toolchain-r/test && \
27+
apt-get update && apt-get install -y --no-install-recommends \
28+
gcc-13 g++-13 g++-13-multilib \
29+
gcc-14 g++-14 g++-14-multilib \
30+
file m4 libtool autoconf2.69 dwz gawk lzma xz-utils libzstd-dev zlib1g-dev systemtap-sdt-dev \
31+
binutils:native binutils-hppa64-linux-gnu:native gperf bison flex gettext nvptx-tools amdgcn-tools-18 \
32+
texinfo locales-all sharutils procps netbase libisl-dev libmpc-dev libmpfr-dev libgmp-dev lib32z1-dev libx32z1-dev \
33+
libc6-dev-i386 linux-libc-dev:i386 coreutils chrpath time pkgconf && \
34+
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-14 140 --slave /usr/bin/g++ g++ /usr/bin/g++-14 && \
35+
wget https://apt.llvm.org/llvm.sh && \
36+
chmod +x llvm.sh && \
37+
./llvm.sh 20 && \
38+
./llvm.sh 21 && \
39+
rm llvm.sh
40+
41+
# GCC 15
42+
RUN mkdir -p /root/gcc-15/obj && \
43+
cd /root/gcc-15 && \
44+
curl -L https://github.com/gcc-mirror/gcc/archive/releases/gcc-15.tar.gz \
45+
| tar -xz --strip-components=1 && \
46+
cd /root/gcc-15/obj && ../configure --enable-languages=c,c++,lto --prefix=/opt/gcc-15 --disable-checking --disable-bootstrap && \
47+
make -j3 && \
48+
make -j3 install && \
49+
update-alternatives --install /usr/bin/gcc gcc /opt/gcc-15/bin/gcc 150 --slave /usr/bin/g++ g++ /opt/gcc-15/bin/g++ && \
50+
cd /root && rm -rf gcc-15
51+
52+
# GCC master
53+
RUN mkdir -p /root/gcc-master/obj && \
54+
cd /root/gcc-master && \
55+
curl -L https://github.com/gcc-mirror/gcc/archive/master.tar.gz \
56+
| tar -xz --strip-components=1 && \
57+
cd /root/gcc-master/obj && ../configure --enable-languages=c,c++,lto --prefix=/opt/gcc-master --disable-checking --disable-bootstrap && \
58+
make -j3 && \
59+
make -j3 install && \
60+
cd /root && rm -rf gcc-master
61+
62+
CMD ["/bin/bash"]
63+

LICENSES/CC0-1.0.txt

+121
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
Creative Commons Legal Code
2+
3+
CC0 1.0 Universal
4+
5+
CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE
6+
LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN
7+
ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS
8+
INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES
9+
REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS
10+
PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM
11+
THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED
12+
HEREUNDER.
13+
14+
Statement of Purpose
15+
16+
The laws of most jurisdictions throughout the world automatically confer
17+
exclusive Copyright and Related Rights (defined below) upon the creator
18+
and subsequent owner(s) (each and all, an "owner") of an original work of
19+
authorship and/or a database (each, a "Work").
20+
21+
Certain owners wish to permanently relinquish those rights to a Work for
22+
the purpose of contributing to a commons of creative, cultural and
23+
scientific works ("Commons") that the public can reliably and without fear
24+
of later claims of infringement build upon, modify, incorporate in other
25+
works, reuse and redistribute as freely as possible in any form whatsoever
26+
and for any purposes, including without limitation commercial purposes.
27+
These owners may contribute to the Commons to promote the ideal of a free
28+
culture and the further production of creative, cultural and scientific
29+
works, or to gain reputation or greater distribution for their Work in
30+
part through the use and efforts of others.
31+
32+
For these and/or other purposes and motivations, and without any
33+
expectation of additional consideration or compensation, the person
34+
associating CC0 with a Work (the "Affirmer"), to the extent that he or she
35+
is an owner of Copyright and Related Rights in the Work, voluntarily
36+
elects to apply CC0 to the Work and publicly distribute the Work under its
37+
terms, with knowledge of his or her Copyright and Related Rights in the
38+
Work and the meaning and intended legal effect of CC0 on those rights.
39+
40+
1. Copyright and Related Rights. A Work made available under CC0 may be
41+
protected by copyright and related or neighboring rights ("Copyright and
42+
Related Rights"). Copyright and Related Rights include, but are not
43+
limited to, the following:
44+
45+
i. the right to reproduce, adapt, distribute, perform, display,
46+
communicate, and translate a Work;
47+
ii. moral rights retained by the original author(s) and/or performer(s);
48+
iii. publicity and privacy rights pertaining to a person's image or
49+
likeness depicted in a Work;
50+
iv. rights protecting against unfair competition in regards to a Work,
51+
subject to the limitations in paragraph 4(a), below;
52+
v. rights protecting the extraction, dissemination, use and reuse of data
53+
in a Work;
54+
vi. database rights (such as those arising under Directive 96/9/EC of the
55+
European Parliament and of the Council of 11 March 1996 on the legal
56+
protection of databases, and under any national implementation
57+
thereof, including any amended or successor version of such
58+
directive); and
59+
vii. other similar, equivalent or corresponding rights throughout the
60+
world based on applicable law or treaty, and any national
61+
implementations thereof.
62+
63+
2. Waiver. To the greatest extent permitted by, but not in contravention
64+
of, applicable law, Affirmer hereby overtly, fully, permanently,
65+
irrevocably and unconditionally waives, abandons, and surrenders all of
66+
Affirmer's Copyright and Related Rights and associated claims and causes
67+
of action, whether now known or unknown (including existing as well as
68+
future claims and causes of action), in the Work (i) in all territories
69+
worldwide, (ii) for the maximum duration provided by applicable law or
70+
treaty (including future time extensions), (iii) in any current or future
71+
medium and for any number of copies, and (iv) for any purpose whatsoever,
72+
including without limitation commercial, advertising or promotional
73+
purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each
74+
member of the public at large and to the detriment of Affirmer's heirs and
75+
successors, fully intending that such Waiver shall not be subject to
76+
revocation, rescission, cancellation, termination, or any other legal or
77+
equitable action to disrupt the quiet enjoyment of the Work by the public
78+
as contemplated by Affirmer's express Statement of Purpose.
79+
80+
3. Public License Fallback. Should any part of the Waiver for any reason
81+
be judged legally invalid or ineffective under applicable law, then the
82+
Waiver shall be preserved to the maximum extent permitted taking into
83+
account Affirmer's express Statement of Purpose. In addition, to the
84+
extent the Waiver is so judged Affirmer hereby grants to each affected
85+
person a royalty-free, non transferable, non sublicensable, non exclusive,
86+
irrevocable and unconditional license to exercise Affirmer's Copyright and
87+
Related Rights in the Work (i) in all territories worldwide, (ii) for the
88+
maximum duration provided by applicable law or treaty (including future
89+
time extensions), (iii) in any current or future medium and for any number
90+
of copies, and (iv) for any purpose whatsoever, including without
91+
limitation commercial, advertising or promotional purposes (the
92+
"License"). The License shall be deemed effective as of the date CC0 was
93+
applied by Affirmer to the Work. Should any part of the License for any
94+
reason be judged legally invalid or ineffective under applicable law, such
95+
partial invalidity or ineffectiveness shall not invalidate the remainder
96+
of the License, and in such case Affirmer hereby affirms that he or she
97+
will not (i) exercise any of his or her remaining Copyright and Related
98+
Rights in the Work or (ii) assert any associated claims and causes of
99+
action with respect to the Work, in either case contrary to Affirmer's
100+
express Statement of Purpose.
101+
102+
4. Limitations and Disclaimers.
103+
104+
a. No trademark or patent rights held by Affirmer are waived, abandoned,
105+
surrendered, licensed or otherwise affected by this document.
106+
b. Affirmer offers the Work as-is and makes no representations or
107+
warranties of any kind concerning the Work, express, implied,
108+
statutory or otherwise, including without limitation warranties of
109+
title, merchantability, fitness for a particular purpose, non
110+
infringement, or the absence of latent or other defects, accuracy, or
111+
the present or absence of errors, whether or not discoverable, all to
112+
the greatest extent permissible under applicable law.
113+
c. Affirmer disclaims responsibility for clearing rights of other persons
114+
that may apply to the Work or any use thereof, including without
115+
limitation any person's Copyright and Related Rights in the Work.
116+
Further, Affirmer disclaims responsibility for obtaining any necessary
117+
consents, permissions or other rights required for any use of the
118+
Work.
119+
d. Affirmer understands and acknowledges that Creative Commons is not a
120+
party to this document and has no duty or obligation with respect to
121+
this CC0 or use of the Work.

0 commit comments

Comments
 (0)