diff --git a/services/web/app/src/infrastructure/ExpressLocals.mjs b/services/web/app/src/infrastructure/ExpressLocals.mjs index bae4e2deac..e504bbe204 100644 --- a/services/web/app/src/infrastructure/ExpressLocals.mjs +++ b/services/web/app/src/infrastructure/ExpressLocals.mjs @@ -424,7 +424,8 @@ export default async function (webRouter, privateApiRouter, publicApiRouter) { cioSiteId: Settings.analytics?.cio?.siteId, linkedInInsightsPartnerId: Settings.analytics?.linkedIn?.partnerId, githubSyncEnabled: !!Settings.githubSync?.clientID && !!Settings.githubSync?.clientSecret, - gitlabSyncEnabled: !!Settings.gitlabSync?.clientID && !!Settings.gitlabSync?.clientSecret, + gitlabSyncEnabled: !!Settings.gitlabSync, + gitlabUrl: Settings.gitlabSync?.url, zoteroEnabled: !!Settings.zotero?.clientKey && !!Settings.zotero?.clientSecret, enablePandocConversions: Settings.enablePandocConversions, mixpanelLabsToken: diff --git a/services/web/modules/gitlab-sync/app/src/GitLabApiClient.mjs b/services/web/modules/gitlab-sync/app/src/GitLabApiClient.mjs index 15db90c326..f738723627 100644 --- a/services/web/modules/gitlab-sync/app/src/GitLabApiClient.mjs +++ b/services/web/modules/gitlab-sync/app/src/GitLabApiClient.mjs @@ -21,16 +21,16 @@ import { AlreadyExistsError, } from './GitSyncErrors.mjs' -const GITLAB_URL = process.env.GITLAB_SYNC_URL +const GITLAB_URL = Settings.gitlabSync?.url const GITLAB_API_BASE = `${GITLAB_URL}/api/v4` -const GITLAB_DEFAULT_BRANCH = process.env.GITLAB_DEFAULT_BRANCH || 'main' +const GITLAB_DEFAULT_BRANCH = Settings.gitlabSync?.defaultBranch const MAX_PER_PAGE = 100 const REQUEST_TIMEOUT_MS = 60 * 1000 const REQUEST_LONG_TIMEOUT_MS = 600 * 1000 -const MERGE_REQUEST_POLL_INTERVAL_MS = process.env.GITLAB_MERGE_REQUEST_POLL_INTERVAL_MS || 1000 -const MERGE_REQUEST_TIMEOUT_MS = process.env.GITLAB_MERGE_REQUEST_TIMEOUT_MS || 60_000 +const MERGE_REQUEST_POLL_INTERVAL_MS = Settings.gitlabSync?.mergeRequestPollInterval +const MERGE_REQUEST_TIMEOUT_MS = Settings.gitlabSync?.mergeRequestTimeout const mergeRequestPendingStates = new Set([ 'unchecked', @@ -639,4 +639,4 @@ export default { mergeBranch, compareCommits, getRepoZipball, -} \ No newline at end of file +} diff --git a/services/web/modules/gitlab-sync/index.mjs b/services/web/modules/gitlab-sync/index.mjs index cc7316d6e1..87a0811cbb 100644 --- a/services/web/modules/gitlab-sync/index.mjs +++ b/services/web/modules/gitlab-sync/index.mjs @@ -7,9 +7,20 @@ if (process.env.GITLAB_SYNC_ENABLED?.toLowerCase() === 'true') { logger.debug({}, 'Enabling GitLab Sync module') // The GITLAB_URL variable has to be set for this module to work, otherwise the module will not be enabled - if (process.env.GITLAB_SYNC_URL === undefined || process.env.GITLAB_SYNC_URL === '') { - logger.warn({}, 'GitLab Sync module is enabled but GITLAB_SYNC_URL is not set, stopping module initialization') + if (!process.env.GITLAB_SYNC_URL || !process.env.GITLAB_SYNC_CLIENT_ID || !process.env.GITLAB_SYNC_CLIENT_SECRET) { + logger.warn({}, 'GitLab Sync module is enabled but not all mandatory envirionment variables are set, stopping module initialization') } else { + const siteUrl = Settings.siteUrl.replace(/\/+$/, '') || 'http://localhost' + Settings.gitlabSync = { + url: process.env.GITLAB_SYNC_URL.replace(/\/+$/, ''), + clientID: process.env.GITLAB_SYNC_CLIENT_ID, + clientSecret: process.env.GITLAB_SYNC_CLIENT_SECRET, + callbackURL: `${siteUrl}/user/gitlab-sync/oauth2/callback`, + defaultBranch: process.env.GITLAB_DEFAULT_BRANCH || 'main', + mergeRequestPollInterval: process.env.GITLAB_MERGE_REQUEST_POLL_INTERVAL_MS || 1000, + mergeRequestTimeout: process.env.GITLAB_MERGE_REQUEST_TIMEOUT_MS || 60_000, + } + const [{ default: GitLabSyncRouter }, { default: SyncStateManager }, { default: TokenManager } @@ -20,13 +31,6 @@ if (process.env.GITLAB_SYNC_ENABLED?.toLowerCase() === 'true') { import('./app/src/TokenManager.mjs'), ]) - const siteUrl = Settings.siteUrl.replace(/\/+$/, '') || 'http://localhost' - Settings.gitlabSync = { - clientID: process.env.GITLAB_SYNC_CLIENT_ID, - clientSecret: process.env.GITLAB_SYNC_CLIENT_SECRET, - callbackURL: `${siteUrl}/user/gitlab-sync/oauth2/callback`, - }, - // Delete project sync state from mongo (hook 'projectExpired') Modules.hooks.attach('projectExpired', async projectId => { try {