From 1141f9bee9cac77d0634af1a5f04b524116e4174 Mon Sep 17 00:00:00 2001 From: Andras Fekete Date: Fri, 22 Sep 2023 14:55:01 -0400 Subject: [PATCH 1/8] Use wolfssl/wolfssl-builder as the container name --- Docker/run.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Docker/run.sh b/Docker/run.sh index c2f41ac24..3820425bb 100755 --- a/Docker/run.sh +++ b/Docker/run.sh @@ -5,9 +5,9 @@ echo "Running with \"${*}\"..." # Assume we're in wolfssl/Docker WOLFSSL_DIR=$(builtin cd ${BASH_SOURCE%/*}/..; pwd) -docker build -t wolfssl --build-arg UID=$(id -u) --build-arg GID=$(id -g) "${WOLFSSL_DIR}/Docker" && \ - docker run --rm -it -v ${HOME}/.gitconfig:/home/docker/.gitconfig:ro -v ${HOME}/.ssh:/home/docker/.ssh:ro -v "${WOLFSSL_DIR}:/tmp/wolfssl" -w /tmp/wolfssl wolfssl /bin/bash -c "./autogen.sh && ./configure ${*@Q} && make" && \ - docker run --rm -it -v ${HOME}/.gitconfig:/home/docker/.gitconfig:ro -v ${HOME}/.ssh:/home/docker/.ssh:ro -v "${WOLFSSL_DIR}:/tmp/wolfssl" -w /tmp/wolfssl wolfssl /bin/bash +docker build -t wolfssl/wolfssl-builder --build-arg UID=$(id -u) --build-arg GID=$(id -g) "${WOLFSSL_DIR}/Docker" && \ + docker run --rm -it -v ${HOME}/.gitconfig:/home/docker/.gitconfig:ro -v ${HOME}/.ssh:/home/docker/.ssh:ro -v "${WOLFSSL_DIR}:/tmp/wolfssl" -w /tmp/wolfssl wolfssl/wolfssl-builder /bin/bash -c "./autogen.sh && ./configure ${*@Q} && make" && \ + docker run --rm -it -v ${HOME}/.gitconfig:/home/docker/.gitconfig:ro -v ${HOME}/.ssh:/home/docker/.ssh:ro -v "${WOLFSSL_DIR}:/tmp/wolfssl" -w /tmp/wolfssl wolfssl/wolfssl-builder /bin/bash exitval=$? echo "Exited with error code $exitval" From f0d0a8782237536f26bfcf040d09a0ec601c9419 Mon Sep 17 00:00:00 2001 From: Andras Fekete Date: Fri, 22 Sep 2023 14:55:30 -0400 Subject: [PATCH 2/8] Add in working cross-compiler container and builder script --- Docker/Dockerfile.cross-compiler | 18 ++++++++++++++++++ Docker/buildAndPush.sh | 17 +++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 Docker/Dockerfile.cross-compiler create mode 100755 Docker/buildAndPush.sh diff --git a/Docker/Dockerfile.cross-compiler b/Docker/Dockerfile.cross-compiler new file mode 100644 index 000000000..6819f3fc7 --- /dev/null +++ b/Docker/Dockerfile.cross-compiler @@ -0,0 +1,18 @@ +ARG DOCKER_BASE_IMAGE=wolfssl/wolfssl-builder +FROM $DOCKER_BASE_IMAGE + +USER root + +ARG DEPS_TESTING=gcc-arm-linux-gnueabi gcc-aarch64-linux-gnu +RUN DEBIAN_FRONTEND=noninteractive apt update && apt install -y apt-utils \ + && apt install -y ${DEPS_TESTING} \ + && apt clean -y && rm -rf /var/lib/apt/lists/* + +ARG JENKINS_UID=1009 +ARG JENKINS_GID=1010 +RUN groupadd -f -g ${JENKINS_GID} jenkins && ( getent passwd ${JENKINS_UID} || useradd -ms /bin/bash jenkins -u ${JENKINS_UID} -g ${JENKINS_GID} ) + +# Add github.com as an SSH known host +RUN ssh -o StrictHostKeyChecking=no -T git@github.com; cat ~/.ssh/known_hosts >> /etc/ssh/ssh_known_hosts + +USER docker diff --git a/Docker/buildAndPush.sh b/Docker/buildAndPush.sh new file mode 100755 index 000000000..b3f2dc033 --- /dev/null +++ b/Docker/buildAndPush.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +DOCKER_BUILD_OPTIONS="$1" +if [ "${DOCKER_BASE_IMAGE}" != "" ]; then + DOCKER_BUILD_OPTIONS+=" --build-arg DOCKER_BASE_IMAGE=${DOCKER_BASE_IMAGE}" +fi + +CUR_DATE=$(date -u +%F) +echo "Building wolfssl/wolfssl-builder:${CUR_DATE} as ${DOCKER_BUILD_OPTIONS}" +docker build -t wolfssl/wolfssl-builder:${CUR_DATE} ${DOCKER_BUILD_OPTIONS} "${WOLFSSL_DIR}/Docker" && \ + docker push wolfssl/wolfssl-builder:${CUR_DATE} && \ + docker tag wolfssl/wolfssl-builder:${CUR_DATE} wolfssl/wolfssl-builder:latest && \ + docker push wolfssl/wolfssl-builder:latest && \ + docker build -t wolfssl/testing-cross-compiler:${CUR_DATE} "${WOLFSSL_DIR}/Docker" -f Dockerfile.cross-compiler && \ + docker push wolfssl/testing-cross-compiler:${CUR_DATE} && \ + docker tag wolfssl/testing-cross-compiler:${CUR_DATE} wolfssl/testing-cross-compiler:latest && \ + docker push wolfssl/testing-cross-compiler:latest From 717249c0cc6a27fdb757705d565ed17f368690a2 Mon Sep 17 00:00:00 2001 From: Andras Fekete Date: Fri, 22 Sep 2023 14:55:55 -0400 Subject: [PATCH 3/8] Trust github.com in container, add in possible Jenkins userIDs --- Docker/Dockerfile | 8 +++++++- Docker/Dockerfile.cross-compiler | 7 ------- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/Docker/Dockerfile b/Docker/Dockerfile index 835d4783c..388169e6d 100644 --- a/Docker/Dockerfile +++ b/Docker/Dockerfile @@ -18,6 +18,9 @@ ARG UID=1000 ARG GID=1000 RUN groupadd -f -g ${GID} docker && ( getent passwd ${UID} || useradd -ms /bin/bash ${USER} -u ${UID} -g ${GID} ) +# Add github.com as an SSH known host +RUN ssh -o StrictHostKeyChecking=no -T git@github.com; cat ~/.ssh/known_hosts >> /etc/ssh/ssh_known_hosts + # install ccache RUN mkdir -p /opt/ccache/bin && for prog in gcc g++ cc c++ cpp arm-none-eabi-c++ arm-none-eabi-cpp arm-none-eabi-gcc arm-none-eabi-g++; do ln -s /usr/bin/ccache /opt/ccache/bin/$(basename $prog); done ENV PATH /opt/ccache/bin:$PATH @@ -44,4 +47,7 @@ RUN setcap 'CAP_NET_RAW+eip CAP_NET_ADMIN+eip' /usr/bin/tcpdump # Allow non-root to use gdb on processes (will need SYS_PTRACE capability when running the container) RUN setcap 'CAP_SYS_PTRACE+eip' /usr/bin/gdb -USER ${UID}:${GID} \ No newline at end of file +# Add in Jenkins userID +RUN for i in $(seq 1001 1010); do ( getent passwd ${i} || useradd -ms /bin/bash jenkins${i} -u ${i} -g ${GID} ); done + +USER ${UID}:${GID} diff --git a/Docker/Dockerfile.cross-compiler b/Docker/Dockerfile.cross-compiler index 6819f3fc7..ed668501f 100644 --- a/Docker/Dockerfile.cross-compiler +++ b/Docker/Dockerfile.cross-compiler @@ -8,11 +8,4 @@ RUN DEBIAN_FRONTEND=noninteractive apt update && apt install -y apt-utils \ && apt install -y ${DEPS_TESTING} \ && apt clean -y && rm -rf /var/lib/apt/lists/* -ARG JENKINS_UID=1009 -ARG JENKINS_GID=1010 -RUN groupadd -f -g ${JENKINS_GID} jenkins && ( getent passwd ${JENKINS_UID} || useradd -ms /bin/bash jenkins -u ${JENKINS_UID} -g ${JENKINS_GID} ) - -# Add github.com as an SSH known host -RUN ssh -o StrictHostKeyChecking=no -T git@github.com; cat ~/.ssh/known_hosts >> /etc/ssh/ssh_known_hosts - USER docker From d95ce57eea88cb30243da8ab8afe3fa703a6c0b7 Mon Sep 17 00:00:00 2001 From: Andras Fekete Date: Wed, 27 Sep 2023 15:31:01 -0400 Subject: [PATCH 4/8] Fix script errors --- Docker/Dockerfile.cross-compiler | 4 ++-- Docker/buildAndPush.sh | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Docker/Dockerfile.cross-compiler b/Docker/Dockerfile.cross-compiler index ed668501f..a89a9d5b5 100644 --- a/Docker/Dockerfile.cross-compiler +++ b/Docker/Dockerfile.cross-compiler @@ -3,8 +3,8 @@ FROM $DOCKER_BASE_IMAGE USER root -ARG DEPS_TESTING=gcc-arm-linux-gnueabi gcc-aarch64-linux-gnu -RUN DEBIAN_FRONTEND=noninteractive apt update && apt install -y apt-utils \ +ARG DEPS_TESTING="gcc-arm-linux-gnueabi gcc-aarch64-linux-gnu" +RUN DEBIAN_FRONTEND=noninteractive apt update \ && apt install -y ${DEPS_TESTING} \ && apt clean -y && rm -rf /var/lib/apt/lists/* diff --git a/Docker/buildAndPush.sh b/Docker/buildAndPush.sh index b3f2dc033..84813ab8a 100755 --- a/Docker/buildAndPush.sh +++ b/Docker/buildAndPush.sh @@ -11,7 +11,7 @@ docker build -t wolfssl/wolfssl-builder:${CUR_DATE} ${DOCKER_BUILD_OPTIONS} "${W docker push wolfssl/wolfssl-builder:${CUR_DATE} && \ docker tag wolfssl/wolfssl-builder:${CUR_DATE} wolfssl/wolfssl-builder:latest && \ docker push wolfssl/wolfssl-builder:latest && \ - docker build -t wolfssl/testing-cross-compiler:${CUR_DATE} "${WOLFSSL_DIR}/Docker" -f Dockerfile.cross-compiler && \ + docker build --build-arg DOCKER_BASE_IMAGE=wolfssl/wolfssl-builder:${CUR_DATE} -t wolfssl/testing-cross-compiler:${CUR_DATE} "${WOLFSSL_DIR}/Docker" -f Dockerfile.cross-compiler && \ docker push wolfssl/testing-cross-compiler:${CUR_DATE} && \ docker tag wolfssl/testing-cross-compiler:${CUR_DATE} wolfssl/testing-cross-compiler:latest && \ docker push wolfssl/testing-cross-compiler:latest From 0f4f677ea4649a9d7d5414856b32c7588d99b9f6 Mon Sep 17 00:00:00 2001 From: Andras Fekete Date: Thu, 28 Sep 2023 10:17:30 -0400 Subject: [PATCH 5/8] Show logs on test failure --- .github/workflows/multi-compiler.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/multi-compiler.yml b/.github/workflows/multi-compiler.yml index 3099139c9..8fecf7455 100644 --- a/.github/workflows/multi-compiler.yml +++ b/.github/workflows/multi-compiler.yml @@ -34,3 +34,7 @@ jobs: CC: ${{ matrix.CC }} CXX: ${{ matrix.CXX }} run: ./autogen.sh && ./configure && make && make dist + - name: Show log on errors + if: ${{ failure() }} + run: | + cat config.log From 5e3f00f6f7ccd8d70d195b0549086cd24a51c1a8 Mon Sep 17 00:00:00 2001 From: Andras Fekete Date: Thu, 28 Sep 2023 10:29:20 -0400 Subject: [PATCH 6/8] Specify the OS version 'ubuntu-latest' doesn't have clang-12 in it anymore --- .github/workflows/multi-compiler.yml | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/.github/workflows/multi-compiler.yml b/.github/workflows/multi-compiler.yml index 8fecf7455..a7d5da0d7 100644 --- a/.github/workflows/multi-compiler.yml +++ b/.github/workflows/multi-compiler.yml @@ -12,19 +12,26 @@ jobs: include: - CC: gcc-9 CXX: g++-9 + OS: ubuntu-latest - CC: gcc-10 CXX: g++-10 + OS: ubuntu-latest - CC: gcc-11 CXX: g++-11 + OS: ubuntu-latest - CC: gcc-12 CXX: g++-12 + OS: ubuntu-latest - CC: clang-12 CXX: clang++-12 + OS: ubuntu-20.04 - CC: clang-13 CXX: clang++-13 + OS: ubuntu-latest - CC: clang-14 CXX: clang++-14 - runs-on: ubuntu-latest + OS: ubuntu-latest + runs-on: ${{ matrix.OS }} # This should be a safe limit for the tests to run. timeout-minutes: 4 steps: From b88754bb649591e42296e97484061ded6ba34123 Mon Sep 17 00:00:00 2001 From: Andras Fekete Date: Thu, 28 Sep 2023 10:29:36 -0400 Subject: [PATCH 7/8] Add in clang-10 and clang-11 tests --- .github/workflows/multi-compiler.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/multi-compiler.yml b/.github/workflows/multi-compiler.yml index a7d5da0d7..48512df29 100644 --- a/.github/workflows/multi-compiler.yml +++ b/.github/workflows/multi-compiler.yml @@ -22,6 +22,12 @@ jobs: - CC: gcc-12 CXX: g++-12 OS: ubuntu-latest + - CC: clang-10 + CXX: clang++-10 + OS: ubuntu-20.04 + - CC: clang-11 + CXX: clang++-11 + OS: ubuntu-20.04 - CC: clang-12 CXX: clang++-12 OS: ubuntu-20.04 From 9fdb3cf17a35c91020b1837f7bf114bf89ab2eaf Mon Sep 17 00:00:00 2001 From: Andras Fekete Date: Thu, 28 Sep 2023 10:48:03 -0400 Subject: [PATCH 8/8] Appease test scripts --- Docker/include.am | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Docker/include.am b/Docker/include.am index dd78194d4..4dc5f5ff3 100644 --- a/Docker/include.am +++ b/Docker/include.am @@ -3,9 +3,11 @@ # All paths should be given relative to the root EXTRA_DIST+= Docker/Dockerfile +EXTRA_DIST+= Docker/Dockerfile.cross-compiler EXTRA_DIST+= Docker/run.sh EXTRA_DIST+= Docker/README.md +ignore_files+=Docker/buildAndPush.sh ignore_files+=Docker/OpenWRT/Dockerfile ignore_files+=Docker/OpenWRT/runTests.sh ignore_files+=Docker/OpenWRT/README.md