Kungfu UNGFU™Developer Platform

Back to Buildchain homemanual / manual:consumer-issue-reporting

Consumer Issue Reporting

Buildchain manual page.

Consumer Issue Reporting

Buildchain ships a first-class issue reporting surface for consumer workflows. It lets a repository open or update a Buildchain-owned GitHub issue when a Buildchain reusable workflow, action, or toolkit API produces a failure that needs Buildchain maintainers.

Trust model

The consumer workflow must provide a token with issue-write access to the target repository. A repository’s default GITHUB_TOKEN only writes to its own repository, so cross-repository reports should use a GitHub App installation token scoped to:

  • the kungfu-systems/buildchain repository;
  • Issues: read and write;
  • no content write permission unless another workflow step needs it.

The recommended pattern is:

- uses: actions/create-github-app-token@v2
  id: buildchain-issue-token
  with:
    app-id: ${{ secrets.BUILDCHAIN_ISSUE_APP_ID }}
    private-key: ${{ secrets.BUILDCHAIN_ISSUE_APP_PRIVATE_KEY }}
    owner: kungfu-systems
    repositories: buildchain

- uses: kungfu-systems/buildchain/actions/report-buildchain-issue@v3
  if: failure()
  with:
    token: ${{ steps.buildchain-issue-token.outputs.token }}
    summary: "Buildchain reusable build failed before artifact finalization"
    failure-code: reusable-build-failed
    diagnostics-path: .buildchain/artifacts/diagnostics.json
    buildchain-ref: ${{ inputs.buildchain-ref || 'v2' }}

Behavior

report-buildchain-issue builds an issue body with consumer repository, workflow, ref, SHA, Buildchain ref/version, diagnostics links, and optional details. It computes a stable fingerprint and embeds a hidden marker:

buildchain-consumer-issue:fingerprint=<sha256-prefix>

When an open issue with the same marker exists, the action comments on it with the new run evidence. Otherwise it creates a new issue. Consumers may pass an explicit fingerprint when they need a different dedupe boundary.

The action is fail-soft by default. It retries GitHub API 429/5xx responses and connection failures, redacts common secret/token/private-key patterns, truncates large bodies, and retries issue creation without labels if the target repository does not have the configured labels yet.

Set fail-on-error: "true" only when the reporting step is part of a release gate and missing Buildchain feedback should stop the workflow.

JavaScript API

Consumer scripts can import the same implementation:

import {
  buildConsumerIssueReport,
  reportBuildchainIssue,
} from "@kungfu-tech/buildchain/issue-reporting";

const result = await reportBuildchainIssue({
  token: process.env.BUILDCHAIN_ISSUE_TOKEN,
  summary: "Native artifact manifest is incomplete",
  failureCode: "native-manifest-incomplete",
  buildchainRef: "v2",
  diagnosticsPath: ".buildchain/artifacts/diagnostics.json",
});

Use buildConsumerIssueReport for dry-run validation, previewing redaction, or unit tests without calling GitHub.

Page metadata

Route
/docs/consumer-issue-reporting/
Category
manual
Source path
docs/consumer-issue-reporting.md
Package
@kungfu-tech/buildchain@3.0.2-alpha.2
Digest
sha256:96804310360c02f408fee9d540385d875a40d09bef046c3df369228d311a1cdd