mirror of
https://github.com/markwylde/claude-code-gitea-action.git
synced 2026-02-20 02:22:49 +08:00
Attempt to make this work
This commit is contained in:
@@ -171,6 +171,10 @@ permissions:
|
||||
**Error**: "Failed to check permissions: HttpError: Bad credentials"
|
||||
**Solution**: This is normal in Gitea environments. The action automatically detects Gitea and bypasses GitHub-specific permission checks.
|
||||
|
||||
#### 1a. User Profile API Errors
|
||||
**Error**: "Prepare step failed with error: Visit Project" or "GET /users/{username} - 404"
|
||||
**Solution**: This occurs when Gitea's user profile API differs from GitHub's. The action automatically detects Gitea and skips user type validation.
|
||||
|
||||
#### 2. Limited Event Support
|
||||
Some GitHub Events may not be fully supported in Gitea. Use basic triggers:
|
||||
- `issue_comment` for comments
|
||||
|
||||
@@ -96,6 +96,7 @@ export async function fetchGitHubData({
|
||||
}));
|
||||
} catch (error) {
|
||||
console.warn("Failed to fetch PR comments:", error);
|
||||
comments = []; // Ensure we have an empty array
|
||||
}
|
||||
|
||||
// Try to fetch files
|
||||
@@ -107,12 +108,13 @@ export async function fetchGitHubData({
|
||||
});
|
||||
changedFiles = filesResponse.data.map(file => ({
|
||||
path: file.filename,
|
||||
additions: file.additions,
|
||||
deletions: file.deletions,
|
||||
changeType: file.status,
|
||||
additions: file.additions || 0,
|
||||
deletions: file.deletions || 0,
|
||||
changeType: file.status || "modified",
|
||||
}));
|
||||
} catch (error) {
|
||||
console.warn("Failed to fetch PR files:", error);
|
||||
changedFiles = []; // Ensure we have an empty array
|
||||
}
|
||||
|
||||
reviewData = { nodes: [] }; // Simplified for Gitea
|
||||
@@ -149,6 +151,7 @@ export async function fetchGitHubData({
|
||||
}));
|
||||
} catch (error) {
|
||||
console.warn("Failed to fetch issue comments:", error);
|
||||
comments = []; // Ensure we have an empty array
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
||||
@@ -12,20 +12,35 @@ export async function checkHumanActor(
|
||||
octokit: Octokit,
|
||||
githubContext: ParsedGitHubContext,
|
||||
) {
|
||||
// Fetch user information from GitHub API
|
||||
const { data: userData } = await octokit.users.getByUsername({
|
||||
username: githubContext.actor,
|
||||
});
|
||||
// Check if we're in a Gitea environment
|
||||
const isGitea = process.env.GITHUB_API_URL && !process.env.GITHUB_API_URL.includes('api.github.com');
|
||||
|
||||
const actorType = userData.type;
|
||||
|
||||
console.log(`Actor type: ${actorType}`);
|
||||
|
||||
if (actorType !== "User") {
|
||||
throw new Error(
|
||||
`Workflow initiated by non-human actor: ${githubContext.actor} (type: ${actorType}).`,
|
||||
);
|
||||
if (isGitea) {
|
||||
console.log(`Detected Gitea environment, skipping actor type validation for: ${githubContext.actor}`);
|
||||
return;
|
||||
}
|
||||
|
||||
console.log(`Verified human actor: ${githubContext.actor}`);
|
||||
try {
|
||||
// Fetch user information from GitHub API
|
||||
const { data: userData } = await octokit.users.getByUsername({
|
||||
username: githubContext.actor,
|
||||
});
|
||||
|
||||
const actorType = userData.type;
|
||||
|
||||
console.log(`Actor type: ${actorType}`);
|
||||
|
||||
if (actorType !== "User") {
|
||||
throw new Error(
|
||||
`Workflow initiated by non-human actor: ${githubContext.actor} (type: ${actorType}).`,
|
||||
);
|
||||
}
|
||||
|
||||
console.log(`Verified human actor: ${githubContext.actor}`);
|
||||
} catch (error) {
|
||||
console.warn(`Failed to check actor type for ${githubContext.actor}:`, error);
|
||||
|
||||
// For compatibility, assume human actor if API call fails
|
||||
console.log(`Assuming human actor due to API failure: ${githubContext.actor}`);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user