diff --git a/actions/setup/js/resolve_host_repo.cjs b/actions/setup/js/resolve_host_repo.cjs index e6c94a0cf0..d460f6ad8e 100644 --- a/actions/setup/js/resolve_host_repo.cjs +++ b/actions/setup/js/resolve_host_repo.cjs @@ -69,7 +69,13 @@ async function main() { core.info(`Same-repo invocation: checking out ${targetRepo} @ ${targetRef}`); } + // Compute the repository name (without owner prefix) for use cases that require + // only the repo name, such as actions/create-github-app-token which expects + // `repositories` to contain repo names only when `owner` is also provided. + const targetRepoName = targetRepo.split("/").at(-1); + core.setOutput("target_repo", targetRepo); + core.setOutput("target_repo_name", targetRepoName); core.setOutput("target_ref", targetRef); } diff --git a/actions/setup/js/resolve_host_repo.test.cjs b/actions/setup/js/resolve_host_repo.test.cjs index 5b203caf05..a4a0afb1b9 100644 --- a/actions/setup/js/resolve_host_repo.test.cjs +++ b/actions/setup/js/resolve_host_repo.test.cjs @@ -199,6 +199,33 @@ describe("resolve_host_repo.cjs", () => { expect(mockCore.setOutput).toHaveBeenCalledWith("target_ref", "abc123def456"); }); + it("should output target_repo_name when invoked cross-repo", async () => { + process.env.GITHUB_WORKFLOW_REF = "my-org/platform-repo/.github/workflows/gateway.lock.yml@refs/heads/main"; + process.env.GITHUB_REPOSITORY = "my-org/app-repo"; + + await main(); + + expect(mockCore.setOutput).toHaveBeenCalledWith("target_repo_name", "platform-repo"); + }); + + it("should output target_repo_name when same-repo invocation", async () => { + process.env.GITHUB_WORKFLOW_REF = "my-org/platform-repo/.github/workflows/gateway.lock.yml@refs/heads/main"; + process.env.GITHUB_REPOSITORY = "my-org/platform-repo"; + + await main(); + + expect(mockCore.setOutput).toHaveBeenCalledWith("target_repo_name", "platform-repo"); + }); + + it("should output target_repo_name without owner prefix when falling back to GITHUB_REPOSITORY", async () => { + process.env.GITHUB_WORKFLOW_REF = ""; + process.env.GITHUB_REPOSITORY = "my-org/fallback-repo"; + + await main(); + + expect(mockCore.setOutput).toHaveBeenCalledWith("target_repo_name", "fallback-repo"); + }); + it("should include target_ref in step summary for cross-repo invocations", async () => { process.env.GITHUB_WORKFLOW_REF = "my-org/platform-repo/.github/workflows/gateway.lock.yml@refs/heads/feature-branch"; process.env.GITHUB_REPOSITORY = "my-org/app-repo"; diff --git a/actions/setup/js/tsconfig.json b/actions/setup/js/tsconfig.json index acc316a416..6acdfe964f 100644 --- a/actions/setup/js/tsconfig.json +++ b/actions/setup/js/tsconfig.json @@ -1,8 +1,8 @@ { "compilerOptions": { - "target": "es2020", + "target": "es2022", "module": "commonjs", - "lib": ["es2020"], + "lib": ["es2022"], "types": ["node"], "allowJs": true, "checkJs": true,