import os
import gitlab
import pandas as pd
import urllib3
from dotenv import load_dotenv
urllib3.disable_warnings()
load_dotenv()
def get_project(project_id):
project = gl.projects.get(project_id)
return project
def get_project_data(project):
return {'project_id':project.attributes['id'], 'project_name': project.attributes['name'], 'project_url': project.attributes['web_url']}
def get_project_pipeline(project):
project_dict = get_project_data(project)
pipeline_list = project.pipelines.list()
if pipeline_list and len(pipeline_list)!=0:
pipeline_main = []
pipeline_master = []
try:
pipeline_main = project.pipelines.latest(ref="main")
except:
print('nao possui main')
try:
pipeline_master = project.pipelines.latest(ref="master")
except:
print("nao possui master")
if pipeline_main:
pipeline_last = pipeline_main
elif pipeline_master:
pipeline_last = pipeline_master
else:
pipeline_dict = {'pipeline_status':'none', 'pipeline_duration':0}
return {**project_dict, **pipeline_dict}
if pipeline_last:
pipeline_dict = {'pipeline_status':pipeline_last.attributes['status'], 'pipeline_duration':pipeline_last.attributes['duration'], 'icon':"<i class='fa fa-print'></i>"}
return {**project_dict, **pipeline_dict}
# create a GitLab instance
gl = gitlab.Gitlab(os.getenv('GITLAB_URL'), private_token=os.getenv('GITLAB_TOKEN'), ssl_verify=False)
import pandas as pd
df = pd.read_csv(os.getenv('ARQUIVO_PROJETOS'),delimiter=';')
projects_data = []
df = df.reset_index() # make sure indexes pair with number of rows
for index, row in df.iterrows():
# print(row['id'])
project = get_project(row['id'])
# print(get_project_data(project))
pj = get_project_pipeline(project)
if pj:
print(f"projeto: {pj['project_name']} url:{pj['project_url']}")
projects_data.append(pj)
links = pd.DataFrame(projects_data)
import panel as pn
pn.extension()
links["value"]="<a href='" + links["project_url"] + "' target='_blank'>" + links["project_name"] + "</a>"
pn.pane.DataFrame(links, escape=False, width=800, index=False, render_links=True).servable()