jsonnet-drone/drone-images.libsonnet

64 lines
1.5 KiB
Plaintext

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',
],
},
}