drone 使用git tag触发构建
配置ref为tag
.drone.yml中配置trigger为ref
trigger:
ref:
- refs/tags/FileService
或者配置when为ref
when:
ref:
- refs/tags/FileService
注意: trigger应用于整个pipeline, when应用于step
也就是trigger会触发这条pipeline,而when决定了跑这条pipeline时会不会跳过这个step
ref是数组,可以配置多个
trigger: ref: - refs/tags/FileService - refs/tags/IdentityService
也支持通配符 refs/tags/** 表示所有的tag, refs/tags/v* 表示v开头的tag
还支持include包含 和exclude排除, 下面的代码表示包含IdentityService和File开头的tag, 除了FileService
trigger: ref: include: - refs/tags/IdentityService - refs/tags/File* exclude: - refs/tags/FileService
git 添加和推送tag
在完成代码提交和推送到远程后,对刚刚推送的提交添加tag
git tag -f FileService
git push -f origin FileService
两行命令都加-f参数,表示强制覆盖.因为同名tag只能有一个,所以更新需要覆盖之前的.第一行是为最近的提交添加一个名为FileService的tag,第二行是推送到远程仓库. 推送完成才会触发对应的pipeline
总结: 这种用tag触发对应pipeline的方式适用于单分支进行多pipeline构建,而多分支直接用branch作为trigger或when的参数更好.
注意: drone不支持同时使用tag和branch作为触发条件