Add GITHUB_EXCLUDED_ORGS support for organization filtering

This commit is contained in:
Sulaiman Khan Ghori
2025-07-18 15:58:04 -07:00
parent 8d2919717f
commit 8d7ca8dd8f
4 changed files with 20 additions and 2 deletions

View File

@@ -70,6 +70,7 @@ services:
# GitHub/Gitea Mirror Config # GitHub/Gitea Mirror Config
- GITHUB_USERNAME=${GITHUB_USERNAME:-your-github-username} - GITHUB_USERNAME=${GITHUB_USERNAME:-your-github-username}
- GITHUB_TOKEN=${GITHUB_TOKEN:-your-github-token} - GITHUB_TOKEN=${GITHUB_TOKEN:-your-github-token}
- GITHUB_EXCLUDED_ORGS=${GITHUB_EXCLUDED_ORGS:-}
- SKIP_FORKS=${SKIP_FORKS:-false} - SKIP_FORKS=${SKIP_FORKS:-false}
- PRIVATE_REPOSITORIES=${PRIVATE_REPOSITORIES:-false} - PRIVATE_REPOSITORIES=${PRIVATE_REPOSITORIES:-false}
- MIRROR_ISSUES=${MIRROR_ISSUES:-false} - MIRROR_ISSUES=${MIRROR_ISSUES:-false}

View File

@@ -35,6 +35,7 @@ services:
# GitHub/Gitea Mirror Config # GitHub/Gitea Mirror Config
- GITHUB_USERNAME=${GITHUB_USERNAME:-} - GITHUB_USERNAME=${GITHUB_USERNAME:-}
- GITHUB_TOKEN=${GITHUB_TOKEN:-} - GITHUB_TOKEN=${GITHUB_TOKEN:-}
- GITHUB_EXCLUDED_ORGS=${GITHUB_EXCLUDED_ORGS:-}
- SKIP_FORKS=${SKIP_FORKS:-false} - SKIP_FORKS=${SKIP_FORKS:-false}
- PRIVATE_REPOSITORIES=${PRIVATE_REPOSITORIES:-false} - PRIVATE_REPOSITORIES=${PRIVATE_REPOSITORIES:-false}
- MIRROR_ISSUES=${MIRROR_ISSUES:-false} - MIRROR_ISSUES=${MIRROR_ISSUES:-false}

View File

@@ -92,6 +92,7 @@ JWT_SECRET=your-secret-here
# GitHub Configuration # GitHub Configuration
GITHUB_TOKEN=ghp_... GITHUB_TOKEN=ghp_...
GITHUB_WEBHOOK_SECRET=... GITHUB_WEBHOOK_SECRET=...
GITHUB_EXCLUDED_ORGS=org1,org2,org3 # Optional: Comma-separated list of organizations to exclude from sync
# Gitea Configuration # Gitea Configuration
GITEA_URL=https://your-gitea.com GITEA_URL=https://your-gitea.com

View File

@@ -172,8 +172,23 @@ export async function getGithubOrganizations({
per_page: 100, per_page: 100,
}); });
// Get excluded organizations from environment variable
const excludedOrgsEnv = process.env.GITHUB_EXCLUDED_ORGS;
const excludedOrgs = excludedOrgsEnv
? excludedOrgsEnv.split(',').map(org => org.trim().toLowerCase())
: [];
// Filter out excluded organizations
const filteredOrgs = orgs.filter(org => {
if (excludedOrgs.includes(org.login.toLowerCase())) {
console.log(`Skipping organization ${org.login} - excluded via GITHUB_EXCLUDED_ORGS environment variable`);
return false;
}
return true;
});
const organizations = await Promise.all( const organizations = await Promise.all(
orgs.map(async (org) => { filteredOrgs.map(async (org) => {
const [{ data: orgDetails }, { data: membership }] = await Promise.all([ const [{ data: orgDetails }, { data: membership }] = await Promise.all([
octokit.orgs.get({ org: org.login }), octokit.orgs.get({ org: org.login }),
octokit.orgs.getMembershipForAuthenticatedUser({ org: org.login }), octokit.orgs.getMembershipForAuthenticatedUser({ org: org.login }),