-
Notifications
You must be signed in to change notification settings - Fork 116
151 lines (130 loc) · 4.26 KB
/
coverage.yml
File metadata and controls
151 lines (130 loc) · 4.26 KB
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
name: Test coverage
on:
schedule:
- cron: "0 22 * * *"
workflow_dispatch: # Allows manual triggering
jobs:
test:
name: test
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- uses: actions/checkout@v5
- uses: actions/setup-node@v6
with:
node-version: 20
- name: Install JS dependencies
run: yarn install --immutable
- name: Run JS tests with coverage
run: |
yarn test-js --coverage
mv coverage/js/cobertura-coverage.xml coverage/cobertura-coverage.xml
- name: Install Python requirements
run: |
sudo pip3 install -r requirements.txt
- name: Install Python dependencies
run: sudo pip3 install coverage
- name: Run Python tests with coverage
run: |
SECRET_KEY=simplesecretkey coverage run --source=. -m unittest discover tests
coverage xml -o coverage/coverage.xml
coverage html -d coverage/python
- name: Zip coverage report
run: |
zip -r coverage/cobertura-coverage.zip coverage/cobertura-coverage.xml coverage/coverage.xml
- name: Upload coverage report
if: always()
uses: actions/upload-artifact@v5
with:
name: snapcraftio-coverage
path: coverage
retention-days: 1
publish-coverage-report:
name: publish-coverage-report
runs-on: ubuntu-latest
needs: test
permissions:
contents: write
continue-on-error: true
steps:
- uses: actions/checkout@v5
with:
ref: gh-pages
token: ${{ secrets.GITHUB_TOKEN }}
- name: Cleanup coverage directory
run: |
rm -rf coverage
mkdir coverage
- name: Download coverage report artifact
uses: actions/download-artifact@v6
with:
name: snapcraftio-coverage
path: coverage
# user git configs are needed for git commands to work
# actual authentication is done using secrets.GITHUB_TOKEN with write permission
- name: Set Git User
run: |
git config --global user.email "github-action@example.com"
git config --global user.name "GitHub Action"
- name: Push coverage Report
timeout-minutes: 3
run: |
git add .
git commit -m "workflow: update coverage report"
# In case of another action job pushing to gh-pages while we are rebasing for the current job
while true; do
git pull --rebase
if [ $? -ne 0 ]; then
echo "Failed to rebase. Please review manually."
exit 1
fi
git push
if [ $? -eq 0 ]; then
echo "Successfully pushed HTML report to repo."
exit 0
fi
done
- name: Output Report URL as Worfklow Annotation
run: |
FULL_HTML_REPORT_URL=https://canonical.github.io/snapcraft.io/coverage
echo "::notice title=Published Playwright Test Report::$FULL_HTML_REPORT_URL"
tics-report:
runs-on: [self-hosted, reactive, amd64, tiobe, noble]
permissions:
contents: read
needs: publish-coverage-report
steps:
- uses: actions/checkout@v5
- name: Download coverage report artifact
uses: actions/download-artifact@v6
with:
name: snapcraftio-coverage
path: coverage
- name: Set up Python 3.10
uses: actions/setup-python@v6
with:
python-version: "3.10"
cache: "pip"
- name: Set up Node.js
uses: actions/setup-node@v6
with:
node-version: "22"
cache: "yarn"
- name: Install Python requirements
run: |
python -m pip install --upgrade pip
pip3 install -r requirements.txt
pip3 install pylint
- name: Install JS dependencies
run: |
yarn install --immutable
- name: Run TICS analysis with github-action
uses: tiobe/tics-github-action@v3
with:
mode: qserver
project: snapcraft.io
branchdir: .
viewerUrl: https://canonical.tiobe.com/tiobeweb/TICS/api/cfg?name=default
ticsAuthToken: ${{ secrets.TICSAUTHTOKEN }}
installTics: true