From e469cf1a6a4a9f9b89be555b97b60f01b9fe7564 Mon Sep 17 00:00:00 2001 From: Hutson Betts <hutson@hyper-expanse.net> Date: Sun, 2 Sep 2018 14:13:23 -0500 Subject: [PATCH] feat(gitlab): ignore archived repositories (#2461) Ignore archived GitLab repositories. Closes #2437 --- lib/platform/gitlab/index.js | 18 ++++++++++++++++-- test/platform/gitlab/index.spec.js | 10 ++++++++++ 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/lib/platform/gitlab/index.js b/lib/platform/gitlab/index.js index 8af5dd8396..23887b3538 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 7b62abd838..525e639ce3 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', () => { -- GitLab