Skip to content

Commit 316f324

Browse files
authored
Add ubuntu 18.04 base image build for Secure Tunneling executable build (#515)
* Add ubuntu 18.04 base image build for Secure Tunneling executable build
1 parent d2fce80 commit 316f324

File tree

3 files changed

+159
-3
lines changed

3 files changed

+159
-3
lines changed
Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
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"]

.github/workflows/base-images.yml

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,42 @@ jobs:
5555
tags: |
5656
public.ecr.aws/${{ env.ECR_BASE_REPO }}:x86_64-ubuntu-latest
5757
platforms: linux/amd64
58+
build-base-docker-image-ubuntu-18_04-x86_64:
59+
runs-on: ubuntu-latest
60+
permissions:
61+
id-token: write
62+
contents: read
63+
steps:
64+
- name: Configure AWS credentials using OIDC
65+
uses: aws-actions/configure-aws-credentials@v2
66+
with:
67+
role-to-assume: arn:aws:iam::${{ secrets.DC_AWS_ACCOUNT_ID }}:role/GitHubActionsOIDCRole
68+
aws-region: us-east-1
69+
- name: Login to ECR
70+
run: aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws
71+
- name: Checkout
72+
uses: actions/checkout@v2
73+
with:
74+
fetch-depth: 0
75+
- name: Set up QEMU
76+
uses: docker/setup-qemu-action@v2
77+
- name: Docker meta
78+
id: meta
79+
uses: docker/metadata-action@v4
80+
with:
81+
images: public.ecr.aws/${{ env.ECR_REPO }}
82+
- name: Set up Docker Buildx
83+
uses: docker/setup-buildx-action@v2
84+
- name: Build Ubuntu Base Image
85+
uses: docker/build-push-action@v3
86+
with:
87+
file: .github/docker-images/base-images/device-client/ubuntu-18.04/Dockerfile
88+
context: .
89+
target: base
90+
push: true
91+
tags: |
92+
public.ecr.aws/${{ env.ECR_BASE_REPO }}:x86_64-ubuntu-18.04
93+
platforms: linux/amd64
5894
build-base-docker-image-ubuntu-aarch64:
5995
runs-on: ubuntu-latest
6096
permissions:

.github/workflows/build.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -400,7 +400,7 @@ jobs:
400400
uses: docker/setup-qemu-action@v2
401401
- name: Build ${{ env.PACKAGE_NAME }}
402402
run: |
403-
export DOCKER_IMAGE=public.ecr.aws/${ECR_BASE_REPO}:x86_64-ubuntu-latest
403+
export DOCKER_IMAGE=public.ecr.aws/${ECR_BASE_REPO}:x86_64-ubuntu-18.04
404404
docker pull $DOCKER_IMAGE
405405
docker run --mount type=bind,source=$(pwd),target=/root/${{ env.PACKAGE_NAME }} --env GITHUB_REF $DOCKER_IMAGE --compile-mode=st_component_mode
406406
- name: Archive ST Ubuntu aarch64 Build Artifact
@@ -431,7 +431,7 @@ jobs:
431431
uses: docker/setup-qemu-action@v2
432432
- name: Build ${{ env.PACKAGE_NAME }}
433433
run: |
434-
export DOCKER_IMAGE=public.ecr.aws/${ECR_BASE_REPO}:x86_64-ubuntu-latest
434+
export DOCKER_IMAGE=public.ecr.aws/${ECR_BASE_REPO}:x86_64-ubuntu-18.04
435435
docker pull $DOCKER_IMAGE
436436
docker run --mount type=bind,source=$(pwd),target=/root/${{ env.PACKAGE_NAME }} --env GITHUB_REF $DOCKER_IMAGE --compile-mode=st_aarch64_cross_mode
437437
- name: Archive ST Ubuntu aarch64 Build Artifact
@@ -462,7 +462,7 @@ jobs:
462462
uses: docker/setup-qemu-action@v2
463463
- name: Build ${{ env.PACKAGE_NAME }}
464464
run: |
465-
export DOCKER_IMAGE=public.ecr.aws/${ECR_BASE_REPO}:x86_64-ubuntu-latest
465+
export DOCKER_IMAGE=public.ecr.aws/${ECR_BASE_REPO}:x86_64-ubuntu-18.04
466466
docker pull $DOCKER_IMAGE
467467
docker run --mount type=bind,source=$(pwd),target=/root/${{ env.PACKAGE_NAME }} --env GITHUB_REF $DOCKER_IMAGE --compile-mode=st_armhf_cross_mode
468468
- name: Archive st armhf32 Build Artifact

0 commit comments

Comments
 (0)