jenkins api调用
实现逻辑:
1.判断是否有这个view,没有就创建
2.找出old view视图下所有的job
3.将old view视图下所有的job复制一份并且修改成自己想要的名字
4.将修改好的job加入到新创建的view视图当中
需要pip install requests python-jenkins模块
代码如下:
import jenkins import requests class Jenkins(object): def __init__(self, url, username, password): self.url = url self.username = username self.password = password self.server = jenkins.Jenkins(url=url, username=username, password=token) def create_new_view(self, view_name): res = self.server.view_exists(view_name) if res: print(f"{view_name}视图已存在,无法创建") else: self.server.create_view(view_name, jenkins.EMPTY_VIEW_CONFIG_XML) def copy_job(self,old_view,old_prefix,new_prefix): job_list = [] jobs = self.server.get_jobs(view_name=old_view) for i in jobs: old_job_name = i["name"] new_job_name = old_job_name.replace(old_prefix, new_prefix) is_exists = self.server.job_exists(new_job_name) if is_exists: print(f"{new_job_name}--job已存在,无法创建") else: self.server.copy_job(old_job_name, new_job_name) job_list.append(new_job_name) print(new_job_name, "创建成功") return job_list def job_add_view(self, view, job_name): data = { "name": job_name } response = requests.post(url=f"http://1.xxxx.xxxx.xxxx:8888/view/{view}/addJobToView", data=data, auth=(self.username,self.password)) if response.status_code == 200: print(f"{job_name}---添加到---{view}---视图成功") else: print(f"{job_name}---添加到---{view}---视图失败") if __name__ == '__main__': url = "http://10.xxx.xxx.xxx:8888/" token = "1134bc9b1702dfd7a2xxxxxxxxxx" username = 'admin' old_view = "TESTPLAT-测试环境-NEW" new_view = "test10" old_prefix = "jinshan-testplat-test" new_prefix = "mytest" obj = Jenkins(url=url, username=username, password=token) obj.create_new_view(view_name=new_view) jobs = obj.copy_job(old_view, old_prefix, new_prefix) for job in jobs: obj.job_add_view(view=new_view, job_name=job)