1
- FROM ubuntu:24.10 AS init
1
+ FROM ubuntu:24.04 AS init
2
2
3
3
ENV WORKDIR=/app
4
4
WORKDIR ${WORKDIR}
5
5
6
6
RUN apt-get -y update && \
7
- apt-get -y install --no-install-recommends --no-install-suggests make && \
8
- rm -rf /var/lib/apt/lists/*
7
+ apt-get -y install --no-install-recommends --no-install-suggests make && \
8
+ rm -rf /var/lib/apt/lists/*
9
9
10
10
FROM init AS builder
11
11
12
12
# build tools
13
- RUN apt-get -y update && \
14
- apt-get -y install --no-install-recommends --no-install-suggests build-essential cmake g++ make pkg-config && \
15
- rm -rf /var/lib/apt/lists/*
13
+
14
+ RUN apt-get update && \
15
+ apt-get -y install --no-install-recommends --no-install-suggests gnupg software-properties-common && \
16
+ rm -rf /var/lib/apt/lists/*
17
+ ADD https://apt.llvm.org/llvm-snapshot.gpg.key llvm-snapshot.gpg.key
18
+ RUN apt-key add llvm-snapshot.gpg.key && \
19
+ apt-add-repository "deb http://apt.llvm.org/noble/ llvm-toolchain-noble main" && \
20
+ apt-get -y update && \
21
+ apt-get -y install --no-install-recommends --no-install-suggests build-essential cmake g++ make pkg-config && \
22
+ apt-get -y install --no-install-recommends --no-install-suggests clang-format && \
23
+ rm -rf /var/lib/apt/lists/*
16
24
17
25
# vcpkg Package Manager
18
26
ADD https://github.com/microsoft/vcpkg/archive/refs/tags/2024.08.23.tar.gz vcpkg.tar.gz
19
27
RUN apt-get -y update && \
20
- apt-get -y install --no-install-recommends --no-install-suggests \
21
- ca-certificates curl git unzip zip && \
22
- rm -rf /var/lib/apt/lists/* && \
23
- mkdir /opt/vcpkg && \
24
- tar xf vcpkg.tar.gz --strip-components=1 -C /opt/vcpkg && \
25
- /opt/vcpkg/bootstrap-vcpkg.sh && \
26
- ln -s /opt/vcpkg/vcpkg /usr/local/bin/vcpkg && \
27
- rm -rf vcpkg.tar.gz && \
28
- vcpkg version
28
+ apt-get -y install --no-install-recommends --no-install-suggests \
29
+ ca-certificates curl git unzip zip && \
30
+ rm -rf /var/lib/apt/lists/* && \
31
+ mkdir /opt/vcpkg && \
32
+ tar xf vcpkg.tar.gz --strip-components=1 -C /opt/vcpkg && \
33
+ /opt/vcpkg/bootstrap-vcpkg.sh && \
34
+ ln -s /opt/vcpkg/vcpkg /usr/local/bin/vcpkg && \
35
+ rm -rf vcpkg.tar.gz && \
36
+ vcpkg version
29
37
ENV VCPKG_ROOT=/opt/vcpkg
30
38
31
39
# sources
@@ -37,31 +45,31 @@ COPY ./Makefile ${WORKDIR}/
37
45
38
46
# dependencies
39
47
RUN vcpkg --x-wait-for-lock integrate install && \
40
- vcpkg --x-wait-for-lock install
48
+ vcpkg --x-wait-for-lock install
41
49
42
50
LABEL vcpkg=enabled
43
51
44
52
# build
45
53
RUN ls -alhR && \
46
- mkdir build && \
47
- make build && \
48
- ls -alhR
54
+ mkdir build && \
55
+ make build && \
56
+ ls -alhR
49
57
50
58
CMD ["make" , "build" ]
51
59
52
60
FROM builder AS development
53
61
54
62
# CMD []
55
63
56
- FROM init AS lint
64
+ FROM builder AS lint
57
65
58
66
RUN apt-get -y update && \
59
- apt-get -y install --no-install-recommends --no-install-suggests dialog apt-utils && \
60
- apt-get -y install --no-install-recommends --no-install-suggests yamllint && \
61
- apt-get -y install --no-install-recommends --no-install-suggests nodejs npm && \
62
- apt-get -y install --no-install-recommends --no-install-suggests cppcheck && \
63
- rm -rf /var/lib/apt/lists/* && \
64
- npm install -g --ignore-scripts markdownlint-cli
67
+ apt-get -y install --no-install-recommends --no-install-suggests dialog apt-utils && \
68
+ apt-get -y install --no-install-recommends --no-install-suggests yamllint && \
69
+ apt-get -y install --no-install-recommends --no-install-suggests nodejs npm && \
70
+ apt-get -y install --no-install-recommends --no-install-suggests cppcheck && \
71
+ rm -rf /var/lib/apt/lists/* && \
72
+ npm install -g --ignore-scripts markdownlint-cli
65
73
66
74
# Code source
67
75
COPY ./src ${WORKDIR}/src
@@ -83,8 +91,8 @@ CMD ["make", "lint"]
83
91
FROM development AS testing
84
92
85
93
RUN apt-get -y update && \
86
- apt-get -y install --no-install-recommends --no-install-suggests gcovr && \
87
- rm -rf /var/lib/apt/lists/*
94
+ apt-get -y install --no-install-recommends --no-install-suggests gcovr && \
95
+ rm -rf /var/lib/apt/lists/*
88
96
89
97
COPY --from=builder ${WORKDIR}/build ${WORKDIR}/
90
98
0 commit comments