From 43f98f05f3e394a30e46d8370cb76a78f453cd59 Mon Sep 17 00:00:00 2001 From: Andrei Tarassov Date: Tue, 21 Nov 2023 18:54:53 +1100 Subject: [PATCH] UID2-2349 Add build pipeline for aws vsock proxy - first cut: basic build/test/package workflow --- .github/workflows/build.yml | 25 ++++++++++++++++++ .gitignore | 2 ++ CMakeLists.txt | 16 ++++++++++-- CMakeSettings.json | 43 ------------------------------- vsock-bridge/CMakeLists.txt | 10 ++----- vsock-bridge/include/version.h.in | 3 +++ vsock-bridge/src/CMakeLists.txt | 13 +++++----- vsock-bridge/src/vsock-bridge.cpp | 16 ++++++++++-- vsock-bridge/test/CMakeLists.txt | 14 +++------- 9 files changed, 70 insertions(+), 72 deletions(-) create mode 100644 .github/workflows/build.yml create mode 100644 .gitignore delete mode 100644 CMakeSettings.json create mode 100644 vsock-bridge/include/version.h.in diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..8f88995 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,25 @@ +name: Build/Test/Package + +on: [push] + +jobs: + build: + runs-on: ubuntu-latest + container: amazonlinux:2 + strategy: + matrix: + build_type: [debug, relwithdebinfo] + steps: + - name: Dev environment + run: | + yum groupinstall -y "Development Tools" + yum install -y cmake3 valgrind git + + - uses: actions/checkout@v3 + + - name: Build and Test + run: | + cmake3 -S . -B build -DCMAKE_BUILD_TYPE=${{matrix.build_type}} + cd build + make package + make test diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..8461078 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +build +.idea diff --git a/CMakeLists.txt b/CMakeLists.txt index 9f53b4c..776f9a7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,7 +1,19 @@ cmake_minimum_required (VERSION 3.8) -project ("vsock-bridge") +if (DEFINED ENV{RELEASE_VERSION}) + set (RELEASE_VERSION "$ENV{RELEASE_VERSION}") +else () + set (RELEASE_VERSION "0.0.0") +endif () -set(CMAKE_CXX_FLAGS_DEBUG "-ggdb") +project ("vsock-bridge" VERSION ${RELEASE_VERSION}) + +add_compile_options ("$<$,$>:-ggdb>") +set (CXX_STANDARD 17) +enable_testing () + +set (CPACK_GENERATOR "TGZ") +set (CPACK_PACKAGE_FILE_NAME "vsock-bridge-${RELEASE_VERSION}") +include (CPack) add_subdirectory ("vsock-bridge") diff --git a/CMakeSettings.json b/CMakeSettings.json deleted file mode 100644 index b4ac3b9..0000000 --- a/CMakeSettings.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "configurations": [ - { - "name": "Linux-GCC-Debug", - "generator": "Ninja", - "configurationType": "Debug", - "cmakeExecutable": "cmake", - "remoteCopySourcesExclusionList": [ ".vs", ".git", "out" ], - "cmakeCommandArgs": "", - "buildCommandArgs": "", - "ctestCommandArgs": "", - "inheritEnvironments": [ "linux_x64" ], - "remoteMachineName": "${defaultRemoteMachineName}", - "remoteCMakeListsRoot": "$HOME/.vs/${projectDirName}/${workspaceHash}/src", - "remoteBuildRoot": "$HOME/.vs/${projectDirName}/${workspaceHash}/out/build/${name}", - "remoteInstallRoot": "$HOME/.vs/${projectDirName}/${workspaceHash}/out/install/${name}", - "remoteCopySources": true, - "rsyncCommandArgs": "-t --delete --delete-excluded", - "remoteCopyBuildOutput": false, - "remoteCopySourcesMethod": "sftp" - }, - { - "name": "Linux-GCC-Release", - "generator": "Ninja", - "configurationType": "RelWithDebInfo", - "cmakeExecutable": "cmake", - "remoteCopySourcesExclusionList": [ ".vs", ".git", "out" ], - "cmakeCommandArgs": "", - "buildCommandArgs": "", - "ctestCommandArgs": "", - "inheritEnvironments": [ "linux_x64" ], - "remoteMachineName": "${defaultRemoteMachineName}", - "remoteCMakeListsRoot": "$HOME/.vs/${projectDirName}/${workspaceHash}/src", - "remoteBuildRoot": "$HOME/.vs/${projectDirName}/${workspaceHash}/out/build/${name}", - "remoteInstallRoot": "$HOME/.vs/${projectDirName}/${workspaceHash}/out/install/${name}", - "remoteCopySources": true, - "rsyncCommandArgs": "-t --delete --delete-excluded", - "remoteCopyBuildOutput": false, - "remoteCopySourcesMethod": "rsync", - "variables": [] - } - ] -} \ No newline at end of file diff --git a/vsock-bridge/CMakeLists.txt b/vsock-bridge/CMakeLists.txt index e606ae6..57524e6 100644 --- a/vsock-bridge/CMakeLists.txt +++ b/vsock-bridge/CMakeLists.txt @@ -1,9 +1,3 @@ -# CMakeList.txt : CMake project for vsock-bridge, include source and define -# project specific logic here. -# -cmake_minimum_required (VERSION 3.8) - +configure_file (include/version.h.in include/version.h) add_subdirectory (src) - -enable_testing () -add_subdirectory (test) \ No newline at end of file +add_subdirectory (test) diff --git a/vsock-bridge/include/version.h.in b/vsock-bridge/include/version.h.in new file mode 100644 index 0000000..9693f28 --- /dev/null +++ b/vsock-bridge/include/version.h.in @@ -0,0 +1,3 @@ +#pragma once + +#define VSOCK_BRIDGE_VERSION "@PROJECT_VERSION@" diff --git a/vsock-bridge/src/CMakeLists.txt b/vsock-bridge/src/CMakeLists.txt index 61a7f53..ee2c9dd 100644 --- a/vsock-bridge/src/CMakeLists.txt +++ b/vsock-bridge/src/CMakeLists.txt @@ -1,12 +1,11 @@ -cmake_minimum_required (VERSION 3.8) - add_library (vsock-io "socket.cpp" "logger.cpp" "epoll_poller.cpp") add_executable (vsock-bridge "vsock-bridge.cpp" "config.cpp" "global.cpp") -target_link_libraries(vsock-bridge vsock-io pthread -static-libgcc -static-libstdc++) +target_link_libraries (vsock-bridge vsock-io pthread -static-libgcc -static-libstdc++) -target_include_directories(vsock-io PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/../include) -target_include_directories(vsock-bridge PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/../include) +target_include_directories (vsock-io PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/../include) +target_include_directories (vsock-bridge + PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/../include + PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/../include) -set_property(TARGET vsock-io PROPERTY CXX_STANDARD 17) -set_property(TARGET vsock-bridge PROPERTY CXX_STANDARD 17) +install(TARGETS vsock-bridge DESTINATION bin) diff --git a/vsock-bridge/src/vsock-bridge.cpp b/vsock-bridge/src/vsock-bridge.cpp index cfd3f43..64d03c9 100644 --- a/vsock-bridge/src/vsock-bridge.cpp +++ b/vsock-bridge/src/vsock-bridge.cpp @@ -1,4 +1,5 @@ -#include +#include "version.h" +#include "vsock-bridge.h" using namespace vsockio; using namespace vsockproxy; @@ -114,6 +115,11 @@ void show_help() << std::flush; } +void show_version() +{ + std::cout << VSOCK_BRIDGE_VERSION << std::endl; +} + void quit_bad_args(const char* reason, bool showhelp) { std::cout << reason << std::endl; @@ -147,7 +153,13 @@ int main(int argc, char* argv[]) exit(0); } - else if (strcmp(argv[i], "-d") == 0 || strcmp(argv[i], "--daemon") == 0) + else if (strcmp(argv[i], "-v") == 0 || strcmp(argv[i], "--version") == 0) + { + show_version(); + exit(0); + } + + else if (strcmp(argv[i], "-d") == 0 || strcmp(argv[i], "--daemon") == 0) { daemonize = true; } diff --git a/vsock-bridge/test/CMakeLists.txt b/vsock-bridge/test/CMakeLists.txt index a79dc50..d1e17f1 100644 --- a/vsock-bridge/test/CMakeLists.txt +++ b/vsock-bridge/test/CMakeLists.txt @@ -1,11 +1,5 @@ -cmake_minimum_required (VERSION 3.8) +add_executable (vsock-bridge-tests testmain.cpp) +target_include_directories (vsock-bridge-tests PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../include) +target_link_libraries (vsock-bridge-tests vsock-io pthread) -include_directories (tests - ${CMAKE_CURRENT_SOURCE_DIR}/../include -) - -add_executable (tests testmain.cpp) - -target_link_libraries (tests vsock-io pthread) - -add_test (NAME VSockTest COMMAND tests) \ No newline at end of file +add_test (vsock-bridge-tests vsock-bridge-tests)