Skip to content

fixup! CI: Add cheshire CI #32

fixup! CI: Add cheshire CI

fixup! CI: Add cheshire CI #32

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);"