-
Notifications
You must be signed in to change notification settings - Fork 16
141 lines (119 loc) · 4.85 KB
/
cmake.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
name: CI build
on:
push:
branches: [ '**' ]
pull_request:
branches: [ main ]
workflow_call:
jobs:
build:
runs-on: ${{ matrix.os }}
container: ${{ matrix.container }}
name: build ${{ matrix.target }}
env:
common_ubuntu_deps: curl doxygen libssl-dev libsystemd-dev pkg-config zlib1g-dev zip
strategy:
fail-fast: false
matrix:
include:
- os: macOS-11
name: macOS x86_64
target: macOS-x64
- os: macOS-11
name: macOS arm64
target: macOS-arm64
- os: windows-latest
name: Windows x86_64
target: windows-x64
- os: windows-latest
name: Windows arm64
target: windows-arm64
- os: ubuntu-20.04
container: ubuntu:18.04
name: Linux x86_64
install: $common_ubuntu_deps build-essential
# build current openssl libs instead of using old versions provided by apt on ubuntu 18
cmake_opts: "`-DVCPKG_OVERLAY_PORTS=./vcpkg-overlays/linux-syslibs/ubuntu18`"
target: linux-x64
- os: ubuntu-20.04
container: ubuntu:18.04
name: Linux arm
# build current openssl libs instead of using old versions provided by apt on ubuntu 18
install: $common_ubuntu_deps crossbuild-essential-armhf
cmake_opts: "`-DVCPKG_OVERLAY_PORTS=./vcpkg-overlays/linux-syslibs/ubuntu18`"
target: linux-arm
- os: ubuntu-20.04
container: ubuntu:18.04
name: Linux arm64
install: $common_ubuntu_deps crossbuild-essential-arm64
# build current openssl libs instead of using old versions provided by apt on ubuntu 18
cmake_opts: "`-DVCPKG_OVERLAY_PORTS=./vcpkg-overlays/linux-syslibs/ubuntu18`"
target: linux-arm64
steps:
- name: install tools
if: ${{ matrix.install != null }}
run: |
apt -y update
apt -y install ${{ matrix.install }}
- name: install contemporary git
if: ${{ matrix.container != null }}
run: |
apt -y update
apt -y install software-properties-common
add-apt-repository -y ppa:git-core/ppa
apt -y update
apt -y install git
git config --global --add safe.directory $GITHUB_WORKSPACE
git --version
# run this step if Linux and arm or arm64
- name: subscribe to apt multiarch ports and install libssl-dev for target arch
if: matrix.container != null && matrix.target != 'linux-x64'
run: |
case ${{ matrix.target }} in
linux-arm) TARGETARCH=armhf;;
linux-arm64) TARGETARCH=arm64;;
esac
dpkg --add-architecture ${TARGETARCH}
cat <<EOF > /etc/apt/sources.list.d/crossbuild.list
deb [arch=${TARGETARCH}] http://ports.ubuntu.com/ bionic main restricted
deb [arch=${TARGETARCH}] http://ports.ubuntu.com/ bionic-updates main restricted
deb [arch=${TARGETARCH}] http://ports.ubuntu.com/ bionic universe
deb [arch=${TARGETARCH}] http://ports.ubuntu.com/ bionic-updates universe
deb [arch=${TARGETARCH}] http://ports.ubuntu.com/ bionic multiverse
deb [arch=${TARGETARCH}] http://ports.ubuntu.com/ bionic-updates multiverse
deb [arch=${TARGETARCH}] http://ports.ubuntu.com/ bionic-backports main restricted universe multiverse
EOF
sed -Ei 's/^deb/deb [arch=amd64]/g' /etc/apt/sources.list
apt-get update
apt-get -y install libssl-dev:${TARGETARCH} zlib1g-dev:${TARGETARCH}
- name: checkout workspace
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: install contemporary cmake
uses: lukka/get-cmake@latest
- uses: lukka/run-vcpkg@v10
with:
# use 2023.02.24 vcpkg baseline,
# see https://learn.microsoft.com/en-us/vcpkg/users/examples/versioning.getting-started#builtin-baseline
vcpkgGitCommitId: 'a7b6122f6b6504d16d96117336a0562693579933'
- uses: lukka/run-cmake@v10
name: Configure CMake
with:
configurePreset: ci-${{ matrix.target }}
configurePresetAdditionalArgs: "[ `-B`, `./build`, ${{ matrix.cmake_opts }} ]"
- name: build ziti-edge-tunnel bundle target
run: cmake --build ./build --target bundle --verbose
- name: list bundle artifacts
run: ls -R
working-directory: ./build/bundle/
- name: list program artifacts
run: ls -R
working-directory: ./build/programs/ziti-edge-tunnel/
- name: upload bundle artifacts
uses: actions/upload-artifact@v3
with:
name: ${{ matrix.target }}
path: |
./build/bundle/ziti-edge-tunnel-*.zip
if-no-files-found: error