From 8d7ca8dd8fa040a80e34053311eb296f9dcd2d18 Mon Sep 17 00:00:00 2001 From: Sulaiman Khan Ghori Date: Fri, 18 Jul 2025 15:58:04 -0700 Subject: [PATCH] Add GITHUB_EXCLUDED_ORGS support for organization filtering --- docker-compose.dev.yml | 1 + docker-compose.yml | 1 + docs/BUILD_GUIDE.md | 3 ++- src/lib/github.ts | 17 ++++++++++++++++- 4 files changed, 20 insertions(+), 2 deletions(-) diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml index 321297e..b7b97d5 100644 --- a/docker-compose.dev.yml +++ b/docker-compose.dev.yml @@ -70,6 +70,7 @@ services: # GitHub/Gitea Mirror Config - GITHUB_USERNAME=${GITHUB_USERNAME:-your-github-username} - GITHUB_TOKEN=${GITHUB_TOKEN:-your-github-token} + - GITHUB_EXCLUDED_ORGS=${GITHUB_EXCLUDED_ORGS:-} - SKIP_FORKS=${SKIP_FORKS:-false} - PRIVATE_REPOSITORIES=${PRIVATE_REPOSITORIES:-false} - MIRROR_ISSUES=${MIRROR_ISSUES:-false} diff --git a/docker-compose.yml b/docker-compose.yml index ec9110e..bf38048 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -35,6 +35,7 @@ services: # GitHub/Gitea Mirror Config - GITHUB_USERNAME=${GITHUB_USERNAME:-} - GITHUB_TOKEN=${GITHUB_TOKEN:-} + - GITHUB_EXCLUDED_ORGS=${GITHUB_EXCLUDED_ORGS:-} - SKIP_FORKS=${SKIP_FORKS:-false} - PRIVATE_REPOSITORIES=${PRIVATE_REPOSITORIES:-false} - MIRROR_ISSUES=${MIRROR_ISSUES:-false} diff --git a/docs/BUILD_GUIDE.md b/docs/BUILD_GUIDE.md index c74146c..069f879 100644 --- a/docs/BUILD_GUIDE.md +++ b/docs/BUILD_GUIDE.md @@ -92,6 +92,7 @@ JWT_SECRET=your-secret-here # GitHub Configuration GITHUB_TOKEN=ghp_... GITHUB_WEBHOOK_SECRET=... +GITHUB_EXCLUDED_ORGS=org1,org2,org3 # Optional: Comma-separated list of organizations to exclude from sync # Gitea Configuration GITEA_URL=https://your-gitea.com @@ -202,4 +203,4 @@ Expected build times: - Configure with [Configuration Guide](./CONFIGURATION.md) - Deploy with [Deployment Guide](./DEPLOYMENT.md) -- Set up authentication with [SSO Guide](./SSO-OIDC-SETUP.md) \ No newline at end of file +- Set up authentication with [SSO Guide](./SSO-OIDC-SETUP.md) diff --git a/src/lib/github.ts b/src/lib/github.ts index a1de890..196ebda 100644 --- a/src/lib/github.ts +++ b/src/lib/github.ts @@ -172,8 +172,23 @@ export async function getGithubOrganizations({ 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( - orgs.map(async (org) => { + filteredOrgs.map(async (org) => { const [{ data: orgDetails }, { data: membership }] = await Promise.all([ octokit.orgs.get({ org: org.login }), octokit.orgs.getMembershipForAuthenticatedUser({ org: org.login }),