-
Notifications
You must be signed in to change notification settings - Fork 0
150 lines (129 loc) · 3.95 KB
/
lint-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
---
# Lint the code base and launch unit test at each push or pull request
name: Lint and test
on:
push:
workflow_dispatch:
jobs:
linters:
runs-on: ubuntu-22.04
strategy:
fail-fast: true
matrix:
vendor:
- ubuntu
steps:
- name: Checkout Code
uses: actions/checkout@v3
- uses: ouzi-dev/commit-status-updater@v2
with:
name: lint
status: pending
- name: Install vendors
run: |
set -exo pipefail
./bin/installRequirements
- name: Linting - Shellcheck
run: |
set -exo pipefail
./bin/shellcheckLint -f checkstyle | tee logs/shellcheck-checkstyle.xml
- name: Linting - Framework
run: |
set -exo pipefail
./bin/frameworkLint -f checkstyle | tee logs/framework-checkstyle.xml
- name: Linting - Awk
run: |
set -exo pipefail
./bin/awkLint | tee logs/awk-checkstyle.xml
- name: build bin files + check md5
run: |
set -exo pipefail
./bin/buildBinFiles 2>&1 | tee logs/buidBinFiles.log
- name: Checkstyle aggregation
uses: jwgmeligmeyling/checkstyle-github-action@master
with:
path: 'logs/*-checkstyle.xml'
- name: Archive results
uses: actions/upload-artifact@v3
with:
name: linter-reports
path: |
logs/*.xml
logs/*.log
- uses: ouzi-dev/commit-status-updater@v2
if: always()
with:
name: lint
status: ${{ job.status }}
tests:
needs: linters
runs-on: ubuntu-22.04
strategy:
fail-fast: true
matrix:
vendor:
- ubuntu
- alpine
bashTarVersion:
- '4.4'
- '5.0'
- '5.1'
include:
- vendor: ubuntu
bashImage: ubuntu:20.04
options: -j 1
- vendor: alpine
bashImage: bash
options: -j 1
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Login to DockerHub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- uses: ouzi-dev/commit-status-updater@v2
with:
name: build bash-tools-${{matrix.vendor}}-${{matrix.bashTarVersion}}
status: pending
- name: run unit tests
run: |
set -exo pipefail
./bin/installRequirements
# shellcheck disable=SC2266
VENDOR="${{ matrix.vendor }}" \
BASH_TAR_VERSION="${{ matrix.bashTarVersion }}" \
BASH_IMAGE="${{ matrix.bashImage }}" \
SKIP_BUILD=0 \
SKIP_USER=1 \
./bin/test ${{matrix.options}} --report-formatter junit -o logs -r src
- name: Publish Unit Test Results
uses: EnricoMi/publish-unit-test-result-action@v1
if: always()
with:
files: logs/report.xml
check_name:
'Unit Test Results ${{matrix.vendor}} ${{matrix.bashTarVersion}}'
- uses: ouzi-dev/commit-status-updater@v2
if: always()
with:
name: build bash-tools-${{matrix.vendor}}-${{matrix.bashTarVersion}}
status: ${{ job.status }}
buildResults:
if: ${{ always() }}
runs-on: ubuntu-latest
name: Final Build Results
needs: [linters, tests]
steps:
# run this action to get the workflow conclusion
# You can get the conclusion via env (env.WORKFLOW_CONCLUSION)
- uses: technote-space/workflow-conclusion-action@v3
# run other action with the workflow conclusion
- uses: ouzi-dev/commit-status-updater@v2
with:
name: build
# neutral, success, skipped, cancelled, timed_out, action_required, failure
status: ${{ env.WORKFLOW_CONCLUSION }}