-
Notifications
You must be signed in to change notification settings - Fork 0
181 lines (156 loc) · 5.32 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
169
170
171
172
173
174
175
176
177
178
179
180
181
name: CI
on:
push:
branches:
- master
pull_request:
branches:
- master
schedule:
- cron: '11 1 * * 0'
jobs:
build:
runs-on: ubuntu-latest
env:
CI: true
strategy:
matrix:
compiler:
- clang
- gcc
container:
- almalinux:8
- alpine:3.14
- ubuntu:18.04
container: ${{ matrix.container }}
steps:
- name: Checkout ProFTPD
uses: actions/checkout@v2
with:
repository: proftpd/proftpd
path: proftpd
- name: Checkout module source code
uses: actions/checkout@v2
with:
path: proftpd/contrib/mod_aws
- name: Whitespace check
if: ${{ matrix.container == 'ubuntu:18.04' }}
run: |
apt-get update -qq
apt-get install -y git
cd proftpd/contrib/mod_aws
if [[ -n $(git diff --check HEAD^) ]]; then
echo "You must remove whitespace before submitting a pull request"
echo ""
git diff --check HEAD^
exit 1
fi
- name: Install Alpine packages
if: ${{ matrix.container == 'alpine:3.14' }}
run: |
apk update
# for builds
apk add bash build-base clang compiler-rt-static gcc make zlib-dev
# for unit tests
apk add check check-dev subunit subunit-dev
# for Curl support
apk add curl-dev
# for OpenSSL support
apk add openssl-dev
# for XML support
apk add libxml2-dev
# for debugging
clang --version
gcc --version
- name: Install RPM packages
if: ${{ matrix.container == 'almalinux:8' }}
run: |
# Need to add other repos for e.g. libsodium
yum install -y dnf-plugins-core epel-release clang gcc make zlib-devel
# for unit tests
yum install -y check-devel https://cbs.centos.org/kojifiles/packages/subunit/1.4.0/1.el8/x86_64/subunit-1.4.0-1.el8.x86_64.rpm https://cbs.centos.org/kojifiles/packages/subunit/1.4.0/1.el8/x86_64/subunit-devel-1.4.0-1.el8.x86_64.rpm
# for Curl support
yum install -y libcurl-devel
# for OpenSSL support
yum install -y openssl-devel
# for XML support
yum install -y libxml2-devel
# for debugging
clang --version
gcc --version
- name: Install Ubuntu packages
if: ${{ matrix.container == 'ubuntu:18.04' }}
run: |
apt-get update -qq
# for builds
apt-get install -y clang gcc make
# for unit tests
apt-get install -y check libsubunit-dev
# for Curl support
apt-get install -y libcurl4-openssl-dev
# for OpenSSL support
apt-get install -y libssl-dev
# for XML support
apt-get install -y libxml2-dev
# for integration/regression test
# for test code coverage
apt-get install -y lcov ruby
gem install coveralls-lcov
# for HTML validation
apt-get install -y tidy
# for debugging
clang --version
gcc --version
- name: Prepare code coverage
if: ${{ matrix.container == 'ubuntu:18.04' }}
run: |
lcov --directory proftpd --zerocounters
- name: Build as static module
env:
CC: ${{ matrix.compiler }}
run: |
cd proftpd
./configure LIBS="-lm -lsubunit -lrt -pthread" --enable-devel=coverage --enable-tests --with-includes=/usr/include/libxml2 --with-modules=mod_aws
make
- name: Run unit tests
env:
CC: ${{ matrix.compiler }}
# Note: Skip the unit tests on Alpine
if: ${{ matrix.container != 'alpine:3.14' }}
run: |
cd proftpd/contrib/mod_aws
make TEST_VERBOSE=1 check
- name: Upload code coverage
env:
COVERALLS_REPO_TOKEN: ${{ secrets.GITHUB_TOKEN }}
if: ${{ matrix.compiler == 'gcc' && matrix.container == 'ubuntu:18.04' }}
run: |
cd proftpd/contrib/mod_aws
lcov --ignore-errors gcov,source --directory . --capture --output-file all.info
# filter out system and test code
lcov --output-file coverage.info --remove all.info '*/t/*'
# debug before upload
lcov --list coverage.info
# upload coverage info to coveralls
coveralls-lcov --repo-token="$COVERALLS_REPO_TOKEN" --service-name=github --service-job-id="$GITHUB_RUN_ID" --branch="$GITHUB_REF" coverage.info
- name: Install as static module
run: |
cd proftpd
make install
- name: Build as shared module
env:
CC: ${{ matrix.compiler }}
run: |
cd proftpd
make clean
./configure LIBS="-lm -lsubunit -lrt -pthread" --enable-devel --enable-dso --with-includes=/usr/include/libxml2 --with-shared=mod_aws
make
- name: Install as shared module
run: |
cd proftpd
make install
- name: Check HTML docs
if: ${{ matrix.container == 'ubuntu:18.04' }}
run: |
cd proftpd/contrib/mod_aws
for f in $(/bin/ls *.html); do echo "Processing $f"; tidy -errors -omit -q $f; done || exit 0