runner: set github.actor/triggering_actor in the job context (was empty -> docker/login 'Username required')

edf0da5 · gmorell · 2026-07-02 21:37

1 files +12 -0

Files changed

modified lib/git_gud_web/controllers/runner_controller.ex
+12 −0
@@ -261,12 +261,24 @@ defmodule GitGudWeb.RunnerController do
261 261 # preloaded, done in build_task/1).
262 262 owner = GitGud.Repositories.Storage.repo_handle(repo)
263 263
264 + # `github.actor` / `github.triggering_actor`: the pusher's handle when
265 + # attributable, else the repo owner. Without this, `${{ github.actor }}`
266 + # is empty and steps like `docker/login-action` fail with
267 + # "Username required".
268 + actor =
269 + case run.triggered_by_id && GitGud.Repo.get(GitGud.Accounts.User, run.triggered_by_id) do
270 + %GitGud.Accounts.User{handle: h} when is_binary(h) and h != "" -> h
271 + _ -> owner
272 + end
273 +
264 274 %{
265 275 "event" => run.trigger || "push",
266 276 "ref" => run.head_ref || "",
267 277 "sha" => if(run.head_sha, do: GitGud.Git.to_hex(run.head_sha), else: ""),
268 278 "repository" => owner <> "/" <> repo.name,
269 279 "repository_owner" => owner,
280 + "actor" => actor,
281 + "triggering_actor" => actor,
270 282 "run_number" => maybe_int_to_string(run.number),
271 283 "workflow" => run.workflow_name || run.workflow_path,
272 284 "job" => job.job_id,

Parents: 5a6d751