Send owner/repo as GITHUB_REPOSITORY in runner task context

8791df5 · gmorell · 2026-06-25 14:36

1 files +13 -2
Message
{commit_body(@commit)}

Files changed

modified lib/git_gud_web/controllers/runner_controller.ex
+13 −2
@@ -192,7 +192,10 @@ defmodule GitGudWeb.RunnerController do
192 192
193 193 defp build_task(job) do
194 194 run = GitGud.Repo.get!(GitGud.Workflows.WorkflowRun, job.workflow_run_id)
195 repo = GitGud.Repo.get!(GitGud.Repositories.Repository, run.repository_id)
195 + repo =
196 + GitGud.Repo.get!(GitGud.Repositories.Repository, run.repository_id)
197 + |> GitGud.Repo.preload([:owner, :organization])
198 +
196 199 {secrets, vars} = GitGud.Secrets.resolve_for(repo)
197 200 token = GitGud.Workflows.RunnerJwt.mint(job, run)
198 201
@@ -253,11 +256,19 @@ defmodule GitGudWeb.RunnerController do
253 256 actions_url =
254 257 Application.get_env(:git_gud, :default_actions_url, "https://code.forgejo.org")
255 258
259 + # GITHUB_REPOSITORY must be the fully-qualified `owner/repo` —
260 + # actions/checkout rejects a bare repo name ("Invalid repository
261 + # 'gitgud'. Expected format {owner}/{repo}."). `repo_handle/1`
262 + # resolves the org or user namespace (needs :owner + :organization
263 + # preloaded, done in build_task/1).
264 + owner = GitGud.Repositories.Storage.repo_handle(repo)
265 +
256 266 %{
257 267 "event" => run.trigger || "push",
258 268 "ref" => run.head_ref || "",
259 269 "sha" => if(run.head_sha, do: GitGud.Git.to_hex(run.head_sha), else: ""),
260 "repository" => repo.name,
270 + "repository" => owner <> "/" <> repo.name,
271 + "repository_owner" => owner,
261 272 "run_number" => maybe_int_to_string(run.number),
262 273 "workflow" => run.workflow_name || run.workflow_path,
263 274 "job" => job.job_id,

Parents: f87fc1d