mirror of
https://github.com/anthropics/claude-code-action.git
synced 2026-01-23 15:04:13 +08:00
* fix: use GITHUB_SERVER_URL to determine email domain for GitHub Enterprise
- Extract hostname from GITHUB_SERVER_URL environment variable
- Use users.noreply.github.com for GitHub.com
- Use users.noreply.{hostname} for GitHub Enterprise instances
Fixes #288
Co-authored-by: Ashwin Bhat <ashwin-ant@users.noreply.github.com>
* lint
---------
Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com>
Co-authored-by: Ashwin Bhat <ashwin-ant@users.noreply.github.com>
63 lines
2.2 KiB
TypeScript
63 lines
2.2 KiB
TypeScript
#!/usr/bin/env bun
|
|
|
|
/**
|
|
* Configure git authentication for non-signing mode
|
|
* Sets up git user and authentication to work with GitHub App tokens
|
|
*/
|
|
|
|
import { $ } from "bun";
|
|
import type { ParsedGitHubContext } from "../context";
|
|
import { GITHUB_SERVER_URL } from "../api/config";
|
|
|
|
type GitUser = {
|
|
login: string;
|
|
id: number;
|
|
};
|
|
|
|
export async function configureGitAuth(
|
|
githubToken: string,
|
|
context: ParsedGitHubContext,
|
|
user: GitUser | null,
|
|
) {
|
|
console.log("Configuring git authentication for non-signing mode");
|
|
|
|
// Determine the noreply email domain based on GITHUB_SERVER_URL
|
|
const serverUrl = new URL(GITHUB_SERVER_URL);
|
|
const noreplyDomain =
|
|
serverUrl.hostname === "github.com"
|
|
? "users.noreply.github.com"
|
|
: `users.noreply.${serverUrl.hostname}`;
|
|
|
|
// Configure git user based on the comment creator
|
|
console.log("Configuring git user...");
|
|
if (user) {
|
|
const botName = user.login;
|
|
const botId = user.id;
|
|
console.log(`Setting git user as ${botName}...`);
|
|
await $`git config user.name "${botName}"`;
|
|
await $`git config user.email "${botId}+${botName}@${noreplyDomain}"`;
|
|
console.log(`✓ Set git user as ${botName}`);
|
|
} else {
|
|
console.log("No user data in comment, using default bot user");
|
|
await $`git config user.name "github-actions[bot]"`;
|
|
await $`git config user.email "41898282+github-actions[bot]@${noreplyDomain}"`;
|
|
}
|
|
|
|
// Remove the authorization header that actions/checkout sets
|
|
console.log("Removing existing git authentication headers...");
|
|
try {
|
|
await $`git config --unset-all http.${GITHUB_SERVER_URL}/.extraheader`;
|
|
console.log("✓ Removed existing authentication headers");
|
|
} catch (e) {
|
|
console.log("No existing authentication headers to remove");
|
|
}
|
|
|
|
// Update the remote URL to include the token for authentication
|
|
console.log("Updating remote URL with authentication...");
|
|
const remoteUrl = `https://x-access-token:${githubToken}@${serverUrl.host}/${context.repository.owner}/${context.repository.repo}.git`;
|
|
await $`git remote set-url origin ${remoteUrl}`;
|
|
console.log("✓ Updated remote URL with authentication token");
|
|
|
|
console.log("Git authentication configured successfully");
|
|
}
|