Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Add Credly data to JSON resource#310

Add Credly data to JSON resource

Add Credly data to JSON resource #310

name:Modified Target Validation
on:
pull_request_target:
branches:
-master
paths:
-"sherlock_project/resources/data.json"
jobs:
validate-modified-targets:
runs-on:ubuntu-latest
permissions:
contents:read
pull-requests:write
steps:
-name:Checkout repository
uses:actions/checkout@v5
with:
# Checkout the base branch but fetch all history to avoid a second fetch call
ref:${{ github.base_ref }}
fetch-depth:0
-name:Set up Python
uses:actions/setup-python@v6
with:
python-version:"3.13"
-name:Install Poetry
uses:abatilo/actions-poetry@v4
with:
poetry-version:"latest"
-name:Install dependencies
run:|
poetry install --no-interaction --with dev
-name:Prepare JSON versions for comparison
run:|
# Fetch only the PR's branch head (single network call in this step)
git fetch origin pull/${{ github.event.pull_request.number }}/head:pr
# Find the merge-base commit between the target branch and the PR branch
MERGE_BASE=$(git merge-base origin/${{ github.base_ref }} pr)
echo "Comparing PR head against merge-base commit: $MERGE_BASE"
# Safely extract the file from the PR's head and the merge-base commit
git show pr:sherlock_project/resources/data.json > data.json.head
git show $MERGE_BASE:sherlock_project/resources/data.json > data.json.base
# CRITICAL FIX: Overwrite the checked-out data.json with the one from the PR
# This ensures that pytest runs against the new, updated file.
cp data.json.head sherlock_project/resources/data.json
-name:Discover modified targets
id:discover-modified
run:|
CHANGED=$(
python - <<'EOF'
import json
import sys
try:
with open("data.json.base") as f: base = json.load(f)
with open("data.json.head") as f: head = json.load(f)
except FileNotFoundError as e:
print(f"Error: Could not find {e.filename}", file=sys.stderr)
sys.exit(1)
except json.JSONDecodeError as e:
print(f"Error: Could not decode JSON from a file - {e}", file=sys.stderr)
sys.exit(1)
changed = []
for k, v in head.items():
if k not in base or base[k] != v:
changed.append(k)
print(",".join(sorted(changed)))
EOF
)
# Preserve changelist
echo -e ">>> Changed targets: \n$(echo $CHANGED | tr ',' '\n')"
echo "changed_targets=$CHANGED" >> "$GITHUB_OUTPUT"
-name:Validate remote manifest against local schema
if:steps.discover-modified.outputs.changed_targets != ''
run:|
poetry run pytest tests/test_manifest.py::test_validate_manifest_against_local_schema
# --- The rest of the steps below are unchanged ---
-name:Validate modified targets
if:steps.discover-modified.outputs.changed_targets != ''
continue-on-error:true
run:|
poetry run pytest -q --tb no -rA -m validate_targets -n 20 \
--chunked-sites "${{ steps.discover-modified.outputs.changed_targets }}" \
--junitxml=validation_results.xml
-name:Prepare validation summary
if:steps.discover-modified.outputs.changed_targets != ''
id:prepare-summary
run:|
summary=$(
poetry run python devel/summarize_site_validation.py validation_results.xml || echo "Failed to generate summary of test results"
)
echo "$summary" > validation_summary.md
-name:Announce validation results
if:steps.discover-modified.outputs.changed_targets != ''
uses:actions/github-script@v8
with:
script:|
const fs = require('fs');
const body = fs.readFileSync('validation_summary.md', 'utf8');
await github.rest.issues.createComment({
issue_number: context.payload.pull_request.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: body,
});
-name:This step shows as ran when no modifications are found
if:steps.discover-modified.outputs.changed_targets == ''
run:|
echo "No modified targets found"

[8]ページ先頭

©2009-2025 Movatter.jp