diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 097ea9df6..002118f5b 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -50,13 +50,7 @@ jobs: ########################################################################## - name: login server | Build `release` image run: | - docker build --target release -t "gradido/login_server:release" -f ./login_server/Dockerfile login_server/ - #docker save "gradido/login_server:test" > /tmp/login_server.tar - #- name: Upload Artifact - # uses: actions/upload-artifact@v2 - #with: - # name: docker-login-server-test - #path: /tmp/login_server.tar + docker build -t "gradido/login_server:release" -f ./login_server/Dockerfile login_server/ ############################################################################## # JOB: DOCKER BUILD TEST COMMUNITY SERVER #################################### @@ -251,7 +245,7 @@ jobs: ########################################################################## - name: login server | Build `test` image run: | - docker build --target test -t "gradido/login_server:test" -f ./login_server/Dockerfile login_server/ + docker build -t "gradido/login_server:test" -f ./login_server/Dockerfiles/ubuntu/Dockerfile.test login_server/ ########################################################################## # UNIT TESTS BACKEND LOGIN-SERVER ####################################### ########################################################################## @@ -300,7 +294,7 @@ jobs: run: echo "::set-output name=id::$(docker network ls | grep github_network | awk '{ print $1 }')" id: network - name: Start Login-Server - run: docker run --network ${{ steps.network.outputs.id }} --name=login-server -d gradido/login_server:default + run: docker run --network ${{ steps.network.outputs.id }} --name=login-server -d gradido/login_server:with-config - name: get login-server container id run: echo "::set-output name=id::$(docker container ls | grep login_server | awk '{ print $1 }')" id: login_server_container diff --git a/docker-compose.override.yml b/docker-compose.override.yml index 1060002ba..dfc980a86 100644 --- a/docker-compose.override.yml +++ b/docker-compose.override.yml @@ -26,8 +26,7 @@ services: ######################################################### login-server: build: - target: login_server_alpine_debug - dockerfile: Dockerfile.alpine-debug + dockerfile: Dockerfiles/alpine/Dockerfile.debug security_opt: - seccomp:unconfined cap_add: diff --git a/docker-compose.test.yml b/docker-compose.test.yml index b9d44363e..457faf950 100644 --- a/docker-compose.test.yml +++ b/docker-compose.test.yml @@ -26,7 +26,7 @@ services: login-server: build: context: ./login_server/ - target: test + dockerfile: Dockerfiles/ubuntu/Dockerfile.test security_opt: - seccomp:unconfined cap_add: diff --git a/docker-compose.yml b/docker-compose.yml index 2cc2ceff7..35e015f4e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -55,7 +55,6 @@ services: login-server: build: context: ./login_server/ - target: login_server depends_on: - mariadb networks: diff --git a/login_server/Dockerfile b/login_server/Dockerfile index 98e576da2..313cdeca6 100644 --- a/login_server/Dockerfile +++ b/login_server/Dockerfile @@ -1,85 +1,4 @@ -######################################################################################################### -# Prepare debug -######################################################################################################### -FROM gradido/login_dependencies:gcc9-debug-3 as prepare_debug - -ENV DOCKER_WORKDIR="/code" -WORKDIR ${DOCKER_WORKDIR} - -RUN echo '/usr/local/lib' >> /etc/ld.so.conf && ldconfig - -COPY ./CMakeLists.txt.lib ./CMakeLists.txt -RUN ln -s /usr/local/googletest ./googletest -COPY ./src ./src -COPY ./cmake/CodeCoverage.cmake ./cmake/CodeCoverage.cmake -COPY ./dependencies/cmake-modules ./dependencies/cmake-modules -COPY ./dependencies/spirit-po ./dependencies/spirit-po -COPY ./dependencies/tinf ./dependencies/tinf -COPY ./scripts ./scripts - - -######################################################################################################### -# Install Coverage tool -######################################################################################################### -FROM prepare_debug as coverage - - -RUN apt-get update && \ - apt-get install -y --no-install-recommends python3-pip && \ - apt-get autoclean && \ - apt-get autoremove && \ - apt-get clean && \ - rm -rf /var/lib/apt/lists/* - -RUN pip3 install gcovr setuptools wheel && \ - pip3 install fastcov - - -######################################################################################################### -# Build test -######################################################################################################### -FROM coverage as test - -ENV DOCKER_WORKDIR="/code" -WORKDIR ${DOCKER_WORKDIR} - - -RUN if [ ! -d "./build_cov" ] ; then mkdir build_cov; fi - -RUN cd build_cov && \ - cmake -DCMAKE_BUILD_TYPE=Debug -DCOLLECT_COVERAGE_DATA=ON -DCOVERAGE_TOOL=fastcov .. && \ - make -j$(nproc) Gradido_LoginServer_Test - -#RUN chmod +x build_cov/bin/Gradido_LoginServer_Test -#CMD gdb -ex run ./build_cov/bin/Gradido_LoginServer_Test -#CMD ./build_cov/bin/Gradido_LoginServer_Test - -#ENTRYPOINT make -C build_cov coverage -CMD cd build_cov && make coverage && \ - if [ ! -d "./coverage" ] ; then mkdir coverage; fi && \ - cp coverage.info ./coverage/ - -######################################################################################################### -# Build debug -######################################################################################################### -FROM prepare_debug as debug - -ENV DOCKER_WORKDIR="/code" -WORKDIR ${DOCKER_WORKDIR} - -RUN mkdir build && \ - cd build && \ - cmake -DCMAKE_BUILD_TYPE=Debug .. && \ - make -j$(nproc) Gradido_LoginServer - -RUN cd scripts && \ - chmod +x compile_pot.sh && \ - ./compile_pot.sh - -RUN chmod +x build/bin/Gradido_LoginServer -ENTRYPOINT ["build/bin/Gradido_LoginServer"] - ######################################################################################################### # Build release ######################################################################################################### diff --git a/login_server/Dockerfile.alpine-debug b/login_server/Dockerfiles/alpine/Dockerfile.debug similarity index 100% rename from login_server/Dockerfile.alpine-debug rename to login_server/Dockerfiles/alpine/Dockerfile.debug diff --git a/login_server/Dockerfiles/Dockerfile.dependencies-alpine b/login_server/Dockerfiles/alpine/Dockerfile.dependencies similarity index 86% rename from login_server/Dockerfiles/Dockerfile.dependencies-alpine rename to login_server/Dockerfiles/alpine/Dockerfile.dependencies index c388d528c..098c7a8d7 100644 --- a/login_server/Dockerfiles/Dockerfile.dependencies-alpine +++ b/login_server/Dockerfiles/alpine/Dockerfile.dependencies @@ -1,3 +1,14 @@ +# Login-Server Build dependencies for alpine +# Uploaded to hub.docker.com with the tag: +# gradido/login_dependencies:alpine-debug-3 for debug build +# and +# gradido/login_dependencies:alpine-release-3 for release build +# Update tag when dependencies are added or removed + +# Control Build Type with ARG BUILD_TYPE +# Valid values do you find here: https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html +# Default is set to Debug + ##### BUILD-ENV ##### FROM alpine:3.13.5 as alpine-build diff --git a/login_server/Dockerfiles/alpine/Dockerfile.release b/login_server/Dockerfiles/alpine/Dockerfile.release new file mode 100644 index 000000000..313cdeca6 --- /dev/null +++ b/login_server/Dockerfiles/alpine/Dockerfile.release @@ -0,0 +1,49 @@ + +######################################################################################################### +# Build release +######################################################################################################### +FROM gradido/login_dependencies:alpine-release-3 as release + +ENV DOCKER_WORKDIR="/code" +WORKDIR ${DOCKER_WORKDIR} + +COPY ./CMakeLists.txt.lib ./CMakeLists.txt +COPY ./src ./src +RUN ln -s /usr/local/googletest ./googletest +COPY ./dependencies/cmake-modules ./dependencies/cmake-modules +COPY ./dependencies/spirit-po ./dependencies/spirit-po +COPY ./dependencies/tinf ./dependencies/tinf +COPY ./scripts ./scripts + +RUN mkdir build && \ + cd build && \ + cmake -DCMAKE_BUILD_TYPE=Release .. && \ + make -j$(nproc) Gradido_LoginServer + +RUN cd scripts && \ + chmod +x compile_pot.sh && \ + ./compile_pot.sh + + +######################################################################################################### +# run release +######################################################################################################### +#From alpine:latest as login_server +FROM alpine:3.13.5 as login_server + +USER root +WORKDIR "/usr/bin" + +COPY --from=release /code/build/bin/Gradido_LoginServer /usr/bin/ + +COPY --from=release /usr/local/lib/mariadb/libmariadb.so.3 /usr/local/lib/ +COPY --from=release /usr/local/lib/libPoco* /usr/local/lib/ +COPY --from=release /usr/local/lib/libproto* /usr/local/lib/ +COPY --from=release /usr/lib/libsodium.so.23 /usr/lib/ +COPY --from=release /usr/lib/libstdc++.so.6 /usr/lib/ +COPY --from=release /usr/lib/libgcc_s.so.1 /usr/lib/ + + +RUN chmod +x /usr/bin/Gradido_LoginServer +ENTRYPOINT ["/usr/bin/Gradido_LoginServer"] +#CMD Gradido_LoginServer diff --git a/login_server/Dockerfiles/Dockerfile.default b/login_server/Dockerfiles/alpine/Dockerfile.with_config similarity index 92% rename from login_server/Dockerfiles/Dockerfile.default rename to login_server/Dockerfiles/alpine/Dockerfile.with_config index 4be44dfd0..f17be7040 100644 --- a/login_server/Dockerfiles/Dockerfile.default +++ b/login_server/Dockerfiles/alpine/Dockerfile.with_config @@ -1,4 +1,9 @@ + +# Login Server build which contain the config file, found on docker hub with tag: +# gradido/login_server:with-config +# Used for community-server tests on staging + ######################################################################################################### # Build release ######################################################################################################### diff --git a/login_server/Dockerfiles/ubuntu/Dockerfile.debug b/login_server/Dockerfiles/ubuntu/Dockerfile.debug new file mode 100644 index 000000000..79ed8d802 --- /dev/null +++ b/login_server/Dockerfiles/ubuntu/Dockerfile.debug @@ -0,0 +1,39 @@ + +######################################################################################################### +# Prepare debug +######################################################################################################### +FROM gradido/login_dependencies:gcc9-debug-3 as prepare_debug + +ENV DOCKER_WORKDIR="/code" +WORKDIR ${DOCKER_WORKDIR} + +RUN echo '/usr/local/lib' >> /etc/ld.so.conf && ldconfig + +COPY ./CMakeLists.txt.lib ./CMakeLists.txt +RUN ln -s /usr/local/googletest ./googletest +COPY ./src ./src +COPY ./cmake/CodeCoverage.cmake ./cmake/CodeCoverage.cmake +COPY ./dependencies/cmake-modules ./dependencies/cmake-modules +COPY ./dependencies/spirit-po ./dependencies/spirit-po +COPY ./dependencies/tinf ./dependencies/tinf +COPY ./scripts ./scripts + + +######################################################################################################### +# Build debug +######################################################################################################### +FROM prepare_debug as debug + +ENV DOCKER_WORKDIR="/code" +WORKDIR ${DOCKER_WORKDIR} + +RUN mkdir build && \ + cd build && \ + cmake -DCMAKE_BUILD_TYPE=Debug .. + +RUN cd scripts && \ + chmod +x compile_pot.sh && \ + ./compile_pot.sh + +CMD cd build && cmake .. && make -j$(nproc) Gradido_LoginServer && ./bin/Gradido_LoginServer + diff --git a/login_server/Dockerfiles/Dockerfile.dependencies b/login_server/Dockerfiles/ubuntu/Dockerfile.dependencies similarity index 88% rename from login_server/Dockerfiles/Dockerfile.dependencies rename to login_server/Dockerfiles/ubuntu/Dockerfile.dependencies index bc2cd1fd2..883274628 100644 --- a/login_server/Dockerfiles/Dockerfile.dependencies +++ b/login_server/Dockerfiles/ubuntu/Dockerfile.dependencies @@ -1,3 +1,12 @@ +# Login-Server Build dependencies for ubuntu +# Uploaded to hub.docker.com with the tag: +# gradido/login_dependencies:gcc9-debug-3 for debug build +# Update tag when dependencies are added or removed + +# Control Build Type with ARG BUILD_TYPE +# Valid values do you find here: https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html +# Default is set to Debug + ##### BUILD-ENV ##### FROM gcc:9 as gcc9_build diff --git a/login_server/Dockerfiles/ubuntu/Dockerfile.release b/login_server/Dockerfiles/ubuntu/Dockerfile.release new file mode 100644 index 000000000..aa727c59c --- /dev/null +++ b/login_server/Dockerfiles/ubuntu/Dockerfile.release @@ -0,0 +1,49 @@ + +######################################################################################################### +# Build release +######################################################################################################### +FROM gradido/login_dependencies:ubuntu-release-3 as release + +ENV DOCKER_WORKDIR="/code" +WORKDIR ${DOCKER_WORKDIR} + +COPY ./CMakeLists.txt.lib ./CMakeLists.txt +COPY ./src ./src +RUN ln -s /usr/local/googletest ./googletest +COPY ./dependencies/cmake-modules ./dependencies/cmake-modules +COPY ./dependencies/spirit-po ./dependencies/spirit-po +COPY ./dependencies/tinf ./dependencies/tinf +COPY ./scripts ./scripts + +RUN mkdir build && \ + cd build && \ + cmake -DCMAKE_BUILD_TYPE=Release .. && \ + make -j$(nproc) Gradido_LoginServer + +RUN cd scripts && \ + chmod +x compile_pot.sh && \ + ./compile_pot.sh + + +######################################################################################################### +# run release +######################################################################################################### +#From alpine:latest as login_server +FROM ubuntu:latest as login_server + +USER root +WORKDIR "/usr/bin" + +COPY --from=release /code/build/bin/Gradido_LoginServer /usr/bin/ + +COPY --from=release /usr/local/lib/mariadb/libmariadb.so.3 /usr/local/lib/ +COPY --from=release /usr/local/lib/libPoco* /usr/local/lib/ +COPY --from=release /usr/local/lib/libproto* /usr/local/lib/ +COPY --from=release /usr/lib/libsodium.so.23 /usr/lib/ +COPY --from=release /usr/lib/libstdc++.so.6 /usr/lib/ +COPY --from=release /usr/lib/libgcc_s.so.1 /usr/lib/ + + +RUN chmod +x /usr/bin/Gradido_LoginServer +ENTRYPOINT ["/usr/bin/Gradido_LoginServer"] +#CMD Gradido_LoginServer diff --git a/login_server/Dockerfiles/ubuntu/Dockerfile.test b/login_server/Dockerfiles/ubuntu/Dockerfile.test new file mode 100644 index 000000000..59caaf3c5 --- /dev/null +++ b/login_server/Dockerfiles/ubuntu/Dockerfile.test @@ -0,0 +1,58 @@ + +######################################################################################################### +# Prepare debug +######################################################################################################### +FROM gradido/login_dependencies:gcc9-debug-3 as prepare_debug + +ENV DOCKER_WORKDIR="/code" +WORKDIR ${DOCKER_WORKDIR} + +RUN echo '/usr/local/lib' >> /etc/ld.so.conf && ldconfig + +COPY ./CMakeLists.txt.lib ./CMakeLists.txt +RUN ln -s /usr/local/googletest ./googletest +COPY ./src ./src +COPY ./cmake/CodeCoverage.cmake ./cmake/CodeCoverage.cmake +COPY ./dependencies/cmake-modules ./dependencies/cmake-modules +COPY ./dependencies/spirit-po ./dependencies/spirit-po +COPY ./dependencies/tinf ./dependencies/tinf +COPY ./scripts ./scripts + + +######################################################################################################### +# Install Coverage tool +######################################################################################################### +FROM prepare_debug as coverage + + +RUN apt-get update && \ + apt-get install -y --no-install-recommends python3-pip && \ + apt-get autoclean && \ + apt-get autoremove && \ + apt-get clean && \ + rm -rf /var/lib/apt/lists/* +# fastcov need gcovr to work +RUN pip3 install gcovr setuptools wheel && \ + pip3 install fastcov + + +######################################################################################################### +# Build test +######################################################################################################### +FROM coverage as test + +ENV DOCKER_WORKDIR="/code" +WORKDIR ${DOCKER_WORKDIR} + + +RUN if [ ! -d "./build_cov" ] ; then mkdir build_cov; fi + +RUN cd build_cov && \ + cmake -DCMAKE_BUILD_TYPE=Debug -DCOLLECT_COVERAGE_DATA=ON -DCOVERAGE_TOOL=fastcov .. && \ + make -j$(nproc) Gradido_LoginServer_Test + +#ENTRYPOINT make -C build_cov coverage +CMD cd build_cov && make coverage && \ + if [ ! -d "./coverage" ] ; then mkdir coverage; fi && \ + cp coverage.info ./coverage/ + \ No newline at end of file