1+ FROM ubuntu:18.04 AS base
2+
3+ ENV DEBIAN_FRONTEND=noninteractive
4+
5+ ARG OPENSSL_VERSION=3.0.8
6+
7+ # ##############################################################################
8+ # Install prereqs
9+ # ##############################################################################
10+ RUN apt-get update -qq \
11+ && apt-get -y install \
12+ git \
13+ clang-format \
14+ curl \
15+ build-essential \
16+ wget \
17+ libc6-dbg \
18+ softhsm \
19+ zlib1g-dev \
20+ libssl-dev \
21+ && apt-get clean
22+
23+ # ##############################################################################
24+ # Install OpenSSL 3.0.8
25+ # ##############################################################################
26+ WORKDIR /tmp
27+ RUN wget https://www.openssl.org/source/openssl-${OPENSSL_VERSION}.tar.gz \
28+ && tar -zxvf openssl-${OPENSSL_VERSION}.tar.gz \
29+ && cd openssl-${OPENSSL_VERSION} \
30+ && ./config \
31+ && make \
32+ && make install \
33+ && ldconfig
34+
35+ # ##############################################################################
36+ # Install pre-built CMake
37+ # ##############################################################################
38+ WORKDIR /tmp
39+ RUN curl -sSL https://github.com/Kitware/CMake/releases/download/v3.24.0/cmake-3.24.0.tar.gz -o cmake-3.24.0.tar.gz \
40+ && tar -zxvf cmake-3.24.0.tar.gz \
41+ && cd cmake-3.24.0 \
42+ && ./bootstrap \
43+ && make -j 2 \
44+ && make install
45+
46+ # ##############################################################################
47+ # Clone and build Google Test
48+ # ##############################################################################
49+ WORKDIR /tmp
50+ RUN wget --ca-certificate=/etc/ssl/certs/ca-certificates.crt https://github.com/google/googletest/archive/release-1.12.0.tar.gz \
51+ && tar xf release-1.12.0.tar.gz \
52+ && cd googletest-release-1.12.0 \
53+ && cmake -DBUILD_SHARED_LIBS=ON . \
54+ && make \
55+ && cp -a googletest/include/gtest /usr/include/ \
56+ && cp -a googlemock/include/gmock /usr/include/ \
57+ && cp -a lib/* /usr/lib/
58+
59+ # ##############################################################################
60+ # Clone and build valgrind
61+ # ##############################################################################
62+ WORKDIR /tmp
63+ RUN wget --ca-certificate=/etc/ssl/certs/ca-certificates.crt https://sourceware.org/pub/valgrind/valgrind-3.19.0.tar.bz2 \
64+ && tar jxvf valgrind-3.19.0.tar.bz2 \
65+ && cd valgrind-3.19.0 \
66+ && ./configure \
67+ && make \
68+ && make install
69+
70+ # ##############################################################################
71+ # Install cppcheck
72+ # ##############################################################################
73+ WORKDIR /tmp
74+ RUN wget --ca-certificate=/etc/ssl/certs/ca-certificates.crt https://github.com/danmar/cppcheck/archive/2.9.tar.gz \
75+ && tar zxvf 2.9.tar.gz \
76+ && cd cppcheck-2.9 \
77+ && mkdir build \
78+ && cd build \
79+ && cmake .. \
80+ && make install
81+
82+ # ##############################################################################
83+ # Install Aws Iot Device Sdk Cpp v2
84+ # ##############################################################################
85+ WORKDIR /home/aws-iot-device-client
86+ RUN mkdir sdk-cpp-workspace \
87+ && cd sdk-cpp-workspace \
88+ && git clone https://github.com/aws/aws-iot-device-sdk-cpp-v2.git \
89+ && cd aws-iot-device-sdk-cpp-v2 \
90+ && git checkout 74c8b683ebe5b1cbf484f6acaa281f56aaa63948 \
91+ && git submodule update --init --recursive \
92+ && cd .. \
93+ && mkdir aws-iot-device-sdk-cpp-v2-build \
94+ && cd aws-iot-device-sdk-cpp-v2-build \
95+ && cmake -DCMAKE_INSTALL_PREFIX="/usr" -DUSE_OPENSSL=ON -DBUILD_DEPS=ON ../aws-iot-device-sdk-cpp-v2 \
96+ && cmake --build . --target install
97+
98+ COPY ./.github/docker-images/oss-compliance /root/oss-compliance
99+ RUN HOME_DIR=/root \
100+ && chmod +x ${HOME_DIR}/oss-compliance/generate-oss-compliance.sh \
101+ && chmod +x ${HOME_DIR}/oss-compliance/test/test-oss-compliance.sh \
102+ && bash ${HOME_DIR}/oss-compliance/generate-oss-compliance.sh ${HOME_DIR} \
103+ && rm -rf ${HOME_DIR}/oss-compliance*
104+
105+ ADD .github/docker-images/entry-script.sh /home/entry-script
106+ RUN chmod a+x /home/entry-script
107+ ENTRYPOINT ["/home/entry-script" ]
108+
109+ FROM base AS deploy
110+
111+ # ##############################################################################
112+ # Copy and build device client
113+ # ##############################################################################
114+ COPY . /root/aws-iot-device-client
115+ RUN mkdir -p /root/aws-iot-device-client/build \
116+ && cd /root/aws-iot-device-client/build \
117+ && cmake .. \
118+ && cmake --build . --target aws-iot-device-client
119+
120+ ENTRYPOINT ["/root/aws-iot-device-client/build/aws-iot-device-client" ]
0 commit comments