name: Dry Run on: pull_request: paths: - "netbird.json" jobs: dry-run: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Run dry-run reconcile id: plan run: | RESPONSE=$(curl -sf \ -X POST \ -H "Authorization: Bearer ${{ secrets.RECONCILER_TOKEN }}" \ -H "Content-Type: application/json" \ -d @netbird.json \ "${{ secrets.RECONCILER_URL }}/reconcile?dry_run=true") echo "response<> "$GITHUB_OUTPUT" echo "$RESPONSE" >> "$GITHUB_OUTPUT" echo "EOF" >> "$GITHUB_OUTPUT" - name: Format plan as markdown id: format run: | cat <<'SCRIPT' > format.py import json, sys data = json.loads(sys.stdin.read()) ops = data.get("operations", []) summary = data.get("summary", {}) lines = ["## NetBird Reconciliation Plan\n"] if not ops: lines.append("No changes detected.\n") else: lines.append("| Operation | Name |") lines.append("|-----------|------|") for op in ops: lines.append(f"| `{op['type']}` | {op['name']} |") lines.append("") s = summary lines.append(f"**Summary:** {s.get('created',0)} create, {s.get('updated',0)} update, {s.get('deleted',0)} delete") print("\n".join(lines)) SCRIPT COMMENT=$(echo '${{ steps.plan.outputs.response }}' | python3 format.py) echo "comment<> "$GITHUB_OUTPUT" echo "$COMMENT" >> "$GITHUB_OUTPUT" echo "EOF" >> "$GITHUB_OUTPUT" - name: Post PR comment env: GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }} run: | curl -sf \ -X POST \ -H "Authorization: token ${GITEA_TOKEN}" \ -H "Content-Type: application/json" \ -d "{\"body\": $(echo '${{ steps.format.outputs.comment }}' | jq -Rs .)}" \ "${{ secrets.GITEA_URL }}/api/v1/repos/${{ github.repository }}/issues/${{ github.event.pull_request.number }}/comments"