在上一篇如何做好一个开源项目(一),笔者已经介绍过开源项目运作和维护的一些理念了,本篇开始,笔者将着重于介绍一些开源项目维护过程中的一些细节,比如徽章、构建等等。由于最近经常出差,所以博客有中断,非常抱歉。
什么是项目徽章?
我们辛苦维护自己的开源项目,但是如何能够简要的向其他人描述一些项目的相关信息呢?文字、代码的表达方式都是有限的,篇幅过多的话,增加阅读难度又使访问者无法聚焦。这时候是时候可以祭出徽章了,我们可以通过徽章来展示项目的一些相关信息,让访问者知道这个项目的一些信息,以及项目团队一直在持续维护。
那么什么是项目徽章?项目徽章是根据项目情况生成的一些小图标,一般在Readme.md里面通过Markdown语法进行添加。这些图标一般简洁美观,而且还包含了项目相关的一些清晰易读的信息。简言之,徽章就是添加一些花里胡哨的可以带链接和项目信息的小图标,以增加开源项目的炫酷程度,添加同性交友的几率。
接下来,我们继续基于Magicodes.IE(地址:https://github.com/dotnetcore/Magicodes.IE)来进行举例说明。
GitHub徽章
![GitHub徽章](https://i-blog.csdnimg.cn/blog_migrate/91d5102bd5240d29a28ee9c8541fa921.png)
如上图所示,这是Magicodes.IE的GitHub徽章。该徽章使用 http://shields.io/ 进行添加,我们可以在该网站预览绝大部分的徽标样式,然后选择自己喜欢的(当然首先需要适用于自己的目标项目)徽标,添加到自己的项目文档中。
打开网站:http://shields.io/,我们就可以看到各种各样的徽章设置:
![shields](https://i-blog.csdnimg.cn/blog_migrate/79c1ea9272cf1a2bed15b08ebc80edea.png)
该网站支持非常多的类型的徽章,如上图所示的蓝色链接,比如Build(构建)、Code Coverage(代码覆盖)、Analysis(分析)等等类型。点击图标,就可以设置自己的参数(比如用户名和仓库名),然后生成徽章了,如下图所示:
![设置徽章](https://i-blog.csdnimg.cn/blog_migrate/2e939a311cccea70bf891aa792ff1295.png)
操作非常简单,而且还可以自定义整个徽章。
如何添加持续集成的徽章?
如下图Magicodes.IE的徽章所示,如何添加这些徽章呢?
![DevOps徽章](https://i-blog.csdnimg.cn/blog_migrate/c5abcf58f87d42c3d16a5eea4c64eb1d.png)
CI的徽章是很有必要的,一目了然的了解了项目的代码覆盖率、构建状态和单元测试状况,那么如何来装这个B呢?这个就需要看CI平台了,基本上都提供了渠道。比如Azure DevOps:
![Azure DevOps Status badge](https://i-blog.csdnimg.cn/blog_migrate/1b0d4605dc516f5bd971888b1077f612.png)
代码覆盖率、单元测试状况呢?这个就要回到刚才的Shields站点了:
![代码覆盖率徽章](https://i-blog.csdnimg.cn/blog_migrate/776a18378fd071801f7a483d98bbcc6a.png)
![单元测试徽章](https://i-blog.csdnimg.cn/blog_migrate/98e8dc80dd1866e8123a0dc184d75fca.png)
如何添加贡献者的徽章?
这就需要在https://opencollective.com/为项目注册一个账户,然后就可以添加如下图所示的徽章了:
![贡献者徽章](https://i-blog.csdnimg.cn/blog_migrate/d12cccc587e894daa14786e0faaea8bc.png)
如何添加Nuget包的徽章?
这就不得不提到BuildStats.info了。
配置起来也超级简单:
![Nuget徽章](https://i-blog.csdnimg.cn/blog_migrate/b2bfbf96e2a1a247b0fe510153a0d86c.png)
还支持构建历史的徽章。如上图所示,我们可以通过参数配置显示预发布的包的版本:
![预发布版本](https://i-blog.csdnimg.cn/blog_migrate/62cc50d1ff8a39721f0d1e93f6824981.png)
最后
徽章用得好,项目增色不少。以上内容仅为抛砖引玉,你也可以试试。