name: Release graph asset on: release: types: [published] workflow_dispatch: jobs: build-graph: runs-on: ubuntu-latest permissions: contents: write # needed to upload release assets steps: - uses: actions/checkout@v6 - name: Install uv uses: astral-sh/setup-uv@v8.1.0 with: python-version: "3.12" - name: Install graphify run: uv sync --frozen - name: Build graph of graphify source (AST-only, no API cost) # graphify/skills/ contains 126+ .md files that trigger the LLM pass. # Temporarily ignore all .md files so extraction stays pure AST (no API key needed). run: | echo "*.md" >> .graphifyignore echo "*.txt" >> .graphifyignore uv run --frozen graphify extract graphify/ --out . git checkout .graphifyignore 2>/dev/null || rm -f .graphifyignore - name: Cluster, label communities and generate GRAPH_REPORT.md # cluster-only writes GRAPH_REPORT.md and names communities (no LLM needed # for basic numeric labels; --no-label skips LLM labeling entirely). run: uv run --frozen graphify cluster-only . --no-label - name: Generate HTML viewer run: uv run --frozen graphify export html --graph graphify-out/graph.json - name: Bundle release asset run: | mkdir -p dist-graph cp graphify-out/graph.json dist-graph/ cp graphify-out/graph.html dist-graph/ [ -f graphify-out/GRAPH_REPORT.md ] && cp graphify-out/GRAPH_REPORT.md dist-graph/ || true tar -czf graphify-self-graph.tar.gz -C dist-graph . echo "Asset contents:" tar -tzf graphify-self-graph.tar.gz - name: Upload to GitHub release if: github.event_name == 'release' uses: softprops/action-gh-release@v2 with: files: graphify-self-graph.tar.gz - name: Upload as workflow artifact (for workflow_dispatch runs) if: github.event_name == 'workflow_dispatch' uses: actions/upload-artifact@v4 with: name: graphify-self-graph path: graphify-self-graph.tar.gz retention-days: 7