alpha
Login
or
Join now
mitchellh.com
/
tack
Star
2
Fork
10
Atom
Configure Feed
Issues
Pull Requests
Commits
Tags
Feed URL
Select the types of activity you want to include in your feed.
Stitch any CI into Tangled
Star
2
Fork
10
Atom
Configure Feed
Issues
Pull Requests
Commits
Tags
Feed URL
Select the types of activity you want to include in your feed.
Overview
Issues
Pulls
Pipelines
tack
/
internal
/
at
76936a20d7c201defd19b988df33ada29a4bddfc
3 folders
Mitchell Hashimoto
provider/tekton: stream non-terminal pod logs with follow=true
7w ago
e2ac696c
buildkite
provider/tekton: stream non-terminal pod logs with follow=true The Logs path for a still-running PipelineRun called StreamPodLogs without follow=true, so the apiserver returned a snapshot of the container log and EOF'd at the current tail. The provider then emitted StepStatusEnd and moved on, which made still-running steps look complete and dropped any subsequent log bytes unless the client reconnected. The same one-shot pass also took a single snapshot of TaskRuns, so any TaskRun spawned later in the PipelineRun (sequential runAfter, finally, retries) was silently ignored. StreamPodLogs now takes a LogOptions{Follow bool}. The non-terminal path uses Follow=true so the read only EOFs once the container actually terminates; the terminal path keeps the snapshot read since the log is already complete. The Logs goroutine is replaced with a poll loop that re-lists TaskRuns and re-checks the PipelineRun's terminal state each iteration, only closing the channel once the PipelineRun is terminal AND no new TaskRuns appeared in the last pass. The fake k8s client mirrors the apiserver's follow semantics by holding the reader open until ctx is cancelled.
1 month ago
jetstream
jetstream: extract reusable consumer into internal/jetstream The consumer code in jetstream.go mixed Tack-specific concerns (collections, applyCommit, store cursor) with generic firehose mechanics: configuring the upstream client, looping reconnects, rewinding time-based cursors, persisting cursor progress, and distinguishing permanent bad-record failures from transient handler failures. None of those are specific to Tack and they are the bits most likely to be reused for future jetstream consumers. Move the generic mechanics into a new internal/jetstream package.
1 month ago
k8s
provider/tekton: stream non-terminal pod logs with follow=true The Logs path for a still-running PipelineRun called StreamPodLogs without follow=true, so the apiserver returned a snapshot of the container log and EOF'd at the current tail. The provider then emitted StepStatusEnd and moved on, which made still-running steps look complete and dropped any subsequent log bytes unless the client reconnected. The same one-shot pass also took a single snapshot of TaskRuns, so any TaskRun spawned later in the PipelineRun (sequential runAfter, finally, retries) was silently ignored. StreamPodLogs now takes a LogOptions{Follow bool}. The non-terminal path uses Follow=true so the read only EOFs once the container actually terminates; the terminal path keeps the snapshot read since the log is already complete. The Logs goroutine is replaced with a poll loop that re-lists TaskRuns and re-checks the PipelineRun's terminal state each iteration, only closing the channel once the PipelineRun is terminal AND no new TaskRuns appeared in the last pass. The fake k8s client mirrors the apiserver's follow semantics by holding the reader open until ctx is cancelled.
1 month ago