def main(ctx): archs = ["amd64" ] flavours = [ "sqlite3", "mysql" ] upstream_versions = [ "6.0", "6.2", "6.4", "5.0", "4.0" ] out = [] for flavour in flavours: for ver in upstream_versions: for arch in archs: out += pipeline(flavour, arch, ver) out += manifest(flavour, ver, archs) return out def pipeline(flavour, arch, ver): out = [{ "kind": "pipeline", "type": "docker", "name": "zabbix-proxy-%s-%s-%s" % (flavour, ver, 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": [ "UPSTREAM_FLAVOUR=" + flavour, "UPSTREAM_VERSION=" + ver ], "username": { "from_secret": "docker_username", }, "password": { "from_secret": "docker_password", }, "registry": "docker.asperti.com", "repo": "docker.asperti.com/paspo/zabbix-proxy-%s-mssql" % (flavour), "tags": [ "%s-%s" % (ver, arch) ], "auto_tag": False, "force_tag": True, "daemon_off": False, }, }], "trigger": { "ref": [ "refs/heads/master", "refs/tags/**", ], } }] return out def manifest(flavour, ver, archs): commands = [ 'echo "image: docker.asperti.com/paspo/zabbix-proxy-%s-mssql:%s" >> manifest-%s.tmpl' % (flavour, ver, flavour), 'echo "manifests:" >> manifest-%s.tmpl' % (flavour), 'echo "- image: docker.asperti.com/paspo/zabbix-proxy-%s-mssql:%s-amd64" >> manifest-%s.tmpl' % (flavour, ver, flavour), 'echo " platform:" >> manifest-%s.tmpl' % (flavour), 'echo " architecture: amd64" >> manifest-%s.tmpl' % (flavour), 'echo " os: linux" >> manifest-%s.tmpl' % (flavour), 'echo "- image: docker.asperti.com/paspo/zabbix-proxy-%s-mssql:%s-arm64" >> manifest-%s.tmpl' % (flavour, ver, flavour), 'echo " platform:" >> manifest-%s.tmpl' % (flavour), 'echo " architecture: arm64" >> manifest-%s.tmpl' % (flavour), 'echo " variant: v8" >> manifest-%s.tmpl' % (flavour), 'echo " os: linux" >> manifest-%s.tmpl' % (flavour), 'echo "- image: docker.asperti.com/paspo/zabbix-proxy-%s-mssql:%s-arm" >> manifest-%s.tmpl' % (flavour, ver, flavour), 'echo " platform:" >> manifest-%s.tmpl' % (flavour), 'echo " architecture: arm" >> manifest-%s.tmpl' % (flavour), 'echo " variant: v7" >> manifest-%s.tmpl' % (flavour), 'echo " os: linux" >> manifest-%s.tmpl' % (flavour), ] return [{ "kind": "pipeline", "type": "docker", "name": "manifest-%s-%s" % (flavour, ver), "platform": { "arch": archs[0], "os": "linux", }, "steps": [{ "name": "generate", "image": "alpine", "commands": commands, },{ "name": "manifest", "image": "plugins/manifest", "settings": { "spec": "manifest-%s.tmpl" % (flavour), "username": { "from_secret": "docker_username", }, "password": { "from_secret": "docker_password", }, "tags": [ ver ], "ignore_missing": True, "force_tag": True, }, }], "trigger": { "ref": [ "refs/heads/master", "refs/tags/**", ], }, "depends_on": ["zabbix-proxy-%s-%s-%s" % (flavour, ver, arch) for arch in archs] }]