5.7 KiB
对应的脚本文件 ↑
新建飞书群,再添加机器人之后:
复制一下webhook地址;
其中,运行的python环境,需要用到介个库:urllib3
安装方式,参考:
!关于ModuleNotFoundError No module named 'urllib3'解决
其他需要用到的库;
获得当前脚本,所在的绝对路径,是一个字符数组;
这是跳转的接口,获取字符数组的第0个数据即可;
这是前面复制的webhook链接;
通知说明,使用json的结构填充即可;
这就是发送的代码了,把前面的json文本结构,发送到对应的飞书机器人,所在群聊;
补充说明,在json结构里,这是@对应的用户id;
具体获取用户id的方法,参考这个即可:
这是发送后的结果;
当然,也是可以有传参的;
其中,sys.argv是通过指令,运行python脚本的传参,也是从0开始的,不过第0个,一般是脚本名称本身;
这是对应的传参,当然这个只是Jenkins的写法;
在cmd或者命令行的写法,这样即可;
然后,就是对应的svn相关命令行了,其中,这里的 > 指的是,生成到某个位置的文件,然后 . 就是当前位置,这里的语法,就是把其中的一些svn指令,执行之后的日志,打印保存到,对应的文本;
为了不产生,多余的文件,后面筛选完问题之后,会把对应的txt文件删除;
这里有设置一个字符字典,匹配对应的方法体;
这是调用字符字典函数的方法;
现在暂时不用其他两个,注释就好;
目前暂时只用到,双向发送,其中的步骤,是:svn还原→svn更新→git拉取;
然后,是把当前svn的状态,也保存到对应的文件夹;
保存之后,readLines() 接口,读取配置文件,每一行文本; 这里的strip()接口,是去掉多余的头尾空格等符号; 这里的逻辑,是记录svn删除的文件,把它合并到一个字符串里;
strip()的相关说明 ↑
然后,再创建一个队列,在遍历log的时候,把名字放到队列里面; 这个队列,是用来处理特殊情况的;
svn重命名一个文件,逻辑上,属于是,删除一个文件,然后再新增一个文件;
是专门写了一个,ReName()的方法,来处理这种情况的; 其中,是有一个传参,这里,如果是文本类的传参,要加一个f的前缀;
如果在文本行里,找到"rename"字段,逻辑就进来,然后再判断一下; 这里需要注意的是,是需要添加strip()去掉首尾空格相关的;
如果条件满足,对应的布尔就会设置为true,也会调用一下,Rename()方法,通知会发给对应的飞书机器人;
后面的逻辑,如果isRename为True,就直接return不走下去了,也就不会跑到提交的逻辑;
这里的逻辑是,判断的是,如果git拉取,已经是最新版本,也是直接break就好;
需要注意的是,这里有定义一个布尔,是用来判断,是否为正常状态的,如果非正常状态,后面会直接return不跑下去;
前面gitNormal如果为false,就会调用这个方法,是用来发送通知,修改相同文件的;
然后,就是打开svn状态的文件了,也是读取每一行了;
这是配合白名单列表进行处理,如果文件名是属于后面生成的配置文件,是不进行版本管理操作的;
如果是在git里删除的,这时在svn的版本管理的表现,会是!前缀,通过svn相关指令,将这个文件添加到svn删除的版本管理即可;
如果是在git新增,也就是svn是没有加入到版本管理的,也是调用相关的svn指令,完成新增即可,不过这里有一个判断;
其中调用的函数,指的是,这个文件在svn已经删除的了,但是在git有修改,这时也会是,对于svn而言,是无版本控制的;
一旦出现这个情况,也是直接return就好;
删除多余的配置文件;
然后,提交svn和git即可;