From 4a24a30ee6ddccceac8f6fc7771ac9abab617ad9 Mon Sep 17 00:00:00 2001 From: Pierre Lalet Date: Fri, 1 Mar 2024 01:46:38 +0100 Subject: [PATCH] CI: add a Docker build job --- .github/workflows/test.yml | 19 ++++++++++++++++++- docker/Dockerfile-local | 38 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 docker/Dockerfile-local diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 05c8984..87e3b23 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -1,5 +1,5 @@ # This file is part of masscanned. -# Copyright 2021 - The IVRE project +# Copyright 2021 - 2024 The IVRE project # # Masscanned is free software: you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -101,3 +101,20 @@ jobs: - name: Display logs run: echo STDOUT; cat test/res/masscanned.stdout && echo && echo STDERR && cat test/res/masscanned.stderr if: failure() + + docker: + runs-on: ubuntu-latest + steps: + + - name: Git checkout + uses: actions/checkout@v2 + + - name: Build archive + run: git archive --format=tar --prefix=masscanned-master/ HEAD -o docker/masscanned.tar + + - name: Build image + uses: docker/build-push-action@v5 + with: + push: false + context: docker/ + file: docker/Dockerfile-local diff --git a/docker/Dockerfile-local b/docker/Dockerfile-local new file mode 100644 index 0000000..e046e01 --- /dev/null +++ b/docker/Dockerfile-local @@ -0,0 +1,38 @@ +# This file is part of masscanned. +# Copyright 2021 - 2024 The IVRE project +# +# Masscanned is free software: you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# Masscanned is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public +# License for more details. +# +# You should have received a copy of the GNU General Public License +# along with Masscanned. If not, see . + +FROM rust AS builder + +ADD masscanned.tar ./ + +RUN cd masscanned-master && \ + cargo build --release + + +FROM debian:12 +LABEL maintainer="Pierre LALET " + +COPY --from=builder /masscanned-master/target/release/masscanned /usr/local/bin/masscanned + +ENV DEBIAN_FRONTEND noninteractive + +RUN apt-get -q update && \ + apt-get -qy --no-install-recommends install iproute2 iptables && \ + apt-get clean && rm -rf /var/lib/apt/lists/* + +COPY runmasscanned /usr/local/bin/runmasscanned + +CMD /usr/local/bin/runmasscanned