dockamole/.drone.star

102 lines
2.8 KiB
Python

# Build pipelines
def main(ctx):
pipelines = []
# Add docker push pipelines
pipelines += push_to_docker(ctx, "client")
pipelines += push_to_docker(ctx, "server")
return pipelines
# Builds a pipeline to push to docker
def push_to_docker(ctx, context):
return [{
"kind": "pipeline",
"name": "push to docker ({})".format(context),
# Add tests dependency
"depends_on": [],
"trigger": {
"event": ["push", "tag"],
"ref": [
"refs/heads/master",
"refs/tags/v*",
],
},
"steps": [
push_docker_step(context, "linux-amd64", "x86_64", "library"),
push_docker_step(context, "linux-arm", "arm", "arm32v6"),
push_docker_step(context, "linux-arm64", "aarch64", "arm64v8"),
{
"name": "publish manifest",
"image": "plugins/manifest",
"settings": {
"spec": "{}/manifest.tmpl".format(context),
"auto_tag": True,
"ignore_missing": True,
"username": {
"from_secret": "docker_username",
},
"password": {
"from_secret": "docker_password",
},
}
},
notify_step(),
],
}]
# Build and push docker image
def push_docker_step(context, tag_suffix, arch="amd64", repo="library"):
return {
"name": "push {} {}".format(context, tag_suffix),
"image": "plugins/docker",
"settings": {
"repo": "iamthefij/dockamole-{}".format(context),
"context": context,
"dockerfile": "{}/Dockerfile".format(context),
"auto_tag": True,
"auto_tag_suffix": tag_suffix,
"username": {
"from_secret": "docker_username",
},
"password": {
"from_secret": "docker_password",
},
"build_args": [
"ARCH={}".format(arch),
"REPO={}".format(repo),
],
},
}
# Builds a notify step that will notify when the previous step changes
def notify_step():
return {
"name": "notify",
"image": "drillster/drone-email",
"settings": {
"host": {
"from_secret": "SMTP_HOST",
},
"username": {
"from_secret": "SMTP_USER",
},
"password": {
"from_secret": "SMTP_PASS",
},
"from": "drone@iamthefij.com",
},
"when": {
"status": [
"changed",
"failure",
],
},
}
# vim: ft=python