-
Notifications
You must be signed in to change notification settings - Fork 1.3k
168 lines (157 loc) · 5.24 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
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
name: CI
on:
push:
pull_request:
workflow_dispatch:
jobs:
build-containers:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
container:
- {os: 'debian', dh: 'debian', ver: 'bookworm', target_arch: 'x86_64'}
- {os: 'fedora', dh: 'fedora', ver: '40', target_arch: 'x86_64'}
- {os: 'alma', dh: 'almalinux', ver: '9', target_arch: 'x86_64'}
- {os: 'oracle', dh: 'oraclelinux', ver: '9', target_arch: 'x86_64'}
- {os: 'rocky', dh: 'rockylinux', ver: '9', target_arch: 'x86_64'}
- {os: 'ubuntu', dh: 'ubuntu', ver: 'noble', target_arch: 'i686'}
- {os: 'ubuntu', dh: 'ubuntu', ver: 'noble', target_arch: 'x86_64'}
container:
image: ${{ matrix.container.dh }}:${{ matrix.container.ver }}
env:
CI_TARGET_BUILD: Linux
CI_TARGET_ARCH: ${{ matrix.container.target_arch }}
CI_TARGET_OS: ${{ matrix.container.os }}
CI_TARGET_OS_VER: ${{ matrix.container.ver }}
steps:
- name: Checkout repo
uses: actions/checkout@v4
- name: Install dependencies
run: ./ci/actions-install.sh
- name: Build
run: ./ci/actions-build.sh
- name: Smoke test
run: ./ci/actions-smoke-test.sh
- name: Full test
run: ./ci/actions-full-test.sh
build:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
build:
- linux-gcc
- linux-clang
- macos
- linux-i686-gcc
- android
- windows-cygwin-64
- windows-cygwin-32
- windows-msys2-64
include:
- build: linux-gcc
os: ubuntu-22.04
cc: gcc
- build: linux-clang
os: ubuntu-22.04
cc: clang
- build: macos
os: macos-13
- build: linux-i686-gcc
os: ubuntu-22.04
arch: i686
- build: android
os: ubuntu-22.04
arch: aarch64-linux-android32
- build: android-recovery
os: ubuntu-22.04
arch: aarch64-linux-android32
- build: windows-cygwin-64
os: windows-latest
arch: x86_64
installer_arch: x64
shell: bash
- build: windows-cygwin-32
os: windows-latest
arch: i686
installer_arch: x86
shell: bash
- build: windows-msys2-64
os: windows-latest
cc: clang
arch: x86_64
installer_arch: x64
shell: msys2
env:
CI_TARGET_BUILD: ${{ matrix.build }}
CI_TARGET_ARCH: ${{ matrix.arch }}
CC: ${{ matrix.cc }}
steps:
- name: git config line endings (Windows)
if: ${{ contains( matrix.build, 'windows' ) }}
run: git config --global core.autocrlf input
- name: Checkout repo
uses: actions/checkout@v4
- name: Install Cygwin toolchain (Windows)
if: ${{ startsWith(matrix.build, 'windows-cygwin') }}
uses: cygwin/cygwin-install-action@master
with:
packages: >
mingw64-${{matrix.arch}}-binutils
mingw64-${{matrix.arch}}-CUnit
mingw64-${{matrix.arch}}-curl
mingw64-${{matrix.arch}}-dlfcn
mingw64-${{matrix.arch}}-gcc-core
mingw64-${{matrix.arch}}-headers
mingw64-${{matrix.arch}}-runtime
mingw64-${{matrix.arch}}-zlib
- name: Install msys2 toolchain (Windows)
if: ${{ startsWith(matrix.build, 'windows-msys2') }}
uses: msys2/setup-msys2@v2
with:
install: >
git
base-devel
mingw-w64-${{matrix.arch}}-clang
mingw-w64-${{matrix.arch}}-cunit
mingw-w64-${{matrix.arch}}-toolchain
mingw-w64-${{matrix.arch}}-lld
mingw-w64-${{matrix.arch}}-python-scipy
mingw-w64-${{matrix.arch}}-python-six
mingw-w64-${{matrix.arch}}-python-statsmodels
mingw-w64-${{matrix.arch}}-python-sphinx
- name: install bash 4 (macOS)
if: ${{ contains( matrix.build, 'macOS' ) }}
run: HOMEBREW_NO_AUTO_UPDATE=1 brew install bash
- name: Install dependencies
run: ${{matrix.shell}} ./ci/actions-install.sh
if: ${{ !contains( matrix.build, 'msys2' ) }}
- name: Build
run: ${{matrix.shell}} ./ci/actions-build.sh
- name: Build installer (Windows)
if: ${{ contains( matrix.build, 'windows' ) }}
shell: cmd
run: |
cd os\windows
dobuild.cmd ${{ matrix.installer_arch }}
cd ..\..
- name: Upload installer as artifact (Windows)
if: ${{ contains( matrix.build, 'windows' ) }}
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.build }}-installer
path: os\windows\*.msi
- name: Upload installer as release for tagged builds (Windows)
uses: softprops/action-gh-release@v1
if: ${{ startsWith(github.ref, 'refs/tags/') && startsWith(matrix.build, 'windows-cygwin') }}
with:
files: os/windows/*.msi
- name: Remove dependency files to resolve Makefile Cygwin sed issue (Windows)
if: ${{ startsWith(matrix.build, 'windows-cygwin') }}
run: rm *.d */*.d */*/*.d
shell: bash
- name: Smoke test
run: ${{matrix.shell}} ./ci/actions-smoke-test.sh
- name: Full test
run: ${{matrix.shell}} ./ci/actions-full-test.sh