Attempt to make this work

This commit is contained in:
Mark Wylde
2025-05-30 20:17:34 +01:00
parent f598608bb4
commit 6410e33591
3 changed files with 39 additions and 17 deletions

View File

@@ -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

View File

@@ -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 {

View File

@@ -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,
});
const actorType = userData.type; if (isGitea) {
console.log(`Detected Gitea environment, skipping actor type validation for: ${githubContext.actor}`);
console.log(`Actor type: ${actorType}`); return;
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}`);
}
} }