Drone多环境部署

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"}
      }
    ]
  }

你可能感兴趣的:(Drone多环境部署)