其实每日公告网站源码分享的问题并不复杂,但是又很多的朋友都不太了解每日通告app,因此呢,今天小编就来为大家分享每日公告网站源码分享的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!
一、背景
我们在使用Jenkins集成编译完成后,会主动向项目组钉钉群推送编译和打包通知,方便测试同学下载测试。但同时带来一个新的需求,项目组同学想从通知中快速了解代码变更内容。我们知道开发同学在Git提交代码的时候都有修改注释,所以思考是否能直接获取代码的修改注释显示在最终的编译完成的通知中,直观显示给项目组每个人。
二、解决方案
搜索了一遍发现Jenkins没有官方插件来解决这个问题,倒是有一个老外开源的插件可用。
落地方案:
JenkinsChangelogEnvironmentPlugin实现获取代码提交记录使用Python获取代码提交记录并推送钉钉通知
1、下载插件源码
GitClonehttps://github.com/daniel-beck/changelog-environment-plugin插件源码
2、源码简要分析
代码骨架结构如下:
└─src\n├─main\n│├─java\n││└─org\n││└─jenkinsci\n││└─plugins\n││└─changelogenvironment\n││ChangelogEnvironmentContributor.java插件的概要描述,可以在插件列表中看到\n││\n│└─org\n│└─jenkinsci\n│└─plugins\n│└─changelogenvironment\n││Messages.propertiesGUI配置文件\n││\n│└─ChangelogEnvironmentContributor\n│config.jelly配置文件\n│help-dateFormat.html同上\n│help-entryFormat.html同上\n│help-lineFormat.html同上\n│\n└─test\n└─java\n└─org\n└─jenkinsci\n└─plugins\n└─changelogenvironment\nChangelogEnvironmentContributorTest.java39;true&34;Failedtoinsertchangelogintotheenvironment:Illegaldateformat&34;Failedtoinsertchangelogintotheenvironment:&34;&34;SCM_CHANGELOG&34;&34;add&34;README.md&34;danielbeck&34;879e6fa97d79fd&34;Initialcommit&34;&34;&34;SCM_CHANGELOG&39;true&34;jelly:core&34;jelly:stapler&34;jelly:define&34;/lib/layout&34;/lib/hudson&34;/lib/form&34;${%EntryFormat}&34;entryFormat&34;${%FileItemFormat}&34;lineFormat&34;${%DateFormat}&34;dateFormat&34;SCM_CHANGELOG&coding=utf-8\n\n&39;&39;&39;\nimportos,jenkins,configparser,requests,json,time\nfromdingtalkchatbot.chatbotimportDingtalkChatbot\nfromjsonpathimportjsonpath\n\n34;JOB_NAME&34;BUILD_URL&34;console&34;BUILD_VERSION&34;JENKINS_HOME&34;BUILD_NUMBER&34;SCM_CHANGELOG&34;WORKSPACE&34;\\workspace\\Version.ini&读取版本号\nconfig=configparser.ConfigParser()\nconfig.read(versionPath)\nxxx_Major=config.get(&34;,&34;)\nxxx_Minor=config.get(&34;,&34;)\nxxx_Build=config.get(&34;,&34;)\nxxx_Revision=config.get(&34;,&34;)\nVERSION=xxx_Major+&34;+xxx_Minor+&34;+xxx_Build+&34;+xxx_Revision\n\n39;None&39;-Nochanges&34;empty&34;notempty&39;xxx编译通知&连接jenkins\nserver1=jenkins.Jenkins(url=&34;,username=&39;,password=&34;)\nbuild_info=server1.get_build_info(JOB_NAME,int(BUILD_NUMBER))\n把json字符串转json对象\nbuild_info_jsonobj=json.loads(build_info_json)\n39;$.actions..shortDescription&39;&39;-Build39;+BUILD_NUMBER+&39;+\\\n&<fontcolor=34;黑体&39;+BUILD_STATUS+&39;+\\\n&**版本类型**:&39;开发版&39;\\n&39;39;+VERSION+&39;+\\\n&**触发类型**:&39;\\n&39;39;+BUILD_URL+&39;+\\\n&**关注人**:@186xxxx2487\\n&39;39;+\\\nSCM_CHANGELOG+&39;+\\\n&39;\n\ntextSuccess=&39;+JOB_NAME+&&39;\\n&39;39;+BUILD_STATUS+&39;+\\\n&**版本类型**:&39;开发版&39;\\n&39;39;+VERSION+&39;+\\\n&**触发类型**:&39;\\n&39;39;+BUILD_URL+&39;+\\\n&**更新记录**:\\n&39;\\n&39;>xxx技术团队\\n&39;SUCCESS&39;186xxxx2487&39;https://oapi.dingtalk.com/robot/send?access_token=xxxxx&初始化机器人小丁\nxiaoding=DingtalkChatbot(Dingtalk_access_token)\n34;__main__”:\nbuildNotification()
最终几种通知的效果如下:
三、小结
本文带着大家从Jenkins插件源码到应用走了一遍,可能有些地方描述还不是很具体,不过针对大部分的Jenkins插件,这个套路是类似的,希望大家能有所启发。
本文源码:
https://github.com/zuozewei/blog-example/tree/master/Jenkins-ci/jenkins-changeLog-dingtalk-notifications
每日公告网站源码分享和每日通告app的问题分享结束啦,以上的文章解决了您的问题吗?欢迎您下次再来哦!
