-
Notifications
You must be signed in to change notification settings - Fork 0
148 lines (137 loc) · 4.91 KB
/
build_and_test.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
145
146
147
148
name: build & test (clang, gcc, MSVC)
on:
workflow_dispatch:
push:
branches: [ "master", "dev" ]
paths-ignore:
- '**.md'
pull_request:
branches: [ "master", "dev" ]
paths-ignore:
- '**.md'
jobs:
build:
name: ${{ matrix.config.name }}
runs-on: ${{ matrix.config.os }}
env:
CC: ${{ matrix.config.cc }}
CXX: ${{ matrix.config.cxx }}
strategy:
fail-fast: false
matrix:
config:
- {
name: "Ubuntu 20.04 gcc",
os: ubuntu-20.04,
cmake_vars: "-DBoost_USE_STATIC_LIBS=ON -DBoost_USE_STATIC_RUNTIME=ON",
cmake-preset: gcc-release,
artifacts: "build/lunchtoast"
}
- {
name: "Ubuntu 20.04 clang",
os: ubuntu-20.04,
cmake_vars: "-DBoost_USE_STATIC_LIBS=ON -DBoost_USE_STATIC_RUNTIME=ON",
cmake-preset: clang-release,
artifacts: "build/lunchtoast"
}
- {
name: "Windows Latest MSVC",
os: windows-latest,
cmake_vars: "-DVCPKG_TARGET_TRIPLET=x64-windows-static-md",
cmake-preset: msvc-release,
artifacts: "build/lunchtoast.exe"
}
steps:
- name: Install ninja (Windows)
if: matrix.config.os == 'windows-latest'
run: choco install ninja
- name: Install ninja (Linux)
if: matrix.config.os == 'ubuntu-20.04'
run: sudo apt install ninja-build
- uses: actions/checkout@v4
- uses: hendrikmuhs/ccache-action@v1.2
- uses: ilammy/msvc-dev-cmd@v1
- uses: lukka/run-vcpkg@v10
with:
vcpkgGitCommitId: 31a159c1cae2bf905299085d9ef01bdfea0ca7b8
- name: Configure CMake
run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=Release -DENABLE_TESTS=ON ${{ matrix.config.cmake_vars }} -DCMAKE_TOOLCHAIN_FILE=${{github.workspace}}/vcpkg/scripts/buildsystems/vcpkg.cmake --preset="${{ matrix.config.cmake-preset }}"
- name: Build
run: cmake --build ${{github.workspace}}/build --config Release
- name: Test
working-directory: ${{github.workspace}}/build
run: ctest
- name: Upload build artifact
uses: actions/upload-artifact@v3
with:
name: lunchtoast-build-${{ matrix.config.os }}
path: ${{ matrix.config.artifacts }}
functional_test_windows:
name: Functional testing (Windows)
needs: build
runs-on: windows-latest
steps:
- uses: actions/checkout@v3
- uses: msys2/setup-msys2@v2
with:
path-type: inherit
- uses: robinraju/release-downloader@v1.7
with:
repository: "kamchatka-volcano/lunchtoast"
latest: true
#tag: "v0.1.0-beta"
filename: "lunchtoast.exe"
out-file-path: "master"
- name: Download lunchtoast build
id: pre_launch_tests
uses: actions/download-artifact@v3
with:
name: lunchtoast-build-windows-latest
path: build
- name: Launch tests
id: launch_tests
working-directory: ${{github.workspace}}
run: master/lunchtoast.exe functional_tests -skip=linux -shell="msys2 -c" -collectFailedTests=failed_tests -config="windows_vars.shoal" -searchDepth=1
- name: Upload failed tests
if: failure() && steps.launch_tests.outcome != 'success' && steps.pre_launch_tests.outcome == 'success'
uses: actions/upload-artifact@v3
with:
name: lunchtoast-windows-failed-tests
path: failed_tests
functional_test_linux:
name: Functional testing (Ubuntu)
needs: build
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v3
- uses: robinraju/release-downloader@v1.7
with:
repository: "kamchatka-volcano/lunchtoast"
latest: true
#tag: "v0.1.0-beta"
filename: "lunchtoast"
out-file-path: "master"
- name: Set master lunchtoast execute permissions
shell: sh
working-directory: ${{github.workspace}}/master
run: chmod +x lunchtoast
- name: Download lunchtoast build
uses: actions/download-artifact@v3
with:
name: lunchtoast-build-ubuntu-20.04
path: build
- name: Set lunchtoast build execute permissions
id: pre_launch_tests
shell: sh
working-directory: ${{github.workspace}}/build
run: chmod +x lunchtoast
- name: Launch tests
id: launch_tests
working-directory: ${{github.workspace}}/
run: master/lunchtoast functional_tests/ -skip=windows -collectFailedTests=failed_tests -config=linux_vars.shoal -searchDepth=1
- name: Upload failed tests
if: failure() && steps.launch_tests.outcome != 'success' && steps.pre_launch_tests.outcome == 'success'
uses: actions/upload-artifact@v3
with:
name: lunchtoast-ubuntu-failed-tests
path: failed_tests