Python实现扫描作业配置自动化,,持续集成平台接入扫描


持续集成平台接入扫描作业是一项繁琐而又需要细致的工作,于是趁着闲暇时间,将代码扫描作业用Python代码实现了配置自动化。

每次配置作业的过程中,都会在checkcode1或者checkcode3上 E:\jenkins\workspace\CHECKSTYLE目录下建立一个对应的文件夹,将build.xml文件放进去,然后将规范扫描安全脚本中作业名称进行3次替换。这个过程常常被弄错,或者被遗忘。

但是,有了下面的脚本,一切都不是问题。

先看流程图:

技术分享

Python代码如下:

技术分享
 1 #!usr/bin/python 2 # -*- coding:utf-8 -*-  3 # Filename:auto.py 4  5 import os 6  7 print(‘请输入作业名称(默认“_CODE”结尾,无须再输入_CODE):‘) 8 input_user=input() 9 print(‘确认么?(y/n)‘)10 commit = input()11  12 while  0==len(input_user) or (commit!=‘y‘ and commit!=‘Y‘):13     print(‘请输入作业名称(默认“_CODE”结尾,无须再输入_CODE):‘)14     input_user=input()15     print(‘确认么?(y/n)‘)16     commit = input()17 #打桩,输出作业名字    18 print(‘你输入的作业名是:%s‘%(input_user))19 20 #准备好相应的资源21 jobName=input_user+‘_CODE‘22 jobName_upper=jobName.upper()23 jobName_lower=jobName.lower()24 25 #如果文件目录不存在,就创建文件目录26 dest_dir=‘E:‘+os.sep+‘jenkins‘+os.sep+‘workspace‘+os.sep+‘CHECKSTYLE‘+os.sep+input_user.lower()27 if not os.path.exists(dest_dir):28     os.makedirs(dest_dir)29     print(‘成功创建目录%s‘%(dest_dir))30 else:31     print(‘目录%s已存在,可直接操作‘%(dest_dir))32     33 #拼接字符串。注:实际中拼接字符串比这复杂,这里简化只是为了演示方便。34 str_1=‘<xml>\n‘35 str_2=‘\t<djfldfl>‘+jobName_upper+‘</djfldfl>\n‘36 str_3=‘\t<ad>dlfkl</ad>\n‘37 str_4=‘</xml>\n‘38 list=[str_1,str_2,str_3,str_4]39 40 #写入到文件中41 f = open(dest_dir+os.sep+‘build.xml‘, ‘w‘)42 f.writelines(list)43 print(‘写入build.xml完毕‘)44 f.close()
Python代码

将以上的文件保存在C:\zzPythonTest目录下,文件名为“auto.py”。

有了以上的步骤,还是不够方便嘛,还要进入控制台进行Python程序的解释运行,这完全可以用批处理来代替。

批处理文件内容如下:

技术分享
@echo offcd C:\zzPythonTestpython auto.pypause
批处理文件

之后每次只需要点击auto.bat文件就可以达到效果啦~

技术分享

查看E盘,果然建立了E:\jenkins\workspace\CHECKSTYLE目录:

技术分享

打开build.xml文件,果然达到了预期的效果:

技术分享

总结:

对容错的判定算法调整了很久才调到这个比较合理的结构。确认是非常必要的一步,因为“智者千虑,必有一失”。创建多级目录时,本来采用的是循环创建目录的方式,后来查询到了一个简洁而强大的API,就是makedirs()。此功能用java也能实现,但是用Python的好处在于简洁有力。假如用java实现这样一个功能,java代码量几乎是Python的两倍还多。此功能只利用了Python中最基础的知识,甚至都没有使用类和对象。这是因为Python在这里处理的仅仅是流程,故不用OO的写法(其实还夹杂着笔者对C语言的怀念,毕竟C语言是笔者接触的第一门计算机语言)。

Python实现扫描作业配置自动化

相关内容

    暂无相关文章

评论关闭