fix bug, update dockerfiles to use dependencies without grpc

This commit is contained in:
einhorn_b 2021-06-04 12:27:19 +02:00
parent 870ead82fe
commit dedcebdb95
11 changed files with 109 additions and 239 deletions

View File

@ -38,7 +38,7 @@ services:
- ./login_server/dependencies:/code/dependencies
- ./login_server/scripts:/code/scripts
- ./configs/login_server:/etc/grd_login
- login_build_3:/code/build
- login_build_3.1:/code/build
#########################################################
@ -100,4 +100,4 @@ services:
volumes:
frontend_node_modules:
login_build_3:
login_build_3.1:

View File

@ -80,6 +80,7 @@ services:
depends_on:
- community-server
- login-server
- frontend
ports:
- 80:80

View File

@ -30,22 +30,16 @@ include_directories(
find_package(Protobuf REQUIRED)
include_directories(${Protobuf_INCLUDE_DIRS})
FIND_PACKAGE(gRPC CONFIG REQUIRED)
find_program(GRPC_CPP_PLUGIN grpc_cpp_plugin)
set(PROTOBUF_LIBS protobuf::libprotobuf protobuf::libprotobuf-lite protobuf::libprotoc)
############################## parse proto files ###################################
FILE(TO_NATIVE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/src/proto GRADIDO_PROTO_MODEL_PATH)
FILE(TO_NATIVE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/src/proto/hedera/hedera-protobuf/src/main/proto HEDERA_PROTO_MODEL_PATH)
FILE(TO_NATIVE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/build/proto PROTOBINDING_PATH)
file(MAKE_DIRECTORY ${PROTOBINDING_PATH})
file(MAKE_DIRECTORY ${PROTOBINDING_PATH}/gradido)
file(MAKE_DIRECTORY ${PROTOBINDING_PATH}/hedera)
FILE(GLOB DATAMODEL_GRADIDO_PROTOS "${GRADIDO_PROTO_MODEL_PATH}/gradido/*.proto")
FILE(GLOB DATAMODEL_HEDERA_PROTOS "${HEDERA_PROTO_MODEL_PATH}/*.proto")
FOREACH(proto ${DATAMODEL_GRADIDO_PROTOS})
FILE(TO_NATIVE_PATH ${proto} proto_native)
@ -71,31 +65,6 @@ FOREACH(proto ${DATAMODEL_GRADIDO_PROTOS})
ENDFOREACH(proto)
FOREACH(proto ${DATAMODEL_HEDERA_PROTOS})
FILE(TO_NATIVE_PATH ${proto} proto_native)
get_filename_component(proto_parsed ${proto} NAME_WLE)
FILE(TO_NATIVE_PATH ${PROTOBINDING_PATH}/hedera/${proto_parsed}.pb.h proto_parsed_native)
IF(${proto_native} IS_NEWER_THAN ${proto_parsed_native})
EXECUTE_PROCESS(
COMMAND
${PROTOBUF_PROTOC_EXECUTABLE}
--plugin=protoc-gen-grpc=${GRPC_CPP_PLUGIN}
--proto_path=${HEDERA_PROTO_MODEL_PATH}
--proto_path=${GOOGLE_PROTOBUF_INCLUDES}
--cpp_out=${PROTOBINDING_PATH}/hedera
--grpc_out ${PROTOBINDING_PATH}/hedera
${proto_native}
RESULT_VARIABLE rv
)
# Optional, but that can show the user if something have gone wrong with the proto generation
IF(${rv})
MESSAGE("Generation of data model returned ${rv} for proto ${proto_native}")
ELSE()
MESSAGE("Parsed: src/proto/hedera/hedera-protobuf/src/main/proto/${proto_parsed}.proto")
ENDIF()
ENDIF()
ENDFOREACH(proto)
############################## parse cpsp Files ####################################
FILE(TO_NATIVE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/src/cpsp GRADIDO_CPSP_PAGE_SRC_PATH)
FILE(TO_NATIVE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/build/http_pages GRADIDO_HTTP_PAGES_PATH)
@ -153,7 +122,6 @@ FILE(GLOB CRYPTO "src/cpp/Crypto/*.h" "src/cpp/Crypto/*.cpp")
FILE(GLOB MAIN "src/cpp/*.cpp" "src/cpp/*.c" "src/cpp/*.h")
FILE(GLOB MYSQL "src/cpp/MySQL/*.cpp" "src/cpp/MySQL/*.h" "src/cpp/MySQL/Poco/*.h")
FILE(GLOB PROTO_GRADIDO "${PROTOBINDING_PATH}/gradido/*.cc" "${PROTOBINDING_PATH}/gradido/*.h")
FILE(GLOB PROTO_HEDERA "${PROTOBINDING_PATH}/hedera/*.cc" "${PROTOBINDING_PATH}/hedera/*.h")
# used only for test project
FILE(GLOB TEST "src/cpp/test/*.cpp" "src/cpp/test/*.h")
@ -204,81 +172,83 @@ set(POCO_LIBS ${POCO_FOUNDATION_LIB} ${POCO_UTIL_LIB} ${POCO_NET_SSL_LIB} ${POCO
############################## build login server ###################################
target_link_libraries(Gradido_LoginServer gRPC::grpc++ ${PROTOBUF_LIBS} ${MYSQL_LIBRARIES} ${POCO_LIBS} sodium pthread)
target_link_libraries(Gradido_LoginServer ${PROTOBUF_LIBS} ${MYSQL_LIBRARIES} ${POCO_LIBS} sodium pthread)
############################## build login server test ###################################
project(Gradido_LoginServer_Test C CXX)
IF(CMAKE_BUILD_TYPE STREQUAL "Debug")
project(Gradido_LoginServer_Test C CXX)
enable_testing()
enable_testing()
option(COLLECT_COVERAGE_DATA "Use cov to collect coverage informations" OFF)
set(COVERAGE_TOOL "Coverage Tool (gcovr|lcov|fastcov)" CACHE STRING "gcovr")
option(COLLECT_COVERAGE_DATA "Use cov to collect coverage informations" OFF)
set(COVERAGE_TOOL "Coverage Tool (gcovr|lcov|fastcov)" CACHE STRING "gcovr")
if(COLLECT_COVERAGE_DATA)
include(cmake/CodeCoverage.cmake)
append_coverage_compiler_flags()
set(EXCLUDE_FOR_HTML_COV
"${CMAKE_CURRENT_SOURCE_DIR}/build/proto/*"
"${CMAKE_CURRENT_SOURCE_DIR}/dependencies/*"
"${CMAKE_CURRENT_SOURCE_DIR}/src/cpp/test/*"
"${CMAKE_CURRENT_SOURCE_DIR}/googletest/googletest/include/gtest/internal/*"
"${CMAKE_CURRENT_SOURCE_DIR}/googletest/googletest/src/"
)
if("${COVERAGE_TOOL}" STREQUAL "gcovr")
setup_target_for_coverage_gcovr_html(
NAME coverage
EXECUTABLE Gradido_LoginServer_Test
EXCLUDE ${EXCLUDE_FOR_HTML_COV}
GCOVR_ADDITIONAL_ARGS "--txt "
#DEPENDENCIES lib/libmariadb.so.3
if(COLLECT_COVERAGE_DATA)
include(cmake/CodeCoverage.cmake)
append_coverage_compiler_flags()
set(EXCLUDE_FOR_HTML_COV
"${CMAKE_CURRENT_SOURCE_DIR}/build/proto/*"
"${CMAKE_CURRENT_SOURCE_DIR}/dependencies/*"
"${CMAKE_CURRENT_SOURCE_DIR}/src/cpp/test/*"
"${CMAKE_CURRENT_SOURCE_DIR}/googletest/googletest/include/gtest/internal/*"
"${CMAKE_CURRENT_SOURCE_DIR}/googletest/googletest/src/"
)
endif()
if("${COVERAGE_TOOL}" STREQUAL "gcovr")
setup_target_for_coverage_gcovr_html(
NAME coverage
EXECUTABLE Gradido_LoginServer_Test
EXCLUDE ${EXCLUDE_FOR_HTML_COV}
GCOVR_ADDITIONAL_ARGS "--txt "
#DEPENDENCIES lib/libmariadb.so.3
)
endif()
set(EXCLUDE_FOR_COV
${EXCLUDE_FOR_HTML_COV}
"/usr/include/*"
)
if("${COVERAGE_TOOL}" STREQUAL "lcov")
setup_target_for_coverage_lcov(
NAME coverage
EXECUTABLE Gradido_LoginServer_Test
EXCLUDE "${EXCLUDE_FOR_COV}"
#DEPENDENCIES lib/libmariadb.so.3
set(EXCLUDE_FOR_COV
${EXCLUDE_FOR_HTML_COV}
"/usr/include/*"
)
if("${COVERAGE_TOOL}" STREQUAL "lcov")
setup_target_for_coverage_lcov(
NAME coverage
EXECUTABLE Gradido_LoginServer_Test
EXCLUDE "${EXCLUDE_FOR_COV}"
#DEPENDENCIES lib/libmariadb.so.3
)
endif()
if("${COVERAGE_TOOL}" STREQUAL "fastcov")
setup_target_for_coverage_fastcov(
NAME coverage # New target name
EXECUTABLE Gradido_LoginServer_Test -j ${PROCESSOR_COUNT} # Executable in PROJECT_BINARY_DIR
#BASE_DIRECTORY "coverage" # Base directory for report
# (defaults to PROJECT_SOURCE_DIR)
EXCLUDE "${EXCLUDE_FOR_COV}" # Patterns to exclude.
NO_DEMANGLE # Don't demangle C++ symbols
# even if c++filt is found
SKIP_HTML # Don't create html report
)
endif()
endif()
if("${COVERAGE_TOOL}" STREQUAL "fastcov")
setup_target_for_coverage_fastcov(
NAME coverage # New target name
EXECUTABLE Gradido_LoginServer_Test -j ${PROCESSOR_COUNT} # Executable in PROJECT_BINARY_DIR
#BASE_DIRECTORY "coverage" # Base directory for report
# (defaults to PROJECT_SOURCE_DIR)
EXCLUDE "${EXCLUDE_FOR_COV}" # Patterns to exclude.
NO_DEMANGLE # Don't demangle C++ symbols
# even if c++filt is found
SKIP_HTML # Don't create html report
)
#_TEST_BUILD
add_subdirectory("googletest")
add_executable(Gradido_LoginServer_Test ${LOCAL_SRCS} ${LOCAL_TEST_SRC})
target_compile_definitions(Gradido_LoginServer_Test PUBLIC "_TEST_BUILD")
target_link_libraries(Gradido_LoginServer_Test ${GRPC_LIBS} )
if(WIN32)
target_link_libraries(Gradido_LoginServer_Test ${CONAN_LIBS} )
#TARGET_LINK_LIBRARIES(Gradido_LoginServer_Test optimized ${MYSQL_LIBRARIES} Shlwapi)
#TARGET_LINK_LIBRARIES(Gradido_LoginServer_Test debug ${COMPILED_MARIADB_CLIENT_DEBUG} Shlwapi)
#TARGET_LINK_LIBRARIES(Gradido_LoginServer_Test debug ${GRPC_LIBS} ${PROTOBUF_DEBUG_LIBS})
else()
target_link_libraries(Gradido_LoginServer_Test ${PROTOBUF_LIBS} ${MYSQL_LIBRARIES} ${POCO_LIBS} sodium pthread gtest)
endif()
endif()
#_TEST_BUILD
add_subdirectory("googletest")
add_executable(Gradido_LoginServer_Test ${LOCAL_SRCS} ${LOCAL_TEST_SRC})
target_compile_definitions(Gradido_LoginServer_Test PUBLIC "_TEST_BUILD")
target_link_libraries(Gradido_LoginServer_Test ${GRPC_LIBS} )
if(WIN32)
target_link_libraries(Gradido_LoginServer_Test ${CONAN_LIBS} )
#TARGET_LINK_LIBRARIES(Gradido_LoginServer_Test optimized ${MYSQL_LIBRARIES} Shlwapi)
#TARGET_LINK_LIBRARIES(Gradido_LoginServer_Test debug ${COMPILED_MARIADB_CLIENT_DEBUG} Shlwapi)
#TARGET_LINK_LIBRARIES(Gradido_LoginServer_Test debug ${GRPC_LIBS} ${PROTOBUF_DEBUG_LIBS})
else()
target_link_libraries(Gradido_LoginServer_Test gRPC::grpc++ ${PROTOBUF_LIBS} ${MYSQL_LIBRARIES} ${POCO_LIBS} sodium pthread gtest)
endif()
add_test(NAME main COMMAND Gradido_LoginServer_Test)
add_test(NAME main COMMAND Gradido_LoginServer_Test)
ENDIF()

View File

@ -2,7 +2,7 @@
#########################################################################################################
# Prepare debug
#########################################################################################################
FROM gradido/login_dependencies:gcc9-debug-1 as prepare_debug
FROM gradido/login_dependencies:gcc9-debug-3 as prepare_debug
ENV DOCKER_WORKDIR="/code"
WORKDIR ${DOCKER_WORKDIR}
@ -83,7 +83,7 @@ ENTRYPOINT ["build/bin/Gradido_LoginServer"]
#########################################################################################################
# Build release
#########################################################################################################
FROM gradido/login_dependencies:alpine-release-2 as release
FROM gradido/login_dependencies:alpine-release-3 as release
ENV DOCKER_WORKDIR="/code"
WORKDIR ${DOCKER_WORKDIR}
@ -118,20 +118,13 @@ 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/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/
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
#########################################################################################################
# run release with default docker config
#########################################################################################################
FROM login_server as login_server_default_config
COPY ../configs/login_server/grd_login.properties /etc/grd_login/

View File

@ -1,4 +1,4 @@
FROM gradido/login_dependencies:alpine-debug-2 as login_server_alpine_debug
FROM gradido/login_dependencies:alpine-debug-3 as login_server_alpine_debug
ENV DOCKER_WORKDIR="/code"

View File

@ -1,54 +0,0 @@
#########################################################################################################
# cmake
#########################################################################################################
FROM gcc:9 as cmake-gcc-9
ENV DOCKER_WORKDIR="/code"
RUN mkdir -p ${DOCKER_WORKDIR}
WORKDIR ${DOCKER_WORKDIR}
USER root
RUN git clone https://github.com/Kitware/CMake.git --branch=v3.19.8 \
&& cd CMake \
&& ./bootstrap \
&& make -j$(nproc) \
&& make install
#########################################################################################################
# Build debug
#########################################################################################################
From gradido/login_dependencies:stage2 as debug
ENV DOCKER_WORKDIR="/code"
USER root
WORKDIR ${DOCKER_WORKDIR}
COPY . .
RUN cd scripts \
&& chmod +x ./prepare_build.sh \
&& ./prepare_build.sh
RUN ./compile_pot.sh
RUN ./unix_parse_proto.sh
#########################################################################################################
# run debug
#########################################################################################################
FROM debug as login_server_debug
ENV DOCKER_WORKDIR="/code"
VOLUME /var/log/grd_login
VOLUME /code/src
EXPOSE 1200
EXPOSE 1201
WORKDIR ${DOCKER_WORKDIR}
RUN chmod +x ./scripts/build_and_run.sh
CMD ./Dockerfiles/build_and_run.sh; ./build_vol/bin/Gradido_LoginServer

View File

@ -2,14 +2,13 @@
#########################################################################################################
# Build release
#########################################################################################################
FROM gradido/login_dependencies:alpine-release-2 as release_default
FROM gradido/login_dependencies:alpine-release-3 as release_default
ENV DOCKER_WORKDIR="/code"
WORKDIR ${DOCKER_WORKDIR}
COPY ./login_server/CMakeLists.txt.lib ./CMakeLists.txt
COPY ./login_server/src ./src
RUN ln -s /usr/local/googletest ./googletest
COPY ./login_server/dependencies/cmake-modules ./dependencies/cmake-modules
COPY ./login_server/dependencies/spirit-po ./dependencies/spirit-po
COPY ./login_server/dependencies/tinf ./dependencies/tinf

View File

@ -21,21 +21,20 @@ RUN git clone https://github.com/Kitware/CMake.git --branch=v3.19.8 && \
make install
######### BUILD grpc ##############
FROM gcc_9_cmake as gcc_9_grpc
FROM gcc_9_cmake as gcc_9_protobuf
ARG BUILD_TYPE=Debug
RUN git clone https://github.com/grpc/grpc.git --branch=v1.37.0 --recursive -j4 && \
cd grpc && \
mkdir build && cd build && \
cmake -DCMAKE_BUILD_TYPE=$BUILD_TYPE .. && make -j$(nproc) && \
make install
# abseil don't install themself correctly
RUN cp -r grpc/third_party/abseil-cpp/absl /usr/local/include/
RUN git clone https://github.com/protocolbuffers/protobuf.git --recursive -j4 && \
cd protobuf && \
./autogen.sh && \
./configure && \
make -j$(nproc) && \
make install && \
ldconfig
# protobuf libs missing after make install
RUN cp grpc/build/third_party/protobuf/*.a /usr/local/lib/
#RUN cp grpc/build/third_party/protobuf/*.a /usr/local/lib/
######### BUILD poco ##############
FROM gcc_9_cmake as gcc_9_poco
@ -74,8 +73,8 @@ COPY --from=gcc_9_cmake /usr/local/share/cmake-3.19/Modules /usr/local/share/cma
COPY --from=gcc_9_cmake /usr/local/share/cmake-3.19/Templates /usr/local/share/cmake-3.19/Templates
# copy from grpc
COPY --from=gcc_9_grpc /usr/local /usr/local
COPY --from=gcc_9_grpc /grpc/third_party/googletest /usr/local/googletest
COPY --from=gcc_9_protobuf /usr/local /usr/local
COPY --from=gcc_9_protobuf /protobuf/third_party/googletest /usr/local/googletest
# COPY from poco
COPY --from=gcc_9_poco /usr/local /usr/local

View File

@ -15,31 +15,22 @@ RUN git clone https://github.com/Kitware/CMake.git --branch=v3.19.8 && \
make -j$(nproc) && \
make install
##### lcov #####
FROM alpine-build as alpine-lcov
RUN apk add --no-cache bash perl
RUN git clone https://github.com/linux-test-project/lcov.git --branch=v1.15 && \
cd lcov && \
make install
######### BUILD grpc ##############
FROM alpine-gxx-cmake as alpine-gxx-grpc
FROM alpine-gxx-cmake as alpine-gxx-protobuf
ARG BUILD_TYPE=Debug
RUN git clone https://github.com/grpc/grpc.git --branch=v1.37.0 --recursive -j4 && \
cd grpc && \
mkdir build && cd build && \
cmake -DCMAKE_BUILD_TYPE=$BUILD_TYPE .. && make -j$(nproc) && \
make install
RUN apk add --no-cache autoconf automake libtool curl unzip
# abseil don't install themself correctly
RUN cp -r grpc/third_party/abseil-cpp/absl /usr/local/include/
RUN git clone https://github.com/protocolbuffers/protobuf.git --recursive -j4 && \
cd protobuf && \
./autogen.sh && \
./configure && \
make -j$(nproc) && \
make install
# protobuf libs missing after make install
RUN cp grpc/build/third_party/protobuf/*.a /usr/local/lib/
#RUN cp grpc/build/third_party/protobuf/*.a /usr/local/lib/
######### BUILD poco ##############
FROM alpine-gxx-cmake as alpine-gxx-poco
@ -76,12 +67,7 @@ COPY --from=alpine-gxx-cmake /usr/local/share/cmake-3.19/Modules /usr/local/shar
COPY --from=alpine-gxx-cmake /usr/local/share/cmake-3.19/Templates /usr/local/share/cmake-3.19/Templates
# copy from grpc
COPY --from=alpine-gxx-grpc /usr/local /usr/local
COPY --from=alpine-gxx-grpc /grpc/third_party/googletest /usr/local/googletest
# copy from lcov
COPY --from=alpine-lcov /usr/local/bin /usr/local/bin
COPY --from=alpine-lcov /usr/local/etc/lcovrc /usr/local/etc/lcovrc
COPY --from=alpine-gxx-protobuf /usr/local /usr/local
# COPY from poco
COPY --from=alpine-gxx-poco /usr/local /usr/local
@ -89,4 +75,10 @@ COPY --from=alpine-gxx-poco /usr/local /usr/local
# COPY from mariadb
COPY --from=alpine-gxx-mariadb-connector /usr/local /usr/local
#########################################################################################################
# COPY Things only needed for testing
#########################################################################################################
FROM alpine-libs as alpine-libs-test
COPY --from=alpine-gxx-protobuf /protobuf/third_party/googletest /usr/local/googletest

View File

@ -1,30 +0,0 @@
#########################################################################################################
# Build protoc
#########################################################################################################
FROM gcc:7.5 as protoc3.9.1_build
RUN git clone --recurse-submodules https://github.com/protocolbuffers/protobuf.git
WORKDIR /protobuf
RUN git checkout v3.9.1
RUN ./autogen.sh
RUN ./configure --enable-static=yes
RUN make -j$(nproc)
#RUN make check
CMD ["./protobuf"]
#########################################################################################################
# Store protoc
#########################################################################################################
FROM alpine:3.10 as protoc
COPY --from=protoc3.9.1_build /protobuf/src/.libs/protoc /usr/bin/
COPY --from=protoc3.9.1_build /protobuf/src/.libs/libprotobuf.so.20.0.1 /usr/lib/libprotobuf.so.20
COPY --from=protoc3.9.1_build /protobuf/src/.libs/libprotoc.so.20.0.1 /usr/lib/libprotoc.so.20
COPY --from=protoc3.9.1_build /protobuf/src/google/protobuf/*.proto /usr/include/google/protobuf/
COPY --from=protoc3.9.1_build /protobuf/src/google/protobuf/*.h /usr/include/google/protobuf/
## build with:
# docker build . -f Dockefile.protoc -t gradido/protoc:3.9.1
## upload (login to docker hub on shell before):
# docker push gradido/protoc:3.9.1

View File

@ -83,11 +83,11 @@ namespace model {
if (mPasswordHashed) {
insert << "INSERT INTO users (email, first_name, last_name, username, description, password, email_hash, language, group_id) VALUES(?,?,?,?,?,?,?,?);",
insert << "INSERT INTO users (email, first_name, last_name, username, description, password, email_hash, language, group_id) VALUES(?,?,?,?,?,?,?,?,?);",
use(mEmail), use(mFirstName), use(mLastName), use(mUsername), use(mDescription), bind(mPasswordHashed), use(mEmailHash), use(mLanguageKey), use(mGroupId);
}
else {
insert << "INSERT INTO users (email, first_name, last_name, username, description, email_hash, language, group_id) VALUES(?,?,?,?,?,?,?);",
insert << "INSERT INTO users (email, first_name, last_name, username, description, email_hash, language, group_id) VALUES(?,?,?,?,?,?,?,?);",
use(mEmail), use(mFirstName), use(mLastName), use(mUsername), use(mDescription), use(mEmailHash), use(mLanguageKey), use(mGroupId);
}