diff --git a/.github/workflows/cheshire.yml b/.github/workflows/cheshire.yml index 7b916d3e1b..8cc5cf0361 100644 --- a/.github/workflows/cheshire.yml +++ b/.github/workflows/cheshire.yml @@ -3,22 +3,61 @@ # SPDX-License-Identifier: Apache-2.0 name: cheshire -on: [push, pull_request] +on: [push, pull_request_target] jobs: - init: - name: init + trigger_cheshire_ci: + name: Trigger Cheshire CI runs-on: ubuntu-latest steps: - - name: Checkout - uses: actions/checkout@v4 - name: Checkout Cheshire uses: actions/checkout@v4 with: repository: pulp-platform/cheshire - path: cheshire ref: cva6/pulp-v1.0.0 - run-cheshire-ci: - name: run-cheshire-ci - needs: init-cheshire - uses: pulp-platform/cheshire/.github/workflows/lint.yml@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='cva6@bot.com' 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 = 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(pipelines, headers=headers).json() + print(response) + for r in response['check_runs']: + if r['status'] == 'in_progress': + pending+=1 + if r['conclusion'] == 'failure': + print(f'[{i*poll_period}s] Pipeline failure!') + exit(1) + if not pending: + print(f'[{i*poll_period}s] Pipeline success!') + exit(0) + else: + print(f'[{poll_count*poll_period}s] Pipeline completion timeout!') + exit(2)" diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index dd48d3ad60..f2a106ccbe 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -8,8 +8,14 @@ stages: - cheshire +default: + before_script: + - cd cheshire + init: stage: cheshire + before_script: + - echo $PWD script: - git clone https://github.com/pulp-platform/cheshire - cd cheshire @@ -22,7 +28,6 @@ init: cheshire-pipeline: stage: cheshire needs: [ init ] - before_script: cd cheshire trigger: include: - artifact: cheshire/.gitlab-ci.yml