47 lines
1.6 KiB
Bash
Executable File
47 lines
1.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# DESCRIPTION: Verilator: CI script for 'pages.yml', notifies PRs
|
|
#
|
|
# Copyright 2025 by Geza Lore. This program is free software; you
|
|
# can redistribute it and/or modify it under the terms of either the GNU
|
|
# Lesser General Public License Version 3 or the Perl Artistic License
|
|
# Version 2.0.
|
|
#
|
|
# SPDX-License-Identifier: LGPL-3.0-only OR Artistic-2.0
|
|
|
|
# Notify PRs via comment that their coverage reports are available
|
|
|
|
# Get the current repo URL - might differ on a fork
|
|
readonly REPO_URL=$(gh repo view --json url --jq .url)
|
|
|
|
# Create artifacts root directory
|
|
ARTIFACTS_ROOT=artifacts
|
|
mkdir -p ${ARTIFACTS_ROOT}
|
|
|
|
for RUN_ID in ${COVERAGE_PR_RUN_IDS//,/ }; do
|
|
echo "@@@ Processing run ${RUN_ID}"
|
|
|
|
# Create workflow artifacts directory
|
|
ARTIFACTS_DIR=${ARTIFACTS_ROOT}/${RUN_ID}
|
|
mkdir -p ${ARTIFACTS_DIR}
|
|
|
|
# Download artifact of this run, if exists
|
|
gh run download ${RUN_ID} --name coverage-pr-notification --dir ${ARTIFACTS_DIR} || true
|
|
ls -lsha ${ARTIFACTS_DIR}
|
|
|
|
# Move on if no notification is required
|
|
if [ ! -f ${ARTIFACTS_DIR}/pr-number.txt ]; then
|
|
echo "No notification found"
|
|
continue
|
|
fi
|
|
echo "Posting notification found"
|
|
|
|
cat ${ARTIFACTS_DIR}/body.txt
|
|
gh pr comment $(cat ${ARTIFACTS_DIR}/pr-number.txt) --body-file ${ARTIFACTS_DIR}/body.txt
|
|
|
|
# Get the artifact ID
|
|
ARTIFACT_ID=$(gh api "repos/{owner}/{repo}/actions/runs/${RUN_ID}/artifacts" --jq '.artifacts[] | select(.name == "coverage-pr-notification") | .id')
|
|
|
|
# Delete it, so we only notify once
|
|
gh api --method DELETE "repos/{owner}/{repo}/actions/artifacts/${ARTIFACT_ID}"
|
|
done
|