Files
doc-exports/.gitea/workflows/run-hcdc.yaml

96 lines
3.4 KiB
YAML

name: Run HCDC
on:
pull_request:
types: [opened, reopened, synchronize, edited]
jobs:
run-hcdc:
runs-on: ubuntu-latest
steps:
- name: Checkout PR head (same repo)
if: ${{ gitea.event.pull_request.head.repo.full_name == gitea.repository }}
uses: https://github.com/actions/checkout@v4
with:
repository: ${{ gitea.repository }}
ref: ${{ gitea.event.pull_request.head.ref }}
fetch-depth: 0
persist-credentials: false
token: ${{ gitea.token }}
- name: Checkout PR head (fork via PR ref)
if: ${{ gitea.event.pull_request.head.repo.full_name != gitea.repository }}
uses: https://github.com/actions/checkout@v4
with:
repository: ${{ gitea.repository }}
ref: refs/pull/${{ gitea.event.pull_request.number }}/head
fetch-depth: 0
persist-credentials: false
token: ${{ gitea.token }}
- name: Checkout base
uses: https://github.com/actions/checkout@v4
with:
repository: ${{ gitea.repository }}
ref: ${{ gitea.event.pull_request.base.ref }}
path: base
fetch-depth: 0
persist-credentials: false
token: ${{ gitea.token }}
- name: Get OTC token
id: otc
uses: https://github.com/opentelekomcloud-infra/github-actions/.github/actions/get-otc-token@v1
with:
os_username: ${{ secrets.OTC_HCDC_USERNAME }}
os_password: ${{ secrets.OTC_HCDC_PASSWORD }}
os_domain_name: ${{ secrets.OTC_HCDC_DOMAIN_NAME }}
os_project_id: ${{ secrets.OTC_HCDC_PROJECT_ID }}
- name: Run HCDC
id: hcdc
uses: https://github.com/opentelekomcloud-infra/github-actions/.github/actions/run-hcdc@v1
with:
auth_token: ${{ steps.otc.outputs.auth_token }}
pr_branch: ${{ gitea.event.pull_request.head.ref }}
base_branch: ${{ gitea.event.pull_request.base.ref }}
python-version: "3.12"
- name: Comment in case there's an error
if: ${{ failure() && steps.hcdc.outcome == 'failure' }}
env:
GITEA_URL: ${{ gitea.server_url }}
REPO: ${{ gitea.repository }}
PR_NUMBER: ${{ gitea.event.pull_request.number }}
TOKEN: ${{ gitea.token }}
run: |
set -euo pipefail
MSG="HCDC check detected possible illegal characters. Please check logs and review the affected images/text."
if [ -f hcdc.json ]; then
BODY="$(jq -r --arg msg "$MSG" '
def list_paths(obj):
(obj.files // [])
| map(select((.detected // false) == true) | .file)
| unique;
def section(title; arr):
title + ":\n" + (if (arr|length)>0 then (arr | map("- " + .) | join("\n")) else "- (none)" end);
$msg + "\n\n"
+ section("Images"; (try list_paths(.images) catch []))
+ "\n\n"
+ section("Text"; (try list_paths(.text) catch []))
| {body: .}
| @json
' hcdc.json)"
else
BODY="$(jq -n --arg msg "$MSG" '{body: $msg}')"
fi
curl -sS --fail-with-body -X POST \
-H "Authorization: token ${TOKEN}" \
-H "Content-Type: application/json" \
"${GITEA_URL}/api/v1/repos/${REPO}/issues/${PR_NUMBER}/comments" \
-d "${BODY}"