-
Notifications
You must be signed in to change notification settings - Fork 23
131 lines (111 loc) · 4 KB
/
coverage.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
name: Test coverage
on:
schedule:
- cron: "0 22 * * 5"
jobs:
test:
name: test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
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@v4
with:
name: charmhubio-coverage
path: coverage
retention-days: 1
publish-coverage-report:
name: publish-coverage-report
runs-on: ubuntu-latest
needs: test
continue-on-error: true
steps:
- uses: actions/checkout@v4
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@v4
with:
name: charmhubio-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 "[email protected]"
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/charmhub.io/coverage
echo "::notice title=Published Playwright Test Report::$FULL_HTML_REPORT_URL"
tics-report:
runs-on: ubuntu-latest
needs: publish-coverage-report
steps:
- uses: actions/checkout@v4
- name: Download coverage report artifact
uses: actions/download-artifact@v4
with:
name: charmhubio-coverage
path: coverage
- name: Install Python requirements
run: |
sudo pip3 install -r requirements.txt
- name: Install Python dependencies
run: sudo pip3 install pylint
- name: Install JS dependencies
run: yarn install
- name: Produce TICS report
shell: bash
run: |
set -x
export TICSAUTHTOKEN=${{ secrets.TICS_AUTH_TOKEN }}
curl --silent --show-error "https://canonical.tiobe.com/tiobeweb/TICS/api/public/v1/fapi/installtics/Script?cfg=default&platform=linux&url=https://canonical.tiobe.com/tiobeweb/TICS/" > install_tics.sh
. ./install_tics.sh
TICSQServer -project charmhub.io -tmpdir /tmp/tics -branchdir .