Commit bcba2bc

Eric Bower  ·  2026-05-07 15:09:00 -0400 EDT
parent f2b4c27
chore: inject env vars
2 files changed,  +25, -7
+19, -4
......@@ -231,6 +231,19 @@ EVENT JSON FIELDS
231231 EXAMPLE
232232 echo '{"type":"push","name":"myrepo","workspace":"git@github.com:user/myrepo.git"}' | pici runner
233233
234+ENV VARS IN pico.sh
235+ The runner exports these environment variables for your pico.sh script:
236+ PICO_CI_JOB_ID Unique job identifier (e.g. "a3f2b8c1")
237+ PICO_CI_REPO Repository name (from event "name" field)
238+ PICO_CI_EVENT_TYPE Event type (from event "type" field)
239+
240+ Note: pico.sh runs with the workspace as its working directory, so
241+ $(pwd) gives you the workspace path directly.
242+
243+ Use them with defaults so pico.sh works standalone:
244+ JOB_ID="${PICO_CI_JOB_ID:-local}"
245+ REPO="${PICO_CI_REPO:-unknown}"
246+
234247 FLAGS
235248 -pk <path> SSH private key for authenticating with pico services
236249 -ck <path> SSH certificate public key (required when using SSH certificates)
......@@ -372,20 +385,22 @@ func (eng *JobEngine) Run(manifest string) error {
372385 log := eng.Logger.With("manifest", manifest, "prefix", prefix)
373386 log.Debug("starting runner session", "session", prefix+"runner")
374387
375- evStr := fmt.Sprintf("PICO_CI_EVENT=%s", eng.Ev.Type)
376-
377388 runnerName := prefix + "runner"
378389 // Name the runner explicitly. Do NOT set ZMX_SESSION_PREFIX for this
379390 // outer zmx run call — it would be prepended to the runner's own name.
380391 // The prefix is only for child sessions spawned inside pico.sh (via the
381392 // exported env var).
382- cmdEnv := make([]string, 0, len(os.Environ())+2)
393+ cmdEnv := make([]string, 0, len(os.Environ())+5)
383394 for _, e := range os.Environ() {
384395 if !strings.HasPrefix(e, "ZMX_SESSION_PREFIX=") {
385396 cmdEnv = append(cmdEnv, e)
386397 }
387398 }
388- cmdEnv = append(cmdEnv, evStr)
399+ cmdEnv = append(cmdEnv,
400+ fmt.Sprintf("PICO_CI_JOB_ID=%s", eng.JobID),
401+ fmt.Sprintf("PICO_CI_REPO=%s", eng.Ev.Name),
402+ fmt.Sprintf("PICO_CI_EVENT_TYPE=%s", eng.Ev.Type),
403+ )
389404
390405 zmxPrefixStr := fmt.Sprintf("ZMX_SESSION_PREFIX=%s", childPrefix)
391406 cmd := exec.Command("zmx", "run", runnerName, "-d", zmxPrefixStr, "bash", manifest)
+6, -3
......@@ -1,12 +1,15 @@
11 #!/usr/bin/env bash
22 set -euo pipefail
33
4-export ZMX_SESSION_PREFIX="${ZMX_SESSION_PREFIX:-ci.}"
4+ZMX_SESSION_PREFIX="${ZMX_SESSION_PREFIX:-ci.}"
5+JOB_ID="${PICO_CI_JOB_ID:-local}"
6+REPO="${PICO_CI_REPO:-unknown}"
7+EVENT_TYPE="${PICO_CI_EVENT_TYPE:-manual}"
58
6-printf "\x1b[33mrunning ci\x1b[0m\n"
9+printf "\x1b[33m[%s:%s] running ci (event=%s)\x1b[0m\n" "$REPO" "$JOB_ID" "$EVENT_TYPE"
710
811 zmx run lint -d docker run -t --rm -v $(pwd):/app -w /app golangci/golangci-lint:v2.11.4 golangci-lint run
912 zmx run test -d docker run -t --rm -v $(pwd):/app -w /app golang:1.26 go test ./...
1013 zmx wait "*"
1114
12-printf "\x1b[32msuccess!\x1b[0m\n"
15+printf "\x1b[32m[%s:%s] success!\x1b[0m\n" "$REPO" "$JOB_ID"