-
Notifications
You must be signed in to change notification settings - Fork 1
109 lines (91 loc) · 3.25 KB
/
cmake-single-platform.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
name: CMake on a single platform
on:
push:
branches: [ "*" ]
pull_request:
branches: [ "*" ]
env:
BUILD_TYPE: Release
BASE_PATH: ${{github.workspace}}
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Dependencies
run: |
sudo apt-get update
sudo apt-get install -y libmongoc-1.0-0 curl cmake build-essential \
libssl-dev libboost-all-dev libpoco-dev libcurl4-openssl-dev
sudo apt-get install -y docker
- name: Install spdlog
run: |
git clone https://github.com/gabime/spdlog.git
cd spdlog
git checkout v1.12.0
mkdir build && cd build
cmake .. -DCMAKE_POSITION_INDEPENDENT_CODE=ON
sudo make install
sudo ldconfig
- name: Setup External Libraries
run: |
mkdir -p external_libraries
cd external_libraries
# Clone Crow
git clone --recurse-submodules https://github.com/CrowCpp/Crow.git Crow
# Download and extract Boost
curl -L "https://archives.boost.io/release/1.86.0/source/boost_1_86_0.tar.gz" -o boost.tar.gz
tar -xzf boost.tar.gz
mv boost_1_86_0 boost
rm boost.tar.gz
# Download and extract Asio
curl -L "https://sourceforge.net/projects/asio/files/asio/1.30.2%20%28Stable%29/asio-1.30.2.tar.gz/download" -o asio.tar.gz
tar -xzf asio.tar.gz
mv asio-1.30.2 asio
rm asio.tar.gz
# Download and install MongoDB C++ Driver
curl -L "https://github.com/mongodb/mongo-cxx-driver/releases/download/r3.11.0/mongo-cxx-driver-r3.11.0.tar.gz" -o mongo-cxx-driver.tar.gz
tar -xzf mongo-cxx-driver.tar.gz
mv mongo-cxx-driver-r3.11.0 mongo-cxx-driver
cd mongo-cxx-driver/build
cmake .. -DCMAKE_BUILD_TYPE=Release -DMONGOCXX_OVERRIDE_DEFAULT_INSTALL_PREFIX=OFF
sudo cmake --build . --target install
cd ../..
rm mongo-cxx-driver.tar.gz
# Install jwt-cpp
git clone https://github.com/Thalhammer/jwt-cpp.git
cd jwt-cpp
mkdir build && cd build
cmake ..
sudo make install
cd ../..
# Install bcrypt
git clone https://github.com/trusch/libbcrypt.git bcrypt
cd bcrypt
mkdir build && cd build
cmake ..
make
sudo make install
cd ../..
# Install Poco library
git clone https://github.com/pocoproject/poco.git Poco
cd Poco || { echo "Failed to change to Poco directory"; exit 1; }
mkdir -p cmake-build
cd cmake-build || { echo "Failed to change to Poco build directory"; exit 1; }
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j$(nproc)
sudo make install
cd ../..
- name: Configure CMake
run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}}
- name: Build
run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}}
- name: setup database
run: docker compose up -d
- name: Test
working-directory: ${{github.workspace}}/build
run: ctest -C ${{env.BUILD_TYPE}} --output-on-failure
- name: Clean up
run: |
cd ${{github.workspace}}/external_libraries
rm -f *.tar.gz