forked from RexOps/Rex
-
Notifications
You must be signed in to change notification settings - Fork 1
151 lines (140 loc) · 4.93 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
149
150
151
name: build and test
on:
schedule:
- cron: '0 6 * * *'
push:
branches:
- '*'
tags-ignore:
- '*'
pull_request:
env:
PERL_CPANM_OPT: "--quiet --notest"
AUTHOR_TESTING: 1
EXTENDED_TESTING: 1
RELEASE_TESTING: 1
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Check out repository
uses: actions/checkout@v2
- name: Extract author information
run: |
echo AUTHOR_NAME="$(git log -1 ${GITHUB_REF} --pretty='%aN')" >> $GITHUB_ENV
echo AUTHOR_EMAIL="$(git log -1 ${GITHUB_REF} --pretty='%aE')" >> $GITHUB_ENV
- name: Setup Perl
uses: shogo82148/actions-setup-perl@v1
- name: Setup Perl environment
run: |
echo PERL5LIB="${GITHUB_WORKSPACE}/local/lib/perl5:${PERL5LIB}" >> $GITHUB_ENV
echo PERL_VERSION="$(perl -E 'print $^V')" >> $GITHUB_ENV
echo BUILD_TIMESTAMP="$(date +%FT%T)" >> $GITHUB_ENV
echo "${GITHUB_WORKSPACE}/local/bin" >> $GITHUB_PATH
- name: Get operating system version
run: echo OS_VERSION="$(lsb_release -sr)" >> $GITHUB_ENV
- name: Cache build modules
uses: actions/cache@v2
with:
path: local
key: cache-build-modules-${{ env.OS_VERSION }}-${{ env.PERL_VERSION }}-${{ env.BUILD_TIMESTAMP }}
restore-keys: cache-build-modules-${{ env.OS_VERSION }}-${{ env.PERL_VERSION }}-
- name: Cache perlcritic history
uses: actions/cache@v2
with:
path: /tmp/cache/.perlcritic-history
key: cache-perlcritic-history-${{ env.BUILD_TIMESTAMP }}
restore-keys: cache-perlcritic-history-
- name: Log perl information
run: perl -V
- name: Install packages
run: sudo apt-get install -y libmagic-dev default-mysql-server rsync aspell
- name: Install build dependencies
run: cpanm --local-lib ${GITHUB_WORKSPACE}/local Dist::Zilla Perl::Critic Perl::Tidy Devel::Cover::Report::Coveralls Pod::Coverage::CountParents
- name: Configure Dist::Zilla
run: |
mkdir ~/.dzil
echo "[%User]" > ~/.dzil/config.ini
echo "name = ${AUTHOR_NAME}" >> ~/.dzil/config.ini
echo "email = ${AUTHOR_EMAIL}" >> ~/.dzil/config.ini
cat ~/.dzil/config.ini
- name: Install author dependencies
run: dzil authordeps | cpanm --local-lib ${GITHUB_WORKSPACE}/local
- name: Build dist
run: dzil build --no-tgz --in build
- name: Install dependencies
run: |
cd build
cpanm --installdeps --local-lib ${GITHUB_WORKSPACE}/local --with-all-features --with-develop --with-suggests .
- name: Run extra tests
run: |
cd build
prove --timer --lib --recurse --jobs $(nproc) --shuffle xt
- name: Run tests
run: |
cd build
HARNESS_PERL_SWITCHES=-MDevel::Cover=+ignore,^t/ prove --timer --lib --recurse --jobs $(nproc) --shuffle t
- name: Report coverage info to Coveralls
run: |
cd build
cover -report coveralls
rm -rf cover_db
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Upload build results
uses: actions/upload-artifact@v2
with:
name: build_results
path: build
linux:
needs: build
runs-on: ubuntu-latest
steps:
- name: Download build results
uses: actions/download-artifact@v2
with:
name: build_results
- name: Setup Perl
uses: shogo82148/actions-setup-perl@v1
- name: Log perl information
run: perl -V
- name: Install dependencies
run: cpanm --installdeps --with-all-features .
- name: Run tests
run: prove --timer --lib --recurse --jobs $(nproc) --shuffle t
macos:
needs: build
runs-on: macOS-latest
steps:
- name: Download build results
uses: actions/download-artifact@v2
with:
name: build_results
- name: Setup Perl
uses: shogo82148/actions-setup-perl@v1
- name: Log perl information
run: perl -V
- name: Install dependencies
run: cpanm --installdeps --with-all-features .
- name: Run tests
run: prove --timer --lib --recurse --jobs $(sysctl -n hw.ncpu) --shuffle t
windows:
needs: build
runs-on: windows-latest
steps:
- name: Download build results
uses: actions/download-artifact@v2
with:
name: build_results
- name: Setup Perl
uses: shogo82148/actions-setup-perl@v1
with:
distribution: strawberry
- name: Log perl information
run: perl -V
- name: Install dependencies
run: cpanm --installdeps --with-all-features --without-feature=custom_output --without-feature=rsync .
- name: Install OS-specific dependency
run: cpanm Net::SSH2
- name: Run tests
run: prove --timer --lib --recurse --jobs $(nproc) --shuffle t