forked from eclipse-uprotocol/up-transport-zenoh-cpp
-
Notifications
You must be signed in to change notification settings - Fork 1
144 lines (121 loc) · 3.99 KB
/
ci.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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
name: CI
on:
push:
branches: ["**"]
pull_request:
branches: ["**"]
workflow_call:
workflow_dispatch:
jobs:
build-zenoh-c:
name: Build Zenoh-C
runs-on: ubuntu-latest
steps:
- name: Install Rust toolchain
run: rustup component add rustfmt clippy
- name: Clone Zenoh-C
run: |
pwd
git clone https://github.com/eclipse-zenoh/zenoh-c.git
cd zenoh-c && git rev-parse HEAD > .gh_head_rev && cat .gh_head_rev
- name: Cached rust + c build
uses: Swatinem/rust-cache@v2
with:
shared-key: zenohc
key: ${{ hashFiles('zenoh-c/.gh_head_rev') }}
cache-directories: |
zenoh-c/build
# - name: Cached Cargo files
# uses: actions/cache@v4
# with:
# key: zenohc-cargo-${{ hashFiles('zenoh-c/.gh_head_rev') }}
# restore-keys: |
# zenohc-cargo-
# path: |
# ~/.cargo
# - name: Cached Zenoh-C build
# uses: actions/cache@v4
# with:
# key: zenohc-${{ hashFiles('zenoh-c/.gh_head_rev') }}
# path: |
# zenoh-c/build
- name: Build and install Zenoh-C
shell: bash
run: |
cd zenoh-c
if [ ! -e build ]; then
mkdir -p build
fi
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=~/local
cmake --build . --target install --config Release -- -j
- name: Upload artifacts for dependent jobs
uses: actions/upload-artifact@v4
with:
name: libzenohc
path: ~/local
retention-days: 1
build-up-cpp:
name: Build up-cpp
runs-on: ubuntu-latest
steps:
- name: Install Conan
id: conan
uses: turtlebrowser/get-conan@main
- name: Create default Conan profile
run: conan profile detect
- name: Create up-cpp Conan package
shell: bash
run: |
git clone https://github.com/eclipse-uprotocol/up-cpp.git
cd up-cpp
git submodule update --init --recursive
conan create . --build=missing
- name: Upload artifacts for dependent jobs
uses: actions/upload-artifact@v4
with:
name: up-cpp-conan2
path: ~/.conan2
retention-days: 1
build-up-client-zenoh-cpp:
name: Build up-client-zenoh-cpp
needs: [ build-zenoh-c, build-up-cpp ]
runs-on: ubuntu-latest
steps:
- name: Download libzenohc
uses: actions/download-artifact@v4
with:
name: libzenohc
path: ~/local
- name: Download up-cpp conan packages
uses: actions/download-artifact@v4
with:
name: up-cpp-conan2
path: ~/.conan2
- uses: actions/checkout@v4
- name: Install Conan
id: conan
uses: turtlebrowser/get-conan@main
- name: Build && install up-client-zenoh-cpp
shell: bash
run: |
export CMAKE_PREFIX_PATH="$HOME/local"
export CMAKE_ZENOH_INCLUDE_PATH="$HOME/local/include"
mkdir build
cd build
conan install ../ -o build_unbundled=True -o zenoh_package=False
cmake ../ -DCMAKE_TOOLCHAIN_FILE=conan_toolchain.cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=~/local
cmake --build . --target install --config Release -- -j
# NOTE: In GitHub repository settings, the "Require status checks to pass
# before merging" branch protection rule ensures that commits are only merged
# from branches where specific status checks have passed. These checks are
# specified manually as a list of workflow job names. Thus we use this extra
# job to signal whether all CI checks have passed.
ci:
name: CI status checks
runs-on: ubuntu-latest
needs: [ build-zenoh-c, build-up-cpp, build-up-client-zenoh-cpp ]
if: always()
steps:
- name: Check whether all jobs pass
run: echo '${{ toJson(needs) }}' | jq -e 'all(.result == "success")'