docker-dnscache/.drone.star

121 lines
3.2 KiB
Plaintext

def main(ctx):
archs = ["amd64", "arm64"] ## arm
alpine_version = "3.19"
out = []
for arch in archs:
out += onpush(ctx, alpine_version, arch)
for arch in archs:
out += build_publish(ctx, alpine_version, arch)
out += manifest_publish(ctx, archs)
return out
def onpush(ctx, alpine_version, arch):
return [{
"kind": "pipeline",
"type": "docker",
"name": "build-onpush-%s" % (arch),
"platform": {
"arch": arch,
"os": "linux",
},
"steps": [{
"name": "build_on_push",
"image": "plugins/docker:linux-%s" % (arch),
"settings": {
"context": ".",
"dockerfile": "Dockerfile",
"dry_run": True,
"repo": "docker.asperti.com/paspo/dnscache",
"build_args": [
"ALPINE_VERSION=%s" % (alpine_version)
],
},
}],
"trigger": {
"event": ['push'],
}
}]
def build_publish(ctx, alpine_version, arch):
return [{
"kind": "pipeline",
"type": "docker",
"name": "build-publish-%s" % (arch),
"platform": {
"arch": arch,
"os": "linux",
},
"steps": [{
"name": "build_on_push",
"image": "plugins/docker:linux-%s" % (arch),
"settings": {
"context": ".",
"dockerfile": "Dockerfile",
"build_args": [
"ALPINE_VERSION=%s" % (alpine_version)
],
"username": {
"from_secret": "docker_username",
},
"password": {
"from_secret": "docker_password",
},
"registry": "docker.asperti.com",
"repo": "docker.asperti.com/paspo/dnscache",
"tags": [
"latest-%s" % (arch)
],
"auto_tag": False,
"force_tag": True,
"daemon_off": False,
},
}],
"trigger": {
"ref": [
"refs/heads/master",
"refs/tags/**",
],
},
}]
def manifest_publish(ctx, archs):
return [{
"kind": "pipeline",
"type": "docker",
"name": "manifest",
"platform": {
"arch": archs[0],
"os": "linux",
},
"steps": [{
"name": "manifest",
"image": "plugins/manifest",
"settings": {
"spec": "manifest.tmpl",
"username": {
"from_secret": "docker_username",
},
"password": {
"from_secret": "docker_password",
},
"tags": [
"latest"
],
"ignore_missing": True,
"force_tag": True,
},
}],
"trigger": {
"ref": [
"refs/heads/master",
"refs/tags/**",
],
},
"depends_on": ["build-publish-%s" % (arch) for arch in archs]
}]