# TODOs: # upload on github # add CLI interface # add config file import json import requests # curl --request GET --header "PRIVATE-TOKEN: " "https://gitlab.example.com/api/v4/namespaces?per_page=50" # https://docs.gitlab.com/ee/api/rest/index.html#pagination # curl --globoff --header "PRIVATE-TOKEN: " "https://gitlab.example.com/api/v4/projects/1/jobs?scope[]=pending&scope[]=running" import config_parser # print(response_array) # def write_to_file(response_array): f = open("gitlab-jobs1.txt", "a") f.write(str(response_array)) f.close() def find_acceptance_jobs_that_were_run(list_of_jobs): name_filter = filter(lambda x: x['name'] == 'deploy-acceptance' and x['status'] == 'success', list_of_jobs) filtered_list_of_jobs = list(name_filter) print(filtered_list_of_jobs) return filtered_list_of_jobs if __name__ == '__main__': NUMBER_OF_ITEMS_PER_PAGE = 100 url_template = 'https://gitlab.atb-bremen.de/api/v4/projects/244/jobs?per_page={}&page={}' # get the last 100x50 jobs = 5000 iterations = list(range(0, 1)) response_array = [] headers = { 'PRIVATE-TOKEN': config_parser.token } for i in iterations: response = requests.request("GET", url_template.format(NUMBER_OF_ITEMS_PER_PAGE, i), headers=headers) json_response = response.text # print(response.text) response_array.append(json.loads(json_response)) import itertools flat_list_of_jobs = list(itertools.chain(*response_array)) find_acceptance_jobs_that_were_run(flat_list_of_jobs) # TODO filter output for relevant fields