Integrations

Share a short-lived link instead of dumping logs into PRs or chat. All examples hit https://voidpaste.com — no localhost.

Chat safety

  • Share /p/{id} (web viewer), not /raw/{id}. For burn pastes, crawlers that fetch raw/API content can burn the paste on first hit.
  • Prefer short expiration over burn when posting to Slack or Discord (link previews / unfurls).
  • VoidPaste already omits Open Graph body teasers for burn, private, password, and encrypted pastes. Still never paste API keys into chat.

GitHub Actions

Official action: fleames/voidpaste-action. Store a key from Dashboard → API Keys as VP_API_KEY.

# .github/workflows/share-log.yml
- name: Upload failure log
  id: vp
  uses: fleames/voidpaste-action@v1
  with:
    api-key: ${{ secrets.VP_API_KEY }}
    path: ./build.log
    title: CI ${{ github.run_id }}
    language: log
    visibility: unlisted
    expiration: 1d
    idempotency-key: ${{ github.run_id }}-${{ github.job }}

- run: echo "Log paste ${{ steps.vp.outputs.url }}"

Outputs: url, raw_url, id. The step writes the share link to the job summary. Defaults favor unlisted + 1d expiry (not burn).

kubectl / docker → CLI

Install the CLI (docs), then pipe logs. --quiet prints only the URL:

# last 200 lines from a pod
kubectl logs deploy/api --tail=200 | \
  voidpaste create --stdin --expiration 1h --title "pod/api" --quiet

# docker container logs
docker logs my-container --tail 500 2>&1 | \
  voidpaste create --stdin --lang log --expiration 1d -q

Huge logs hit the create limit (1 MB anonymous, 5 MB with an API key) — use --tail / tail deliberately. Prefer an API key in the environment (VP_API_KEY), not on the command line.

GitLab CI (curl)

# .gitlab-ci.yml (snippet)
share_log:
  stage: .post
  when: on_failure
  script:
    - |
      jq -n --rawfile c build.log \
        '{content:$c, visibility:"unlisted", expiration:"1d", title:"gitlab '"$CI_PIPELINE_ID"'"}' \
      | curl -sS -X POST "https://voidpaste.com/api/v1/pastes" \
          -H "Authorization: Bearer $VP_API_KEY" \
          -H "Content-Type: application/json" \
          -H "Idempotency-Key: $CI_PIPELINE_ID-$CI_JOB_ID" \
          -d @- \
      | jq -r '"https://voidpaste.com/p/" + .paste.id'

Response envelope is { paste, warnings }. A 422 means secret detection blocked the body (nothing stored).

CLI one-liners

# URL only (scripts)
echo 'hello' | voidpaste create --stdin --expiration 1h -q

# Full envelope for machines
voidpaste create ./notes.md --json --idempotency-key deploy-42

# Install (pin: replace latest with v0.3.0)
go install github.com/fleames/voidpaste-cli/cmd/voidpaste@latest

Related