Commit f4ac402
Eric Bower
·
2026-05-06 21:13:13 -0400 EDT
parent 9aad8f0
chore: cleanup
3 files changed,
+49,
-8
+1,
-1
1@@ -1 +1 @@
2-{"type":"git.push","name":"pico","workspace":"/home/erock/dev/pico/"}
3+{"type":"git.push","name":"pici","workspace":"/home/erock/dev/pici/"}
M
main.go
+36,
-7
1@@ -146,6 +146,10 @@ func main() {
2 os.Exit(1)
3 }
4 case "monitor":
5+ if flag.Arg(1) == "--help" || flag.Arg(1) == "help" {
6+ printMonitorHelp()
7+ return
8+ }
9 cfg.Logger.Debug("starting monitor")
10 if err := runMonitor(cfg); err != nil {
11 cfg.Logger.Error("monitor failed", "err", err)
12@@ -161,6 +165,33 @@ func main() {
13 }
14 }
15
16+func printMonitorHelp() {
17+ fmt.Println(`pici monitor — poll ci.* zmx sessions, stage artifacts, publish status.
18+
19+USAGE
20+ pici monitor [flags]
21+ pici monitor --human | ssh pipe.pico.sh "pub build.status -b=false"
22+
23+OUTPUT MODES
24+ Default (JSONL): One JSON object per line to stdout, suitable for piping.
25+ pici monitor > status.jsonl
26+ pici monitor | while read -r line; do curl -sd"$line" $WEBHOOK; done
27+
28+ --human: Selfci-style progress output for terminal viewing.
29+ pici monitor --human --status-filter all
30+ [2/3] 🚀 running: myrepo (1m23s)
31+ [3/3] ✅ success: myrepo (2m34s)
32+
33+FLAGS
34+ -pk <path> SSH private key for authenticating with pico services
35+ -ck <path> SSH certificate public key
36+ -artifact-dir <path> Local directory to stage artifacts (default: /tmp/pici-artifacts)
37+ -monitor-interval <dur> Poll interval (default: 5s)
38+ -status-filter <filter> "terminal" (default) or "all"
39+ -human Human-readable output instead of JSONL
40+ -log-level <level> Log level: debug, info, warn, error (default: info)`)
41+}
42+
43 func printRunnerHelp() {
44 fmt.Println(`pici runner — execute a CI job from an event JSON payload.
45
46@@ -179,15 +210,13 @@ EXAMPLE
47 echo '{"type":"push","name":"myrepo","workspace":"git@github.com:user/myrepo.git"}' | pici runner
48
49 FLAGS
50- -pk <path> SSH private key for authenticating with pico services
51- -ck <path> SSH certificate public key (required when using SSH certificates)
52+ -pk <path> SSH private key for authenticating with pico services
53+ -ck <path> SSH certificate public key (required when using SSH certificates)
54+ -event <json> Event JSON string (alternative to reading from stdin)
55 -artifact-dir <path> Local directory to stage artifacts (default: /tmp/pici-artifacts)
56- -event <json> Event JSON string (alternative to reading from stdin)
57- -monitor-interval <dur> Interval for monitoring zmx sessions (default: 5s)
58 -log-level <level> Log level: debug, info, warn, error (default: info)
59- -structured Use structured key=value log output
60- -status-filter <filter> Status output filter: terminal (default) or all
61- -human Human-readable output instead of JSONL / slog`)
62+ -human Human-readable output (default: enabled for runner)`)
63+
64 }
65
66 func RunRunner(cfg *Cfg) error {
A
pico.sh
+12,
-0
1@@ -0,0 +1,12 @@
2+#!/usr/bin/env bash
3+set -xeuo pipefail
4+
5+export ZMX_SESSION_PREFIX="${ZMX_SESSION_PREFIX:-ci-}"
6+
7+printf "\x1b[33mrunning ci\x1b[0m\n"
8+
9+zmx run lint -d docker run -t --rm -v $(pwd):/app -w /app golangci/golangci-lint:v2.11.4 golangci-lint run
10+zmx run test -d docker run -t --rm -v $(pwd):/app -w /app golang:1.26 go test ./...
11+zmx wait lint test
12+
13+printf "\x1b[32msuccess!\x1b[0m\n"