如何做好一个开源项目之徽章(二)

在上一篇【如何做好一个开源项目(一)】,笔者已经介绍过开源项目运作和维护的一些理念了,本篇开始,笔者将着重于介绍一些开源项目维护过程中的一些细节,比如徽章、构建等等。由于最近经常出差,所以博客有中断,非常抱歉。

什么是项目徽章?

我们辛苦维护自己的开源项目,但是如何能够简要的向其他人描述一些项目的相关信息呢?文字、代码的表达方式都是有限的,篇幅过多的话,增加阅读难度又使访问者无法聚焦。这时候是时候可以祭出徽章了,我们可以通过徽章来展示项目的一些相关信息,让访问者知道这个项目的一些信息,以及项目团队一直在持续维护。

那么什么是项目徽章?项目徽章是根据项目情况生成的一些小图标,一般在Readme.md里面通过Markdown语法进行添加。这些图标一般简洁美观,而且还包含了项目相关的一些清晰易读的信息。简言之,徽章就是添加一些花里胡哨的可以带链接和项目信息的小图标,以增加开源项目的炫酷程度,添加同性交友的几率。

接下来,我们继续基于Magicodes.IE来进行举例说明。

地址:

https://github.com/dotnetcore/Magicodes.IE

GitHub徽章

如上图所示,这是Magicodes.IE的GitHub徽章。该徽章使用 http://shields.io/ 进行添加,我们可以在该网站预览绝大部分的徽标样式,然后选择自己喜欢的(当然首先需要适用于自己的目标项目)徽标,添加到自己的项目文档中。

打开网站:http://shields.io/,我们就可以看到各种各样的徽章设置:

该网站支持非常多的类型的徽章,如上图所示的蓝色链接,比如Build(构建)、Code Coverage(代码覆盖)、Analysis(分析)等等类型。点击图标,就可以设置自己的参数(比如用户名和仓库名),然后生成徽章了,如下图所示:

操作非常简单,而且还可以自定义整个徽章。

如何添加持续集成的徽章?

如下图Magicodes.IE的徽章所示,如何添加这些徽章呢?

CI的徽章是很有必要的,一目了然的了解了项目的代码覆盖率、构建状态和单元测试状况,那么如何来装这个B呢?这个就需要看CI平台了,基本上都提供了渠道。比如Azure DevOps:

代码覆盖率、单元测试状况呢?这个就要回到刚才的Shields站点了:

如何添加贡献者的徽章?

这就需要在https://opencollective.com/为项目注册一个账户,然后就可以添加如下图所示的徽章了:

如何添加Nuget包的徽章?

这就不得不提到BuildStats.info了。

  1. 网址:

    https://buildstats.info/

  2. GitHub地址:

    https://github.com/dustinmoris/CI-BuildStats

配置起来也超级简单:

还支持构建历史的徽章。如上图所示,我们可以通过参数配置显示预发布的包的版本:

最后

徽章用得好,项目增色不少。以上内容仅为抛砖引玉,你也可以试试。

转载是一种动力 分享是一种美德

如果喜欢作者的文章,请关注【麦扣聊技术】订阅号以便第一时间获得最新内容。本文版权归作者和湖南心莱信息科技有限公司共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

文档官网:docs.xin-lai.com

QQ群:

编程交流群<85318032> 

产品交流群<897857351>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/307894.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

值得关注的HTML基础

值得关注的HTML基础&#x1f973;序言&#x1f60b;一、网页三大元素&#x1f61c;二、HTML简介1. 定义2. 发展历史&#x1f61d;三、HTML结构1. 引例阐述2. 特点3. HTML页面结构&#xff08;1&#xff09;DOCTYPE&#xff08;2&#xff09;html&#xff08;3&#xff09;head&…

leetcode637. 二叉树的层平均值(层序遍历04)

一:题目 二&#xff1a;上码 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right(n…

leetcode429. N 叉树的层序遍历(层序遍历05)

一:题目 二&#xff1a;上码 /* // Definition for a Node. class Node { public:int val;vector<Node*> children;Node() {}Node(int _val) {val _val;}Node(int _val, vector<Node*> _children) {val _val;children _children;} }; */class Solution { publi…

10分钟带你探索css中更为奇妙的奥秘

10分钟带你探索css中更为奇妙的奥秘&#x1f4d6;序言&#x1f4c3;一、css是啥1. CSS是什么2. 诞生背景3. 基础规则&#xff08;1&#xff09;一些基础规则&#xff08;2&#xff09;其他重要的语法&#xff08;3&#xff09;选择器&#xff08;4&#xff09;层叠与继承1&…

将微服务部署到 Azure Kubernetes 服务 (AKS) 实践

介绍本文的目的是&#xff1a;通过使用 DockerHub 和 Azure Kubernetes Service (AKS) 将之前 使用 .NET 和 Docker 构建的微服务 部署到微软 Azure 云上&#xff0c;来介绍微服务的基本部署过程。推送到 Docker HubDocker Hub 是世界上最大的容器镜像库和社区。许多产品&#…

leetcode 515. 在每个树行中找最大值(层序遍历06)

一:题目 二&#xff1a;上码 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right(n…

前端只是切图仔?来学学给开发人看的UI设计

给开发人看的UI设计&#x1f5bc;️序言&#x1f3a8; 一、背景1. 想做一个好的作品2. 没有专业UI&#x1f9f5;二、功能导向1. 设计中最重要的事2. 例子阐述2. 简约设计3. 设计简单的、完整的功能&#x1f9f6;三、设计原则1. 层级&#xff08;1&#xff09;层级是什么&#x…

Debian 新负责人发表演讲:Debian 的现状与面临的一些问题

喜欢就关注我们吧&#xff01;Debian GNU/Linux 年度主要的会议 DebConf20 已于近期举办&#xff0c;4 月份新当选的 Debian 项目负责人 Jonathan Carter 在会上发表了演讲&#xff0c;概述了 Debian 的现状与面临的一些问题。Debian 的财务稳定在 $896065 美元左右&#xff0c…

leetcode116. 填充每个节点的下一个右侧节点指针(层序遍历07)

一:题目 二:上码 /* // Definition for a Node. class Node { public:int val;Node* left;Node* right;Node* next;Node() : val(0), left(NULL), right(NULL), next(NULL) {}Node(int _val) : val(_val), left(NULL), right(NULL), next(NULL) {}Node(int _val, Node* _left,…

程序员修神之路--略懂数据库集群读写分离而已

“灵魂拷问&#xff1a;解决数据库读写瓶颈有哪些解决方案呢&#xff1f;这些方案解决了什么问题呢&#xff1f;这些方案有那些优势和劣势呢&#xff1f;一个可以抵抗高并发流量系统的背后必定有一个高性能的数据库集群&#xff0c;就像每一个成功的男人背后总有一个强势的女人…

一张网页带你了解中秋节的前世今生

一张网页带你了解中秋节的前世今生&#x1f317;序言一、&#x1f319;题材选取1. 诗词赏析2. 原型图抢先看3. 界面设计二、&#x1f31b;编码阶段1. 项目目录结构2. html设计&#xff08;1&#xff09;nav结构设计&#xff08;2&#xff09;banner结构设计&#xff08;3&#…

leetcode117. 填充每个节点的下一个右侧节点指针 II(层序遍历08)

一&#xff1a;题目 二&#xff1a;上码 /* // Definition for a Node. class Node { public:int val;Node* left;Node* right;Node* next;Node() : val(0), left(NULL), right(NULL), next(NULL) {}Node(int _val) : val(_val), left(NULL), right(NULL), next(NULL) {}Node(…

Linq 下的扩展方法太少了,您期待的 MoreLinq 来啦

一&#xff1a;背景 1. 讲故事前几天看同事在用 linq 给内存中的两个 model 做左连接&#xff0c;用过的朋友都知道&#xff0c;你一定少不了一个叫做 DefaultIfEmpty 函数&#xff0c;这玩意吧&#xff0c;本来很流畅的 from...in...join, 突然搞进来这么一个函数&#xff0c;…

紧跟月影大佬的步伐,一起来学习如何写好JS(上)

如何写好JS - 三大原则&#x1f302;序言一、☂️什么才是好的JS代码&#xff1f;二、&#x1f9f5; 写好JS的一些原则1. 各司其职&#x1f44b;&#xff08;1&#xff09;定义&#xff08;2&#xff09;例子阐述2. 组件封装&#x1f90f;&#xff08;1&#xff09;定义&#x…

leetcode104. 二叉树的最大深度(层序遍历09)

一:题目 二:上码 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}*…

.NET Core 集成JWT认证

JWT(Json web token)就不用过多的介绍了&#xff0c;在 .NET Core 开发中使用JWT进行认证也是比较常见的&#xff0c;而且接入过程也比较简单&#xff0c;随便配置配置就好了。要想使用JWT&#xff0c;仅仅只需要在项目中引用微软的一个认证组件。Install-Package Microsoft.As…

leetcode111. 二叉树的最小深度(层序遍历10)

一:题目 二&#xff1a;上码 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right(n…

拥抱.NET 5,可以从这个极速开发的Web应用框架开始

今年年初&#xff0c;微软 .NET 程序管理总监 Scott 在博客中表示&#xff0c;发布 .NET 5 的首个预览版&#xff0c;并提供SDK 和运行库下载。Scott 表示&#xff0c;.NET 5 是 .NET Framework 和 .NET Core 的未来&#xff0c;最终将成为一个统一平台&#xff0c;.NET5 将包含…

组件库实战 | 教你如何设计Web世界中的表单验证

教你如何设计Web世界中的表单验证&#x1f4ac;序言&#x1f5ef;️一、验证输入框ValidateInput1. 设计稿抢先知2. 简单的实现3. 抽象验证规则4. v-model5. 使用$attrs支持默认属性&#x1f4ad;二、验证表单ValidateForm1. 组件需求分析2. 使用插槽 slot3. 父子组件通讯&…

leetcode101. 对称二叉树(两种做法)

一&#xff1a;题目 二&#xff1a;上码 方法一&#xff1a;队列 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int …