local images = import 'lib/images.libsonnet'; function(config) { kind: 'pipeline', type: 'docker', name: 'drone-images', clone: { disable: true, }, steps: [ images(config).ssh() { settings +: { script +: [ 'mkdir -p /%(root)s/.images/%(name)s/drone-images' % config, 'rm -f /%(root)s/.images/%(name)s/drone-images/*.*' % config, ], }, } { name: 'mkdir', }, ] + std.map( function(key) images(config).ssh() { settings +: { envs +: [ 'registry_domain', 'registry_port', 'registry_password', ], script +: [ 'docker pull %s' % images(config)[key]().image, 'docker save %(image)s -o /%(root)s/.images/%(name)s/drone-images/%(key)s.tar' % ( config + { image: images(config)[key]().image, key: key, } ), 'echo "docker load %(key)s.tar" >> /%(root)s/.images/%(name)s/drone-images/load.sh' % ( config + { key: key, } ) ], }, name: key, }, std.objectFields(images(config)), ) } { trigger +: { event +: [ 'promote', ], target +: [ 'drone-images', ], }, }