docker-glpi/.drone.star

130 lines
3.8 KiB
Plaintext

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