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"
|
**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.
|
**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
|
#### 2. Limited Event Support
|
||||||
Some GitHub Events may not be fully supported in Gitea. Use basic triggers:
|
Some GitHub Events may not be fully supported in Gitea. Use basic triggers:
|
||||||
- `issue_comment` for comments
|
- `issue_comment` for comments
|
||||||
|
|||||||
@@ -96,6 +96,7 @@ export async function fetchGitHubData({
|
|||||||
}));
|
}));
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.warn("Failed to fetch PR comments:", error);
|
console.warn("Failed to fetch PR comments:", error);
|
||||||
|
comments = []; // Ensure we have an empty array
|
||||||
}
|
}
|
||||||
|
|
||||||
// Try to fetch files
|
// Try to fetch files
|
||||||
@@ -107,12 +108,13 @@ export async function fetchGitHubData({
|
|||||||
});
|
});
|
||||||
changedFiles = filesResponse.data.map(file => ({
|
changedFiles = filesResponse.data.map(file => ({
|
||||||
path: file.filename,
|
path: file.filename,
|
||||||
additions: file.additions,
|
additions: file.additions || 0,
|
||||||
deletions: file.deletions,
|
deletions: file.deletions || 0,
|
||||||
changeType: file.status,
|
changeType: file.status || "modified",
|
||||||
}));
|
}));
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.warn("Failed to fetch PR files:", error);
|
console.warn("Failed to fetch PR files:", error);
|
||||||
|
changedFiles = []; // Ensure we have an empty array
|
||||||
}
|
}
|
||||||
|
|
||||||
reviewData = { nodes: [] }; // Simplified for Gitea
|
reviewData = { nodes: [] }; // Simplified for Gitea
|
||||||
@@ -149,6 +151,7 @@ export async function fetchGitHubData({
|
|||||||
}));
|
}));
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.warn("Failed to fetch issue comments:", error);
|
console.warn("Failed to fetch issue comments:", error);
|
||||||
|
comments = []; // Ensure we have an empty array
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -12,20 +12,35 @@ export async function checkHumanActor(
|
|||||||
octokit: Octokit,
|
octokit: Octokit,
|
||||||
githubContext: ParsedGitHubContext,
|
githubContext: ParsedGitHubContext,
|
||||||
) {
|
) {
|
||||||
// Fetch user information from GitHub API
|
// Check if we're in a Gitea environment
|
||||||
const { data: userData } = await octokit.users.getByUsername({
|
const isGitea = process.env.GITHUB_API_URL && !process.env.GITHUB_API_URL.includes('api.github.com');
|
||||||
username: githubContext.actor,
|
|
||||||
});
|
if (isGitea) {
|
||||||
|
console.log(`Detected Gitea environment, skipping actor type validation for: ${githubContext.actor}`);
|
||||||
const actorType = userData.type;
|
return;
|
||||||
|
|
||||||
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}`);
|
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