From c0e9c9698c382925b2e1f1a9b3b2b615087598c5 Mon Sep 17 00:00:00 2001 From: Rosanny <rosanny.sihombing@hft-stuttgart.de> Date: Fri, 19 Mar 2021 11:52:13 +0100 Subject: [PATCH] pulling gitlab pages without accessing runners --- routes/gitlab.js | 62 +++++----------------- routes/routes-project.js | 110 ++++++++++++++++++--------------------- 2 files changed, 63 insertions(+), 109 deletions(-) diff --git a/routes/gitlab.js b/routes/gitlab.js index be92ac5..64b68af 100644 --- a/routes/gitlab.js +++ b/routes/gitlab.js @@ -1,9 +1,7 @@ -var env = process.env.NODE_ENV || 'testing' -const config = require('../config/config')[env] const axios = require('axios') var gitlab = { - getRepos: async function(perPage, idAfter) { + getProjects: async function(perPage, idAfter) { try { let projects = await axios({ method: 'get', @@ -11,43 +9,20 @@ var gitlab = { }) let data = projects.data let reposArr = [] - for(let i = 0; i < data.length; i++){ - // skip template project - if (data[i].name == 'template_gitlab_page') { - continue - } else if(!data[i].tag_list.includes('website')) { - reposArr.push(data[i]) - } - } - return { - error: false, - data: reposArr} - } - catch (err) { - return { - error: true, - data: err} - } - }, - getPages: async function(perPage, idAfter) { - try { - let projects = await axios({ - method: 'get', - url: 'https://transfer.hft-stuttgart.de/gitlab/api/v4/projects?visibility=public&pagination=keyset&per_page='+perPage+'&order_by=id&sort=asc&id_after='+idAfter - }) - let data = projects.data let pagesArr = [] for(let i = 0; i < data.length; i++){ // skip template project - if (data[i].name == 'template_gitlab_page') { + if (data[i].name == 'page_basic' || data[i].name == 'generic' || data[i].name == 'simple_raw' || data[i].name == 'simple_thesis') { continue } else if(data[i].tag_list.includes('website')) { pagesArr.push(data[i]) + } else { + reposArr.push(data[i]) } } return { error: false, - data: pagesArr} + data: [reposArr, pagesArr]} } catch (err) { return { @@ -55,26 +30,13 @@ var gitlab = { data: err} } }, - getProjectsFromRunners: async function() { - try { - let runner = await axios({ - method: 'get', - url: 'https://transfer.hft-stuttgart.de/gitlab/api/v4/runners/7', - headers: { - 'Authorization': 'Bearer '+config.gitlab.token_readWriteProjects - } - }) - let runnerProjects = runner.data.projects - return { - error: false, - data: runnerProjects - } - } - catch (err) { - return { - error: true, - data: err} - } + getLatestPipelineStatus: async function(projectId) { + return axios({ + method: 'get', + url: 'https://transfer.hft-stuttgart.de/gitlab/api/v4/projects/'+projectId+'/pipelines' + }) + .then(res => res.data[0].status) + .catch(err => console.error(err)) } } diff --git a/routes/routes-project.js b/routes/routes-project.js index 3bf97e2..1dff948 100644 --- a/routes/routes-project.js +++ b/routes/routes-project.js @@ -257,8 +257,8 @@ module.exports = function (app) { let firstId = 0 while (isProject == true) { - let projects = await gitlab.getRepos(100, firstId) - let projectData = projects.data + let projects = await gitlab.getProjects(100, firstId) + let projectData = projects.data[0] if (projectData.length == 0) { isProject = false @@ -298,68 +298,60 @@ module.exports = function (app) { let isProject = true let firstId = 0 - let runnerProjects = await gitlab.getProjectsFromRunners() - if(runnerProjects.error) { - // error response: to be updated - res.status(500).render(lang+'/500', { error: err }) - } else { - let runnerProjectsData = runnerProjects.data - let runnerProjectsIds = [] - for(let i = 0; i < runnerProjectsData.length; i++){ - runnerProjectsIds.push(runnerProjectsData[i].id) - } - - while (isProject == true) { - let pages = await gitlab.getPages(100, firstId) - let pagesData = pages.data + while (isProject == true) { + let projects = await gitlab.getProjects(100, firstId) + let pagesData = projects.data[1] - if (pagesData.length == 0) { - isProject = false - } else { - for(let i = 0; i < pagesData.length; i++){ - // ONLY IF THE PROJECT IS AVAILABLE IN THE RUNNER - if(runnerProjectsIds.indexOf(pagesData[i].id) > -1) { - // M4_LAB logo for all projects that do not have logo - if (pagesData[i].avatar_url == null) { - pagesData[i].avatar_url = "https://m4lab.hft-stuttgart.de/img/footer/M4_LAB_LOGO_Graustufen.png" - } - // for all projects that have no description - if (pagesData[i].description == "") { - pagesData[i].description = "- no description -" - } - // customize website name - if (pagesData[i].name == "Visualization") { - pagesData[i].web_url = "https://transfer.hft-stuttgart.de/pages/visualization" - } - else if (pagesData[i].name == "IN-Source") { - pagesData[i].web_url = "https://transfer.hft-stuttgart.de/pages/INsource" - } - else if (pagesData[i].name == "3DS_Visualization_Cesium") { - pagesData[i].web_url = "https://transfer.hft-stuttgart.de/pages/3ds_visualization_cesium" - } - else { - pagesData[i].web_url = "https://transfer.hft-stuttgart.de/pages/"+pagesData[i].name - } - // remove 'website' from tag list - let index = pagesData[i].tag_list.indexOf('website') - if (index > -1) { - pagesData[i].tag_list.splice(index, 1) - } + if (pagesData.length == 0) { + isProject = false + } else { + for(let i = 0; i < pagesData.length; i++){ + let status = await gitlab.getLatestPipelineStatus(pagesData[i].id) + if (status) { + // M4_LAB logo for all projects that do not have logo + if (pagesData[i].avatar_url == null) { + pagesData[i].avatar_url = "https://m4lab.hft-stuttgart.de/img/footer/M4_LAB_LOGO_Graustufen.png" + } + // for all projects that have no description + if (pagesData[i].description == "") { + pagesData[i].description = "- no description -" + } + // customized website name + if (pagesData[i].name == "Visualization") { + //todo: update URL - user? group? + pagesData[i].web_url = "https://transfer.hft-stuttgart.de/pages/visualization" + } + else if (pagesData[i].name == "IN-Source") { + //todo: update URL + pagesData[i].web_url = "https://transfer.hft-stuttgart.de/pages/INsource" + } + else if (pagesData[i].name == "3DS_Visualization_Cesium") { + //todo: update URL + pagesData[i].web_url = "https://transfer.hft-stuttgart.de/pages/3ds_visualization_cesium" + } + else { + //todo: update URL + pagesData[i].web_url = "https://transfer.hft-stuttgart.de/pages/"+pagesData[i].name + } + // remove 'website' from tag list + let index = pagesData[i].tag_list.indexOf('website') + if (index > -1) { + pagesData[i].tag_list.splice(index, 1) + } - // fill in pagesArr - let pages = { - logo: pagesData[i].avatar_url, - name: pagesData[i].name, - weburl: pagesData[i].web_url, - desc: pagesData[i].description, - keywords: pagesData[i].tag_list - } - pagesArr.push(pages) + // fill in pagesArr + let pages = { + logo: pagesData[i].avatar_url, + name: pagesData[i].name, + weburl: pagesData[i].web_url, + desc: pagesData[i].description, + keywords: pagesData[i].tag_list } + pagesArr.push(pages) } - firstId = pagesData[pagesData.length-1].id } - } + firstId = pagesData[pagesData.length-1].id + } } res.render(lang+'/project/pagesList', { -- GitLab