Drone是一个简单易用的CI/CD工具, 由于我这儿使用Gogs管理代码, 搭配使用, 真心舒服
但是在使用中发现一个小问题, yaml配置文件只能将代码部署到某一个环境下, 无法区分分支部署到测试或者预发环境, 研究半天文档无果, Google也无果
后面只有尝试更换配置文件类型, 使用Starlark解决了问题
star配置文件使用python语法编写配置, 支持变量, 逻辑判断
附上我的配置, 希望对有相同需求的人提供一定的帮助
def main(ctx):
param = {
"host": "127.0.0.1",
"user": "root",
"key": "mac",
"env": "test"
}
if ctx.build.branch == 'master':
param = {
"host": "127.0.0.2",
"user": "root",
"key": "mac",
"env": "pro"
}
return [
build(ctx, param)
]
def build(ctx, param):
return {
"kind": "pipeline",
"type": "docker",
"name": "build",
"steps": [
{
"name": "maven compile",
"image": "maven:3-jdk-8-slim",
"commands": [
"/usr/share/maven/bin/mvn -DskipTests=true clean package -f pom.xml -P %s -T `cat /proc/cpuinfo | grep \"processor\" | wc -l`" % param["env"]
],
"volumes": [
{"name": "m2-cache", "path": "/root/.m2"},
{"name": "settings", "path": "/usr/share/maven/conf/settings.xml"}
]
}
],
"volumes": [
{
"name": "m2-cache",
"host": {"path": "/opt/drone/maven/cache"}
},
{
"name": "settings",
"host": {"path": "/opt/drone/maven/settings.xml"}
}
]
}