Stitch any CI into Tangled
2

Configure Feed

Select the types of activity you want to include in your feed.

10 1 0

Clone this repository

https://tangled.org/mitchellh.com/tack https://tangled.org/did:plc:6spzbmdme6yxfreatmrotwdy
git@knot.mitchellh.com:mitchellh.com/tack git@knot.mitchellh.com:did:plc:6spzbmdme6yxfreatmrotwdy

For self-hosted knots, clone URLs may differ based on your setup.



README.md

tack - Connect Tangled to your CI#

Tack is a custom Tangled spindle that runs CI on alternate providers and reports their results back to Tangled using standard ATProto records so they show up natively in Tangled's UI.

What it does#

Tack is a drop-in alternative to the stock spindle runner. You run tack and register it using the standard UI.

Instead of executing workflows in local containers, tack translates each Tangled pipeline trigger into a 3rd party CI build, and reports build state back to Tangled using the existing sh.tangled.pipeline.status wire format.

This makes even 3rd party CIs integrate first class into Tangled so their status, counts, etc. can show up inline in things like pull requests.

                 sh.tangled.pipeline
  Jetstream  ───────────────────────▶  tack
                                        │
                                        │  Create Build
                                        ▼
                                    Buildkite
                                        │
                                        │  webhooks
                                        ▼
                                       tack  ──── /events (WebSocket) ────▶  Tangled appview
                                                  sh.tangled.pipeline.status
go run . -addr :8080

Configuration#

Required#

Env var Description
TACK_HOSTNAME This spindle's hostname (matches sh.tangled.repo.spindle)
TACK_OWNER_DID DID of the spindle operator

Optional#

Env var Description
TACK_LISTEN_ADDR HTTP listen address (default :8080)
TACK_DB_PATH Local SQLite path (default tack.db)
TACK_JETSTREAM_URL Tangled Jetstream WebSocket URL
TACK_DEV Use ws:// for knot event-streams (any non-empty value)

Buildkite#

Setting TACK_BUILDKITE_TOKEN enables Buildkite mode; when unset, tack runs the in-process fake provider for local development. When Buildkite mode is enabled, every other variable in this section is required.

Env var Description
TACK_BUILDKITE_TOKEN Buildkite API token (enables Buildkite mode)
TACK_BUILDKITE_ORG Buildkite organization slug
TACK_BUILDKITE_PIPELINE Buildkite pipeline slug to fire builds on
TACK_BUILDKITE_WEBHOOK_SECRET Shared secret for /webhooks/buildkite auth
TACK_BUILDKITE_WEBHOOK_MODE token (default) or signature — must match Buildkite's notification setting