Skip to content

fixup! CI: Add cheshire CI #33

fixup! CI: Add cheshire CI

fixup! CI: Add cheshire CI #33

Workflow file for this run

# 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 requests
poll_count = 720
poll_period = 10
api_version = '2022-11-28'
check_runs_url = '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):
response = requests.get(check_runs_url, headers=headers).json()
pending = sum(1 for r in response['check_runs'] if r['status'] == 'in_progress')
failed = sum(1 for r in response['check_runs'] if r.get('conclusion') == 'failure')
if failed:
print(f'[{i * poll_period}s] Pipeline failure!')
exit(1)
if not pending:
print(f'[{i * poll_period}s] Pipeline success!')
exit(0)
print(f'[{i * poll_period}s] Pipelines still in progress...')
import time; time.sleep(poll_period)
else:
print(f'[{poll_count * poll_period}s] Pipeline completion timeout!')
exit(3)"