之前没有用过drone,现在公司有用到,看drone.yml配置文件有很多没搞清楚的地方,所以打算自己走一遍配置流程,理清一些概念,这里记下笔记。
为了方便,drone,gitea以及相关软件都是用docker的版本,用docker-compose管理。
概念介绍
在实际操作之前,有必要理清一下drone的概念,和操作流程,否则的话光看配置也是一头雾水。
什么是Drone
说白了就是一个CICD工具,当我们用git提交代码,发布版本,tag,pr等操作就会触发drone上面定义好的的一些流程,帮助我们自动完成发布和部署等一系列你想要完成的操作。下面是它支持的git仓库类型:
什么是Pipeline
Pipeline说白了就是任务组的概念,每个Pipeline包含一些子步骤(steps)。
---
kind: pipeline
type: docker
name: default
steps:
- name: backend
image: golang
commands:
- go build
- go test
- name: frontend
image: node
commands:
- npm install
- npm run test
...
比如看上面的配置文件,这个 Pipeline包含了两个steps,第一步build了golang程序,第二步install了node程序。
Pipeline分很多种类,主要是用来说明这个操作是以什么方式执行的,比如ssh 远程一些server执行命令,或者执行一些本地cmd等,下面是它支持的操作种类:
什么时候触发Pipeline
When you push code to your repository, open a pull request, or create a tag, your source control management system automatically sends a webhook to Drone which in turn triggers pipeline execution. Use the triggers section to limit pipeline execution.
在我们提交代码或者pr等操作时可以触发pipeline,因此pipeline需要配置触发条件以管理不同的流程。支持的条件种类有:
比如分支限制:
trigger:
branch:
include:
- master
- feature/*
trigger:
branch:
exclude:
- master
- feature/*
比如事件限制:
trigger:
event:
- cron
- custom
- push
- pull_request
- tag
- promote
- rollback
trigger:
event:
include:
- push
- pull_request
trigger:
event:
exclude:
- pull_request
具体介绍请看官方文档:Triggers | Drone
step也有触发条件
pipeline有触发条件,它的子步骤也可以配置触发条件
kind: pipeline
type: docker
name: default
steps:
- name: build
image: golang
commands:
- go build
- go test
when:
branch:
- master
- feature/*
如上面的配置,when属性限制了这个步骤只在master和feature/*分支上的改动才触发。
其它的触发条件有:
官方介绍:Conditions | Drone
什么是 Runner
可能是drone担心用户编排的任务消耗过多的资源,所以drone把执行任务交给了单独的runner来跑,这样一台drone server可以搭配很多runner来执行任务,类似master和slave的概念,server控制task的分发和执行状态的维护,runner跑对应的task。runner有很多种类,比如需要用docker容器跑的任务则必须先安装好docker runner才能把docker类型pipeline发给doker runner执行。
下面是runner的种类:
安装
我们这里选用gitea作为git仓库软件,官方帮助文档:Gitea | Drone
安装gitea
co