-
Notifications
You must be signed in to change notification settings - Fork 478
139 lines (123 loc) · 3.78 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
# Continuous integration workflow for SOCI.
name: GitHub CI
on:
push:
branches:
- master
- 'release/**'
paths-ignore:
- .circleci/**
- .cirrus.yml
- .github/workflows/codeql.yml
- appveyor.yml
pull_request:
branches:
- master
paths-ignore:
- .circleci/**
- .cirrus.yml
- .github/workflows/codeql.yml
- appveyor.yml
jobs:
build:
strategy:
fail-fast: false
matrix:
lib_type: [shared, static]
# Can't test DB2 as required db2exc package is no longer available after Ubuntu 14.04
backend: [sqlite3, postgresql, mysql, firebird, oracle, odbc, empty, valgrind]
runner: [ubuntu-22.04]
cxxstd: [14]
test_release_package: [false]
build_examples: [false]
include:
- backend: empty
runner: macos-12
no_boost: true
- backend: postgresql
runner: macos-12
no_boost: true
- backend: sqlite3
runner: macos-12
no_boost: true
- backend: oracle
no_boost: true
runner: ubuntu-22.04
- name: SQLite3 Cxx17
backend: sqlite3
cxxstd: 17
runner: ubuntu-22.04
- name: Release package
backend: empty
test_release_package: true
runner: ubuntu-22.04
- name: Examples
backend: empty
build_examples: true
runner: ubuntu-22.04
runs-on: ${{ matrix.runner }}
env:
SOCI_CI: true
SOCI_CI_BACKEND: ${{ matrix.backend }}
SOCI_MYSQL_ROOT_PASSWORD: root
ASAN_OPTIONS: fast_unwind_on_malloc=0
steps:
- name: Checkout
run: |
case "${{matrix.container}}" in
ubuntu:18.04)
export DEBIAN_FRONTEND=noninteractive
apt-get update -qq
apt-get install -qq git
;;
esac
git config --global init.defaultBranch master
git config --global --add safe.directory `pwd`
git config --global advice.detachedHead false
git init .
git remote add origin https://github.com/SOCI/soci.git
git fetch --depth=1 origin $GITHUB_SHA
git checkout FETCH_HEAD
- name: Set environment variables
run: |
set_env_var() {
echo "Setting environment variable $1=$2"
echo $1=$2 >> $GITHUB_ENV
}
set_env_var SOCI_CI_BRANCH $GITHUB_REF
set_env_var SOCI_SOURCE_DIR $GITHUB_WORKSPACE
case "${{runner.os}}" in
Linux)
set_env_var PGHOST localhost
set_env_var PGPORT 5432
set_env_var PGUSER postgres
set_env_var PGPASSWORD 'Password12!'
;;
macOS)
set_env_var PGDATA /usr/local/var/postgres
;;
esac
if [ -n "${{matrix.cxxstd}}" ]; then
set_env_var SOCI_CXXSTD ${{matrix.cxxstd}}
fi
if [ "${{matrix.no_boost}}" = true ]; then
set_env_var WITH_BOOST OFF
fi
if [ "${{matrix.test_release_package}}" = true ]; then
set_env_var TEST_RELEASE_PACKAGE YES
fi
if [ "${{matrix.build_examples}}" = true ]; then
set_env_var BUILD_EXAMPLES YES
fi
if [ "${{matrix.lib_type}}" = "static" ]; then
set_env_var SOCI_BUILD_STATIC YES
fi
- name: Install dependencies under Linux
if: runner.os == 'Linux'
run: ./scripts/ci/install.sh
- name: Prepare for build
run: ./scripts/ci/before_build.sh
- name: Build
run: ./scripts/ci/build.sh
- name: Test
run: ./scripts/ci/test.sh