Enable github CI.
Signed-off-by: Tao He <linzhu.ht@alibaba-inc.com>
This commit is contained in:
parent
100eae97e9
commit
12f59ca48e
|
|
@ -0,0 +1,95 @@
|
||||||
|
name: Build and Test
|
||||||
|
|
||||||
|
on:
|
||||||
|
# Trigger the workflow on push or pull request, but only for the master branch
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- ci
|
||||||
|
- master
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-20.04]
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
submodules: true
|
||||||
|
|
||||||
|
- name: Cache for cccahe
|
||||||
|
uses: actions/cache@v2
|
||||||
|
with:
|
||||||
|
path: ~/.ccache
|
||||||
|
key: ${{ runner.os }}-ccache
|
||||||
|
restore-keys: |
|
||||||
|
${{ runner.os }}-ccache
|
||||||
|
|
||||||
|
- name: Install dependencies for Linux
|
||||||
|
if: runner.os == 'Linux'
|
||||||
|
run: |
|
||||||
|
sudo apt update -y
|
||||||
|
sudo apt install -y ca-certificates \
|
||||||
|
ccache \
|
||||||
|
cmake \
|
||||||
|
libboost-all-dev \
|
||||||
|
libcurl4-openssl-dev \
|
||||||
|
libgrpc-dev \
|
||||||
|
libgrpc++-dev \
|
||||||
|
libprotobuf-dev \
|
||||||
|
libssl-dev \
|
||||||
|
libz-dev \
|
||||||
|
lsb-release \
|
||||||
|
protobuf-compiler-grpc \
|
||||||
|
screenfetch \
|
||||||
|
wget
|
||||||
|
|
||||||
|
# install etcd
|
||||||
|
wget https://github.com/etcd-io/etcd/releases/download/v3.4.13/etcd-v3.4.13-linux-amd64.tar.gz
|
||||||
|
tar zxvf etcd-v3.4.13-linux-amd64.tar.gz
|
||||||
|
sudo mv etcd-v3.4.13-linux-amd64/etcd /usr/local/bin/
|
||||||
|
sudo mv etcd-v3.4.13-linux-amd64/etcdctl /usr/local/bin/
|
||||||
|
|
||||||
|
lsb_release -a
|
||||||
|
screenfetch
|
||||||
|
|
||||||
|
- name: Install cpprestsdk
|
||||||
|
run: |
|
||||||
|
mkdir -p build
|
||||||
|
cd build
|
||||||
|
git clone https://github.com/microsoft/cpprestsdk.git
|
||||||
|
mkdir -p cpprestsdk/build
|
||||||
|
cd cpprestsdk/build
|
||||||
|
cmake .. -DBUILD_TESTS=OFF \
|
||||||
|
-DBUILD_SAMPLES=OFF \
|
||||||
|
-DCPPREST_EXCLUDE_WEBSOCKETS=ON \
|
||||||
|
-DCMAKE_C_COMPILER_LAUNCHER=ccache \
|
||||||
|
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache
|
||||||
|
make -j2
|
||||||
|
sudo make install
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
mkdir -p build
|
||||||
|
cd build
|
||||||
|
cmake .. -DBUILD_TESTS=ON \
|
||||||
|
-DCMAKE_C_COMPILER_LAUNCHER=ccache \
|
||||||
|
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache
|
||||||
|
make -j2
|
||||||
|
sudo make install
|
||||||
|
|
||||||
|
- name: Test
|
||||||
|
run: |
|
||||||
|
cd build
|
||||||
|
/usr/local/bin/etcd &
|
||||||
|
./bin/etcd_test
|
||||||
|
|
||||||
|
# note: no need to clean up on CI env
|
||||||
|
|
||||||
|
- name: Check ccache
|
||||||
|
run: |
|
||||||
|
ccache --show-stats
|
||||||
|
|
@ -3,8 +3,10 @@ project (etcd-cpp-api)
|
||||||
|
|
||||||
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
||||||
|
|
||||||
set (etcd-cpp-api_VERSION_MAJOR 0)
|
set(etcd-cpp-api_VERSION_MAJOR 0)
|
||||||
set (etcd-cpp-api_VERSION_MINOR 1)
|
set(etcd-cpp-api_VERSION_MINOR 1)
|
||||||
|
|
||||||
|
option(BUILD_TESTS "Build test cases" OFF)
|
||||||
|
|
||||||
find_library(CPPREST_LIB NAMES cpprest)
|
find_library(CPPREST_LIB NAMES cpprest)
|
||||||
find_path(CPPREST_INCLUDE_DIR NAMES cpprest/http_client.h)
|
find_path(CPPREST_INCLUDE_DIR NAMES cpprest/http_client.h)
|
||||||
|
|
@ -36,7 +38,6 @@ set(GRPC_LIBRARIES ${GPR_LIBRARY} ${GRPC_LIBRARY} ${GRPC_GRPC++_LIBRARY})
|
||||||
include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/GenerateProtobuf.cmake)
|
include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/GenerateProtobuf.cmake)
|
||||||
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/proto)
|
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/proto)
|
||||||
|
|
||||||
enable_testing()
|
|
||||||
include_directories(SYSTEM ${CPPREST_INCLUDE_DIR}
|
include_directories(SYSTEM ${CPPREST_INCLUDE_DIR}
|
||||||
${Boost_INCLUDE_DIR}
|
${Boost_INCLUDE_DIR}
|
||||||
${PROTOBUF_INCLUDE_DIRS}
|
${PROTOBUF_INCLUDE_DIRS}
|
||||||
|
|
@ -44,9 +45,14 @@ include_directories(SYSTEM ${CPPREST_INCLUDE_DIR}
|
||||||
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
|
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wpedantic -Werror -Wno-string-compare -std=c++11")
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wpedantic -Werror -Wno-string-compare -std=c++11")
|
||||||
|
|
||||||
|
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib)
|
||||||
|
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib)
|
||||||
|
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin)
|
||||||
|
|
||||||
add_subdirectory(src)
|
add_subdirectory(src)
|
||||||
|
|
||||||
if (BUILD_TESTS)
|
if (BUILD_TESTS)
|
||||||
|
enable_testing()
|
||||||
add_subdirectory(tst)
|
add_subdirectory(tst)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,8 @@ add_executable(etcd_test
|
||||||
LockTest.cpp
|
LockTest.cpp
|
||||||
)
|
)
|
||||||
set_property(TARGET etcd_test PROPERTY CXX_STANDARD 11)
|
set_property(TARGET etcd_test PROPERTY CXX_STANDARD 11)
|
||||||
target_include_directories(etcd_test PRIVATE ${CMAKE_SOURCE_DIR}/proto)
|
target_include_directories(etcd_test PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/../proto/gen)
|
||||||
|
target_include_directories(etcd_test PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/../proto/gen/proto)
|
||||||
|
|
||||||
target_link_libraries(etcd_test etcd-cpp-api)
|
target_link_libraries(etcd_test etcd-cpp-api)
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue