diff --git a/lib/platform/gitlab/index.js b/lib/platform/gitlab/index.js index 8af5dd8396c4a8c446e9dbc40b530def090f813c..23887b35386f87855f4556b0f025bdf2ddd2fd25 100644 --- a/lib/platform/gitlab/index.js +++ b/lib/platform/gitlab/index.js @@ -106,8 +106,15 @@ async function initRepo({ repository, token, endpoint, gitAuthor }) { throw new Error('Invalid gitAuthor'); } } + let res; try { - const res = await get(`projects/${config.repository}`); + res = await get(`projects/${config.repository}`); + if (res.body.archived) { + logger.info( + 'Repository is archived - throwing error to abort renovation' + ); + throw new Error('archived'); + } config.defaultBranch = res.body.default_branch; config.baseBranch = config.defaultBranch; logger.debug(`${repository} default branch = ${config.baseBranch}`); @@ -117,7 +124,14 @@ async function initRepo({ repository, token, endpoint, gitAuthor }) { delete config.fileList; await Promise.all([getPrList(), getFileList()]); } catch (err) { - logger.error({ err }, `GitLab init error`); + logger.debug('Caught initRepo error'); + if (err.message === 'archived') { + throw err; + } + logger.info( + { err, message: err.message, body: res ? res.body : undefined }, + 'Unknown GitLab initRepo error' + ); throw err; } return {}; diff --git a/test/platform/gitlab/index.spec.js b/test/platform/gitlab/index.spec.js index 7b62abd8381dccbb7278c06618767117862a516e..525e639ce3ea26583add5a6d88a0e18c98dd9ccb 100644 --- a/test/platform/gitlab/index.spec.js +++ b/test/platform/gitlab/index.spec.js @@ -142,6 +142,16 @@ describe('platform/gitlab', () => { } expect(err.message).toBe('always error'); }); + it('should throw an error if repository is archived', async () => { + get.mockReturnValue({ body: { archived: true } }); + let err; + try { + await gitlab.initRepo({ repository: 'some/repo', token: 'sometoken' }); + } catch (e) { + err = e; + } + expect(err.message).toBe('archived'); + }); }); describe('getRepoForceRebase', () => { it('should return false', () => {