用Python+AD域+GitLab 给Jenkins构建失败的项目负责人发送短信通知

流程 公司之前Jenkins的构建结果通知用的是微信公众号推送,但领导觉得短信更靠谱,想要改用短信通知.咱也不敢犟哪个更好,只是默默实现了这些需求. 所幸给公司搞得基建还算是比较全面,让每个员工都接入Windows AD域控,因此也就是说通过AD域接口,可以获取到员工的信息;而 Jenksin 和 GitLab 同样接入了AD域,因此思路流程是这样的: 实现 人生苦短,脚本的事情还是用 Python 分分钟实现. 用了第三方模块python-ldap,python-gitlab,python-jenkins,并且 SMS 的发送由阿里云提供,因此还用到了aliyun-python-sdk-core-v3. 如果 Jobs 用的是 Pipeline 或 Jenkinsfile ,则可以直接在构建流程中判断之前是否失败,但通常很多项目需要使用自由模式,那么就需要对每个阶段进行自定义的判断,这都是比较容易实现的. 根据当前 Job 获取 Git 仓库地址: import jenkins def get_git_by_job(jenkins_server:jenkins.Jenkins, job_name:str)->dict: config = jenkins_server.get_job_config(job_name) … “用Python+AD域+GitLab 给Jenkins构建失败的项目负责人发送短信通知”

Read More

使用Python脚本一次性并发拉取Gitlab中所有的仓库

使用Git图形化管理工具SourceTree好多年,去年起SourceTree越更新越辣鸡,简直不能用,转而投了Fork的怀抱,但是两者都没有批量拉取的功能. 然而负责的项目越来越多,而单个拉取仓库更新代码无异是痛苦的. 于是花了点功夫看了下官方的API文档,写了个用Python批量拉取所有仓库的脚本,使用了一个第三方的 Python 模块: python-gitlab. 功能很简单,就是根据账号权限并发拉取所有能拉取的仓库,如果当前目录下不存在就创建;如果已存在仓库,则更新. import platform,os,gitlab,sys,multiprocessing def returnpath(path:str)->str: if ‘Windows’ == platform.system(): path = path.replace(‘/’,’\\’) return path def get_gitlab_groups_projs_path(gl_server:gitlab.Gitlab)->list: projs = [] projs_id = [] projs_tmp = [] def __add(group): for proj … “使用Python脚本一次性并发拉取Gitlab中所有的仓库”

Read More

用Python通过Jenkins View视图批量构建Jobs

这里用到了Jenkins的Python Module,所以先安装模块pip install python-jenkins。 废话少说。 # coding:utf-8 import jenkins def build_job_by_view(jenkins_server:jenkins.Jenkins,view_name:str): jobs = jenkins_server.get_jobs(view_name=view_name) for job in jobs: job_info = jenkins_server.get_job_info(name=job.get(‘name’)) if ‘com.cloudbees.hudson.plugins.folder.Folder’ == job_info.get(‘_class’): folder_jobs = job_info.get(‘jobs’) for folder_job in folder_jobs: full_jobname = job_info.get(‘fullName’) … “用Python通过Jenkins View视图批量构建Jobs”

Read More

树莓派用dnspod的DDNS自动更新公网宽带IP

前不久手痒花二百多大洋入了Raspberry 2B,折腾了几天,突然发现dnspod有更新记录的API,家里的宽带分配的IP又刚好是公网IP,这下可玩性更高了.比如自动将宽带的IP绑定到域名上,通过路由器的端口映射,可以直接访问到家里的所有接入设备,还可以开放一些服务,比如代理/Web服务等. 废话少说. 首先你要有个域名,嗯,巧的是前不久也刚好买了个域名,在Namesilo上买的,新用户首年只要6.9刀,相当于人民币不到五十块,还送隐私保护,这太值了. 然后可以将域名的解析转到其他专业的DNS服务商处,Namesilo虽然也有提供解析,但真心太弱了.我这用的是Dnspod的免费套餐,虽然免费,但其功能依旧强大.接着取一个三级域名名称,记录类型为A类型,值先随便填个IP,TTL设置为10分钟. 到这里就要获取domain_id和record_id了: #获取domain_id,将以下的xxx改为对应的邮箱和密码 curl curl -k https://dnsapi.cn/Domain.List -d “login_email=xxx&login_password=xxx” #获取record_id前,要获取domain_id,将以下的xxx改为对应值即可 curl -k https://dnsapi.cn/Record.List -d “login_email=xxx&login_password=xxx&domain_id=xxx” 然后就可以用以下填入以下代码: # coding:utf-8 import httplib, urllib import socket import time params = dict( login_email=”xxx”, # 邮箱 … “树莓派用dnspod的DDNS自动更新公网宽带IP”

Read More