From 8266f01d504e668e9be1aac4915143459e1354c7 Mon Sep 17 00:00:00 2001 From: Denys Fedoryshchenko Date: Tue, 16 Jul 2024 00:42:55 +0300 Subject: [PATCH] workflows,dockerfiles: Add basic build tests (#1011) Add simple build tests using github workflows. This is initial commit, and i suggest to inspect if all dependencies installed. Signed-off-by: Denys Fedoryshchenko --- .github/workflows/docker-builds.yml | 25 +++++++++++++++++++++++++ tests/Dockerfile.debian | 17 +++++++++++++++++ tests/Dockerfile.debian-clang-15 | 25 +++++++++++++++++++++++++ tests/Dockerfile.debian-gcc-12 | 18 ++++++++++++++++++ tests/Dockerfile.ubuntu-24.04 | 20 ++++++++++++++++++++ tests/Dockerfile.ubuntu-24.10 | 20 ++++++++++++++++++++ 6 files changed, 125 insertions(+) create mode 100644 .github/workflows/docker-builds.yml create mode 100644 tests/Dockerfile.debian create mode 100644 tests/Dockerfile.debian-clang-15 create mode 100644 tests/Dockerfile.debian-gcc-12 create mode 100644 tests/Dockerfile.ubuntu-24.04 create mode 100644 tests/Dockerfile.ubuntu-24.10 diff --git a/.github/workflows/docker-builds.yml b/.github/workflows/docker-builds.yml new file mode 100644 index 0000000..9e899d2 --- /dev/null +++ b/.github/workflows/docker-builds.yml @@ -0,0 +1,25 @@ +name: Run docker builds + +on: + workflow_dispatch: + pull_request: + push: + branches: + - master + +jobs: + build_in_docker: + strategy: + matrix: + # gcc-13+,clang-16+ will fail due broken capnp supplied with debian bookworm + os: [debian, debian-gcc-12, debian-clang-15, ubuntu-24.04, ubuntu-24.10] + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + + - name: chdir + run: cd $GITHUB_WORKSPACE + + - name: Build Docker image + run: docker build -t debian -f tests/Dockerfile.${{ matrix.os }} . diff --git a/tests/Dockerfile.debian b/tests/Dockerfile.debian new file mode 100644 index 0000000..c9bc694 --- /dev/null +++ b/tests/Dockerfile.debian @@ -0,0 +1,17 @@ +FROM debian:bookworm + +# non-interactive +ENV DEBIAN_FRONTEND noninteractive + +# install build dependencies +RUN apt-get update +RUN apt-get install -y --no-install-recommends build-essential git ca-certificates cmake libssl-dev\ + capnproto libcapnp-dev libelf-dev libbpf-dev libpcap-dev libgrpc-dev libgrpc++-dev libprotobuf-dev\ + protobuf-compiler libprotoc-dev libprotobuf-dev protobuf-compiler-grpc libboost-dev\ + libboost-serialization-dev libboost-thread-dev libboost-regex-dev libboost-program-options-dev\ + libmongoc-dev liblog4cpp5-dev libncurses5-dev + +COPY src/ /src/ +WORKDIR /src +RUN mkdir build && cd build && cmake .. -DLINK_WITH_ABSL=ON\ + && make -j$(nproc) diff --git a/tests/Dockerfile.debian-clang-15 b/tests/Dockerfile.debian-clang-15 new file mode 100644 index 0000000..ac5d8be --- /dev/null +++ b/tests/Dockerfile.debian-clang-15 @@ -0,0 +1,25 @@ +FROM debian:bookworm + +# non-interactive +ENV DEBIAN_FRONTEND noninteractive + +# install build dependencies +RUN apt-get update +RUN apt-get install -y --no-install-recommends build-essential git ca-certificates cmake libssl-dev\ + capnproto libcapnp-dev libelf-dev libbpf-dev libpcap-dev libgrpc-dev libgrpc++-dev libprotobuf-dev\ + protobuf-compiler libprotoc-dev libprotobuf-dev protobuf-compiler-grpc libboost-dev\ + libboost-serialization-dev libboost-thread-dev libboost-regex-dev libboost-program-options-dev\ + libmongoc-dev liblog4cpp5-dev libncurses-dev + +# install clang-15 +RUN apt-get install -y --no-install-recommends clang-15 + +# set clang-15 as default compiler +RUN update-alternatives --install /usr/bin/cc cc /usr/bin/clang-15 100 +RUN update-alternatives --install /usr/bin/c++ c++ /usr/bin/clang++-15 100 + + +COPY src/ /src/ +WORKDIR /src +RUN mkdir build && cd build && cmake .. -DLINK_WITH_ABSL=ON\ + && make -j$(nproc) diff --git a/tests/Dockerfile.debian-gcc-12 b/tests/Dockerfile.debian-gcc-12 new file mode 100644 index 0000000..3c41fd6 --- /dev/null +++ b/tests/Dockerfile.debian-gcc-12 @@ -0,0 +1,18 @@ +FROM gcc:12-bookworm + +# non-interactive +ENV DEBIAN_FRONTEND noninteractive + +# install build dependencies +RUN apt-get update +RUN apt-get install -y --no-install-recommends build-essential git ca-certificates cmake libssl-dev\ + capnproto libcapnp-dev libelf-dev libbpf-dev libpcap-dev libgrpc-dev libgrpc++-dev libprotobuf-dev\ + protobuf-compiler libprotoc-dev libprotobuf-dev protobuf-compiler-grpc libboost-dev\ + libboost-serialization-dev libboost-thread-dev libboost-regex-dev libboost-program-options-dev\ + libmongoc-dev liblog4cpp5-dev + + +COPY src/ /src/ +WORKDIR /src +RUN mkdir build && cd build && cmake .. -DLINK_WITH_ABSL=ON\ + && make -j$(nproc) diff --git a/tests/Dockerfile.ubuntu-24.04 b/tests/Dockerfile.ubuntu-24.04 new file mode 100644 index 0000000..95dcb73 --- /dev/null +++ b/tests/Dockerfile.ubuntu-24.04 @@ -0,0 +1,20 @@ +FROM ubuntu:24.04 + +# non-interactive +ENV DEBIAN_FRONTEND noninteractive + +# install build dependencies +RUN apt-get update +RUN apt-get install -y --no-install-recommends build-essential git ca-certificates cmake libssl-dev\ + capnproto libcapnp-dev libelf-dev libbpf-dev libpcap-dev libgrpc-dev libgrpc++-dev libprotobuf-dev\ + protobuf-compiler libprotoc-dev libprotobuf-dev protobuf-compiler-grpc libboost-dev\ + libboost-serialization-dev libboost-thread-dev libboost-regex-dev libboost-program-options-dev\ + libmongoc-dev liblog4cpp5-dev libncurses5-dev + +# absl +RUN apt-get install -y --no-install-recommends libabsl-dev + +COPY src/ /src/ +WORKDIR /src +RUN mkdir build && cd build && cmake .. -DLINK_WITH_ABSL=ON\ + && make diff --git a/tests/Dockerfile.ubuntu-24.10 b/tests/Dockerfile.ubuntu-24.10 new file mode 100644 index 0000000..9c6eb29 --- /dev/null +++ b/tests/Dockerfile.ubuntu-24.10 @@ -0,0 +1,20 @@ +FROM ubuntu:24.10 + +# non-interactive +ENV DEBIAN_FRONTEND noninteractive + +# install build dependencies +RUN apt-get update +RUN apt-get install -y --no-install-recommends build-essential git ca-certificates cmake libssl-dev\ + capnproto libcapnp-dev libelf-dev libbpf-dev libpcap-dev libgrpc-dev libgrpc++-dev libprotobuf-dev\ + protobuf-compiler libprotoc-dev libprotobuf-dev protobuf-compiler-grpc libboost-dev\ + libboost-serialization-dev libboost-thread-dev libboost-regex-dev libboost-program-options-dev\ + libmongoc-dev liblog4cpp5-dev libncurses5-dev + +# absl +RUN apt-get install -y --no-install-recommends libabsl-dev + +COPY src/ /src/ +WORKDIR /src +RUN mkdir build && cd build && cmake .. -DLINK_WITH_ABSL=ON\ + && make