fix: check layout export #14
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: qgs-ai-summary | |
| # Post a concise, human-readable summary of the real changes to QGIS .qgs | |
| # project files on a PR. scripts/qgs-diff.py builds a churn-free diff of the | |
| # changed files; the GitHub Copilot CLI turns it into per-file bullet points; | |
| # the result is posted as a single self-updating PR comment. Nothing derived | |
| # is committed. | |
| on: | |
| pull_request: | |
| paths: | |
| - '**/*.qgs' | |
| permissions: | |
| contents: read | |
| pull-requests: write | |
| copilot-requests: write | |
| concurrency: | |
| group: qgs-ai-summary-${{ github.event.pull_request.number }} | |
| cancel-in-progress: true | |
| jobs: | |
| summarise: | |
| runs-on: ubuntu-latest | |
| env: | |
| MODEL: gpt-5-mini | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| ref: ${{ github.event.pull_request.head.sha }} | |
| fetch-depth: 0 | |
| - name: Build churn-free diff | |
| id: diff | |
| run: | | |
| WORK="$RUNNER_TEMP/qgs-ai" | |
| mkdir -p "$WORK" | |
| python3 scripts/qgs-diff.py diff --base "${{ github.base_ref }}" > "$WORK/diff.txt" | |
| [ -s "$WORK/diff.txt" ] && echo "changed=1" >> "$GITHUB_OUTPUT" || echo "changed=0" >> "$GITHUB_OUTPUT" | |
| - name: Set up Node for the Copilot CLI | |
| if: steps.diff.outputs.changed == '1' | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: 24 | |
| - name: Install Copilot CLI | |
| if: steps.diff.outputs.changed == '1' | |
| run: npm install -g @github/copilot | |
| - name: Summarise with the Copilot CLI | |
| id: ai | |
| if: steps.diff.outputs.changed == '1' | |
| env: | |
| # Built-in workflow token — the Copilot CLI authenticates from this | |
| # (via the copilot-requests permission), so no PAT/secret is needed. | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| run: | | |
| set -euo pipefail | |
| WORK="$RUNNER_TEMP/qgs-ai" | |
| cd "$WORK" | |
| copilot \ | |
| --model "$MODEL" \ | |
| --no-ask-user \ | |
| -p 'Read the whole of the file diff.txt in the current directory with | |
| your file-reading tool. It is small - do NOT grep/search it: its unified | |
| -diff headers (---, +++, @@) contain regex metacharacters that make the | |
| search tool error out. | |
| It contains changes to QGIS .qgs project files for a pull request; QGIS | |
| session churn has already been stripped, so ignore residual noise | |
| (reordered attributes, internal ids, emptied values). | |
| Write a concise GitHub-flavored-markdown summary: | |
| - Group by file under a "### <path>" heading matching the diff. | |
| - Short bullets, substantive changes only: layers added / removed / | |
| renamed / reordered, symbology, labelling, scale ranges, print | |
| layouts, project CRS, variables, map themes, expressions, data | |
| sources. Name the actual layers, properties and values. | |
| - Do not restate raw XML, omit unchanged files, never invent changes. | |
| - Write a short summary (strictly 1-2 sentences) for each file, after the bullet points. | |
| Print ONLY the per-file sections (no preamble or conclusion). Do not | |
| write any files.' > "$GITHUB_WORKSPACE/summary.md" | |
| - name: Post sticky PR comment | |
| env: | |
| GH_TOKEN: ${{ github.token }} | |
| REPO: ${{ github.repository }} | |
| PR: ${{ github.event.pull_request.number }} | |
| CHANGED: ${{ steps.diff.outputs.changed }} | |
| MODEL: ${{ env.MODEL }} | |
| run: | | |
| set -euo pipefail | |
| MARKER='<!-- qgs-ai-summary -->' | |
| { | |
| echo "$MARKER" | |
| echo "## 🗺️ QGIS project change summary" | |
| echo | |
| if [ "$CHANGED" = "1" ] && [ -s summary.md ]; then | |
| cat summary.md | |
| echo | |
| echo "<sub>Generated by \`$MODEL\` via the GitHub Copilot CLI from a churn-free diff - verify against the file diff.</sub>" | |
| else | |
| echo "_No substantive QGIS project changes detected - only QGIS session churn._" | |
| fi | |
| } > comment.md | |
| id=$(gh api "repos/$REPO/issues/$PR/comments" --paginate \ | |
| --jq ".[] | select(.body | contains(\"$MARKER\")) | .id" | head -n1) | |
| if [ -n "$id" ]; then | |
| gh api -X PATCH "repos/$REPO/issues/comments/$id" -F body=@comment.md >/dev/null | |
| echo "updated comment $id" | |
| else | |
| gh api -X POST "repos/$REPO/issues/$PR/comments" -F body=@comment.md >/dev/null | |
| echo "created comment" | |
| fi |