cleanup
This commit is contained in:
parent
25564357bb
commit
d5265d4e13
10
README.md
10
README.md
@ -1,6 +1,12 @@
|
|||||||
# gitlab-api-ci-finder (glcifinder)
|
# gitlab-api-ci-finder (glcifinder)
|
||||||
|
|
||||||
|
|
||||||
## How to run
|
## How to use
|
||||||
`python glcifinder-cli.py --count 1000 --projectid 244 --jobname deploy-test`
|
- Pre-requisite: Python 3 installed
|
||||||
|
- install requirements: `pip install -U -r requirements.txt`
|
||||||
|
- `python glcifinder-cli.py --count 1000 --projectid 244 --jobname deploy-test`
|
||||||
|
|
||||||
|
|
||||||
|
## TODOs:
|
||||||
|
- upload on github
|
||||||
|
- build executable for windows
|
@ -8,12 +8,13 @@ DEFAULT_CONFIG_FILE_NAME = "config.yml"
|
|||||||
# else:
|
# else:
|
||||||
config_file_to_load = DEFAULT_CONFIG_FILE_NAME
|
config_file_to_load = DEFAULT_CONFIG_FILE_NAME
|
||||||
|
|
||||||
BASE_FODLER = os.path.dirname(os.path.abspath(__file__))
|
BASE_FOLDER = os.path.dirname(os.path.abspath(__file__))
|
||||||
|
|
||||||
path_to_config = os.path.join(BASE_FODLER, config_file_to_load)
|
path_to_config = os.path.join(BASE_FOLDER, config_file_to_load)
|
||||||
print("opening config file " + path_to_config)
|
print("opening config file " + path_to_config)
|
||||||
with open(path_to_config, "r") as ymlfile:
|
with open(path_to_config, "r") as yml_config_file:
|
||||||
cfg = yaml.load(ymlfile, Loader=yaml.FullLoader)
|
cfg = yaml.load(yml_config_file, Loader=yaml.FullLoader)
|
||||||
|
|
||||||
|
# read values from config
|
||||||
token = cfg["token"]
|
token = cfg["token"]
|
||||||
prod_mode = cfg["prod"]
|
prod_mode = cfg["prod"]
|
||||||
|
@ -1,30 +1,14 @@
|
|||||||
# TODOs:
|
|
||||||
# upload on github
|
|
||||||
# add CLI interface
|
|
||||||
# add config file
|
|
||||||
# add unit test
|
|
||||||
|
|
||||||
import json
|
import json
|
||||||
|
|
||||||
import requests
|
import requests
|
||||||
|
|
||||||
# curl --request GET --header "PRIVATE-TOKEN: <your_access_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: <your_access_token>" "https://gitlab.example.com/api/v4/projects/1/jobs?scope[]=pending&scope[]=running"
|
|
||||||
|
|
||||||
|
|
||||||
import config_parser
|
import config_parser
|
||||||
|
|
||||||
# print(response_array)
|
# as per https://docs.gitlab.com/ee/api/rest/index.html#offset-based-pagination
|
||||||
#
|
|
||||||
|
|
||||||
MAX_NUMBER_OF_ITEMS_PER_PAGE = 100
|
MAX_NUMBER_OF_ITEMS_PER_PAGE = 100
|
||||||
|
|
||||||
|
|
||||||
def write_to_file(response_array):
|
def write_to_file(response_array):
|
||||||
f = open("gitlab-jobs1.txt", "a")
|
f = open("output/gitlab-jobs1.txt", "a")
|
||||||
f.write(str(response_array))
|
f.write(str(response_array))
|
||||||
f.close()
|
f.close()
|
||||||
|
|
||||||
@ -57,7 +41,6 @@ def filter_relevant_attributes(job):
|
|||||||
|
|
||||||
def find_jobs(count, project_id, job_name):
|
def find_jobs(count, project_id, job_name):
|
||||||
number_of_items_per_page, number_of_pages = calc_number_of_pages_number(count)
|
number_of_items_per_page, number_of_pages = calc_number_of_pages_number(count)
|
||||||
# NUMBER_OF_ITEMS_PER_PAGE = 100
|
|
||||||
|
|
||||||
url_template = 'https://gitlab.atb-bremen.de/api/v4/projects/{}/jobs?per_page={}&page={}'
|
url_template = 'https://gitlab.atb-bremen.de/api/v4/projects/{}/jobs?per_page={}&page={}'
|
||||||
|
|
||||||
@ -74,12 +57,12 @@ def find_jobs(count, project_id, job_name):
|
|||||||
for i in iterations:
|
for i in iterations:
|
||||||
response = requests.request("GET", url_template.format(project_id, number_of_items_per_page, i), headers=headers)
|
response = requests.request("GET", url_template.format(project_id, number_of_items_per_page, i), headers=headers)
|
||||||
json_response = response.text
|
json_response = response.text
|
||||||
# print(response.text)
|
|
||||||
response_array.append(json.loads(json_response))
|
response_array.append(json.loads(json_response))
|
||||||
|
|
||||||
import itertools
|
import itertools
|
||||||
|
|
||||||
flat_list_of_jobs = list(itertools.chain(*response_array))
|
flat_list_of_jobs = list(itertools.chain(*response_array))
|
||||||
list_of_successfull_jobs = find_jobs_by_name_that_were_run(flat_list_of_jobs, job_name)
|
list_of_successfull_jobs = find_jobs_by_name_that_were_run(flat_list_of_jobs, job_name)
|
||||||
|
|
||||||
# filter output for relevant fields
|
# filter output for relevant fields
|
||||||
return list(map(filter_relevant_attributes, list_of_successfull_jobs))
|
return list(map(filter_relevant_attributes, list_of_successfull_jobs))
|
@ -1,6 +1,6 @@
|
|||||||
import click
|
import click
|
||||||
|
|
||||||
import gitlab_api_finder
|
import gitlab_ci_job_finder
|
||||||
|
|
||||||
|
|
||||||
@click.command()
|
@click.command()
|
||||||
@ -8,10 +8,9 @@ import gitlab_api_finder
|
|||||||
@click.option("--projectid", prompt="Id of Gitlab Project", help="Id of Gitlab Project.")
|
@click.option("--projectid", prompt="Id of Gitlab Project", help="Id of Gitlab Project.")
|
||||||
@click.option("--jobname", prompt="name of job to filter", help="Id of Gitlab Project.")
|
@click.option("--jobname", prompt="name of job to filter", help="Id of Gitlab Project.")
|
||||||
# TODO add option "to-file" for storing the resulting json on disk
|
# TODO add option "to-file" for storing the resulting json on disk
|
||||||
def hello(count, projectid, jobname):
|
def execute_gl_ci_finder(count, projectid, jobname):
|
||||||
gitlab_api_finder.find_jobs(count, projectid, jobname)
|
gitlab_ci_job_finder.find_jobs(count, projectid, jobname)
|
||||||
|
|
||||||
|
|
||||||
# example usage: python glcifinder-cli.py --count 1000 --projectid 244 --jobname deploy-test
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
hello()
|
execute_gl_ci_finder()
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
import gitlab_api_finder
|
import gitlab_ci_job_finder
|
||||||
|
|
||||||
|
|
||||||
def test():
|
def test_find_jobs():
|
||||||
count = 20
|
count = 20
|
||||||
projectid = 244
|
projectid = 244
|
||||||
jobname = "prepare"
|
jobname = "prepare"
|
||||||
result = gitlab_api_finder.find_jobs(count, projectid, jobname)
|
result = gitlab_ci_job_finder.find_jobs(count, projectid, jobname)
|
||||||
one_job = result[0]
|
one_job = result[0]
|
||||||
assert one_job['status'] == 'success'
|
assert one_job['status'] == 'success'
|
Loading…
x
Reference in New Issue
Block a user