forked from openhwgroup/cva6
-
Notifications
You must be signed in to change notification settings - Fork 33
66 lines (64 loc) · 2.59 KB
/
cheshire.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
# Copyright 2024 PULP Platform
# Licensed under the Apache License, Version 2.0, see LICENSE for details.
# SPDX-License-Identifier: Apache-2.0
name: cheshire
on: [push, pull_request_target]
jobs:
trigger_cheshire_ci:
name: Trigger Cheshire CI
runs-on: ubuntu-latest
steps:
- name: Checkout Cheshire
uses: actions/checkout@v4
with:
repository: pulp-platform/cheshire
ref: cva6/pulp-v1.0.0
token: ${{ secrets.CHESHIRE_TOKEN }}
- name: Install Python
uses: actions/setup-python@v4
with:
python-version: 3.9
- name: Install Python requirements
shell: bash
# PIP has very noisy, uncollapsible output, making following script output hard to read
run: pip install --disable-pip-version-check --quiet --progress-bar off requests urllib3
- name: Patch Bender.lock
run: "sed -i \"/ cva6:/{n;s/.*/ revision: $GITHUB_SHA/;}\" Bender.lock"
- name: Commit ref
run: |
git checkout -b cva6-ci/$(git rev-parse --short "$GITHUB_SHA")
git add Bender.lock
git -c user.name='CVA6 CI Bot' -c user.email='[email protected]' commit -m "CVA6 regression test"
- name: Push ref
run: git push --set-upstream origin cva6-ci/$(git rev-parse --short "$GITHUB_SHA")
- name: Wait for Cheshire CI
run: |
python3 -c "
import time
import requests
poll_count = 720
poll_period = 10
api_version = '2022-11-28'
check_runs_url = f'https://api.github.com/repos/pulp-platform/cheshire/commits/cva6-ci/$(git rev-parse --short $GITHUB_SHA)/check-runs'
headers = {'Accept': 'application/vnd.github+json',
'Authorization': 'Bearer ${{ secrets.CHESHIRE_TOKEN }}',
'X-GitHub-Api-Version': api_version}
for i in range(1, poll_count+1):
pending = 0
failed = 0
response = requests.get(check_runs_url, headers=headers).json()
print(response)
for r in response['check_runs']:
if r['status'] in ('queued', 'in_progress'):
pending+=1
if r['conclusion'] == 'failure':
print(f'[{i*poll_period}s] Pipeline failure!')
exit(1)
if response['total_count'] > 0 and not pending:
print(f'[{i*poll_period}s] Pipeline success!')
exit(0)
print(f'[{i*poll_period}s] Pipeline running')
time.sleep(poll_period)
else:
print(f'[{poll_count*poll_period}s] Pipeline completion timeout!')
exit(2)"