开篇
使用开源工具的好处是,可以通过阅读源代码,深入了解工具的运行原理,可以更好的使用和掌握工具,遇到问题能更好的定位。阅读源代码,往往比阅读文档更加高效,尤其在遇到复杂的问题,代码才是最好的文档。
drone是用golang开发的,golang本身入门简单,方便掌握,golang本身更强调工程实用性,golang写出的代码相对更直接,好理解。
Drone代码量不是很多,结构很清晰,如果对Drone基本流程比较熟悉的话,很容易能把源代码顺下来。
drone 代码扩展性很好,作为开发人员可以很容易的定制自己的功能,如扩展yaml pipleline的语法,扩展权限管理系统等,从而更高效率的使用drone CI。我后边会写一系列的文章来由浅入深的介绍drone源码。
本篇为基础篇将从主体核心逻辑来讲解,从代码角度过一下drone的触发和build流程,不会深入太多细节。
建议对drone本身有一定使用经验,并且阅读过我前两篇文章,再来阅读这篇文章。
正文
为了便于理解,我会结合drone 的web UI 的操作,分布讲解UI中的操作背后触发的代码逻辑,给读者更好的直观感受,更好的理解代码。本文只会涉及核心的代码逻辑流程,不会过多深入代码细节。
名词解释:
scm 源代码管理工具 如github gitlab
同步repos列表:
以gitlab为例,首先通过gilab的oauth2 a