Skip to content

TemporalCI Showcase: 5-Stage DAG Pipeline with Parallel Execution - #18

Closed
AndreKurait wants to merge 1 commit into
mainfrom
showcase-all-features
Closed

AndreKurait wants to merge 1 commit into
mainfrom
showcase-all-features

Conversation

@AndreKurait

Copy link
Copy Markdown
Owner

What This PR Demonstrates

This PR showcases TemporalCI — a Kubernetes-native CI system built on Temporal.

Features in Action

Feature How It's Shown
DAG-based step execution 5 steps with depends_on — parallel where possible
Isolated K8s pod execution Each step runs in its own golang:1.23 pod
PR comment with results ⬇️ See the TemporalCI comment below
Commit status Check the status checks on this PR
Temporal Web UI link Click "View workflow run" in the comment
Durable execution If a worker crashes mid-build, Temporal resumes from the last completed step

Pipeline DAG

build ──┬── unit-test ── race-test
        ├── vet
        └── format-check

What's Running Under the Hood

  1. GitHub sends a pull_request webhook to the TemporalCI webhook server (running on EKS)
  2. The webhook server starts a CIPipeline Temporal workflow
  3. The workflow clones this repo, parses .temporalci.yaml, and executes steps as K8s pods
  4. Results are reported back as a PR comment with per-step timing and collapsible logs
  5. A commit status is set on the HEAD SHA

Also Available (not triggered by this PR)

  • Ephemeral EKS cluster pool — warm pool of Auto Mode clusters for helm test steps
  • Helm chart testing — helm install + helm test on a leased cluster, results on PR
  • OIDC federation — zero stored AWS credentials, GitHub Actions authenticates via IAM
  • Prometheus metrics — ci_pods_active, ci_step_status_total
  • Scheduled pod cleanup — hourly garbage collection of stale CI pods

Code Change

Added Anagram(a, b) function with test coverage to exercise the pipeline.

- New Anagram() function with full test coverage
- Pipeline: build → (unit-test | vet | format-check) → race-test
- Demonstrates DAG execution, parallel steps, and multi-stage dependencies
- Updated README with pipeline visualization

Signed-off-by: Andre Kurait <andrekurait@gmail.com>
@AndreKurait

AndreKurait commented Mar 19, 2026 •

Copy link
Copy Markdown
Owner Author

TemporalCI Results

✅ build (21.5s)
✅ unit-test (37.5s)
✅ vet (15.9s)
❌ format-check (4.2s)
✅ race-test (23.0s)

4 passed, 1 failed in 102.0s

🔗 View workflow run

Step Logs

📋 build — exit 0
internal/unsafeheader
internal/goarch
internal/cpu
internal/abi
internal/bytealg
internal/byteorder
internal/chacha8rand
internal/coverage/rtcov
internal/godebugs
internal/goexperiment
internal/goos
internal/profilerecord
internal/runtime/atomic
internal/runtime/syscall
internal/stringslite
runtime/internal/math
internal/runtime/exithook
runtime/internal/sys
cmp
internal/itoa
internal/race
runtime
math/bits
math
unicode/utf8
sync/atomic
unicode
internal/asan
internal/msan
iter
internal/reflectlite
sync
slices
errors
strconv
io
internal/oserror
path
internal/bisect
internal/godebug
reflect
syscall
time
io/fs
internal/filepathlite
internal/syscall/unix
internal/poll
internal/fmtsort
internal/syscall/execenv
internal/testlog
strings
os
fmt
github.com/AndreKurait/TemporalCI-test
📋 unit-test — exit 0
=== RUN   TestAnagram
--- PASS: TestAnagram (0.00s)
=== RUN   TestGreet
--- PASS: TestGreet (0.00s)
=== RUN   TestIsPalindrome
--- PASS: TestIsPalindrome (0.00s)
=== RUN   TestReverse
--- PASS: TestReverse (0.00s)
PASS
ok  	github.com/AndreKurait/TemporalCI-test	0.010s
📋 race-test — exit 0
ok  	github.com/AndreKurait/TemporalCI-test	1.016s

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant