diff --git a/deploy.libsonnet b/deploy.libsonnet index d25f0c9..aa55a63 100644 --- a/deploy.libsonnet +++ b/deploy.libsonnet @@ -6,107 +6,109 @@ local util = import 'lib/util.libsonnet'; local overide = function(overides, name) ({ [name]: {}} + overides)[name]; -function( - name, - root, - buildSecrets, - publicSecrets, - secretSecrets, - droneSecrets, - imageOverides = {}, -) - { - kind: 'pipeline', - type: 'docker', - name: 'deploy', - clone: { - disable: false, - depth: 0, - }, - services: [ - images.docker(overide(imageOverides, 'docker')) { - privileged: true, - volumes: [ - { - name: 'dockersock', - path: '/var/run', - }, - { - name: 'ca', + +function(config) + function( + name, + root, + buildSecrets, + publicSecrets, + secretSecrets, + droneSecrets, + imageOverides = {}, + ) + { + kind: 'pipeline', + type: 'docker', + name: 'deploy', + clone: { + disable: false, + depth: 0, + }, + services: [ + images(config).docker(overide(imageOverides, 'docker')) { + privileged: true, + volumes: [ + { + name: 'dockersock', + path: '/var/run', + }, + { + name: 'ca', + path: '/etc/docker/certs.d', + }, + ], + }, + ], + volumes: [ + { + name: 'dockersock', + temp: {}, + }, + { + name: 'ca', + host: { path: '/etc/docker/certs.d', }, - ], - }, - ], - volumes: [ - { - name: 'dockersock', - temp: {}, - }, - { - name: 'ca', - host: { - path: '/etc/docker/certs.d', }, - }, - ], - steps:[ - compose( - std.map( - function(secret) util.printEnv('env-%s' % name, secret), - buildSecrets + - publicSecrets + - secretSecrets + ], + steps:[ + compose( + std.map( + function(secret) util.printEnv('env-%s' % name, secret), + buildSecrets + + publicSecrets + + secretSecrets + ) ) - ) - ( - images.ssh(overide(imageOverides, 'ssh')) { - settings +: { - script +: [ - 'rm -f env-%s' % name, - ], + ( + images(config).ssh(overide(imageOverides, 'ssh')) { + settings +: { + script +: [ + 'rm -f env-%s' % name, + ], + }, }, + ) { + name: 'print env', }, - ) { - name: 'print env', - }, - images.scp(overide(imageOverides, 'scp'))( - '%(root)s%(name)s' % { root: root, name: name } - ), - images.wait(overide(imageOverides, 'alpine'))(15), - build(overide(imageOverides, 'docker'))(buildSecrets), - compose( - std.map( - function(secret) environment.envSet(secret), - publicSecrets + secretSecrets + buildSecrets, + images(config).scp(overide(imageOverides, 'scp'))( + '%(root)s%(name)s' % { root: root, name: name } ), - )( - images.ssh(overide(imageOverides, 'ssh')) { - name: 'deploy', - settings +: { - envs +: std.map( - environment.env, - droneSecrets, - ), - script +: - std.map( - function(secret) - 'export %(env)s=$${%(env)s}' % { - env: environment.environment(secret) - }, - secretSecrets + publicSecrets + buildSecrets + droneSecrets, - ) + - [ - 'set -e', - 'cd %(root)s%(name)s' % { root: root, name: name }, - 'sh .drone/login.sh', - 'sh .drone/pull.sh', - 'sh .drone/deploy.sh', - ] - } - }, - ), - ], - } + images(config).wait(overide(imageOverides, 'alpine'))(15), + build(config)(overide(imageOverides, 'docker'))(buildSecrets), + compose( + std.map( + function(secret) environment.envSet(secret), + publicSecrets + secretSecrets + buildSecrets, + ), + )( + images(config).ssh(overide(imageOverides, 'ssh')) { + name: 'deploy', + settings +: { + envs +: std.map( + environment.env, + droneSecrets, + ), + script +: + std.map( + function(secret) + 'export %(env)s=$${%(env)s}' % { + env: environment.environment(secret) + }, + secretSecrets + publicSecrets + buildSecrets + droneSecrets, + ) + + [ + 'set -e', + 'cd %(root)s%(name)s' % { root: root, name: name }, + 'sh .drone/login.sh', + 'sh .drone/pull.sh', + 'sh .drone/deploy.sh', + ] + } + }, + ), + ], + } diff --git a/lib/build.libsonnet b/lib/build.libsonnet index ba1658b..7d9deb4 100644 --- a/lib/build.libsonnet +++ b/lib/build.libsonnet @@ -1,22 +1,23 @@ local images = import 'images.libsonnet'; local environment = import 'node_modules/@sigyl/jsonnet-drone-environment/environment.libsonnet'; -function(overide) - function(secrets) - images.docker(overide) { - name +: 'build:', - environment +: environment.environmentSecrets(secrets), - volumes: [ - { - name: 'dockersock', - path: '/var/run', - }, - ], - commands: [ - 'set -e', - 'sh .drone/login.sh', - 'sh .drone/build.sh', - 'sh .drone/push.sh', - 'sh .drone/logout.sh', - ], - } \ No newline at end of file +function(config) + function(overide) + function(secrets) + images(config).docker(overide) { + name +: 'build:', + environment +: environment.environmentSecrets(secrets), + volumes: [ + { + name: 'dockersock', + path: '/var/run', + }, + ], + commands: [ + 'set -e', + 'sh .drone/login.sh', + 'sh .drone/build.sh', + 'sh .drone/push.sh', + 'sh .drone/logout.sh', + ], + } \ No newline at end of file diff --git a/lib/images.libsonnet b/lib/images.libsonnet index e9f561a..b9c01fb 100644 --- a/lib/images.libsonnet +++ b/lib/images.libsonnet @@ -1,11 +1,11 @@ -{ +function(config) { docker(overide): { name: 'docker', - image: 'docker:19.03.12-dind@sha256:8dded163e463f4a59bf305b3dca98e312b2cfb89a43da3872e48f95a7554c48f', + image: '%(registry)sdocker:19.03.12-dind@sha256:8dded163e463f4a59bf305b3dca98e312b2cfb89a43da3872e48f95a7554c48f' % config, } + overide, scp(overide): function(target) { name: 'scp', - image: 'appleboy/drone-scp:1.6.2@sha256:bd37a55f4b97e7742b0de7333669b96220b3cc422d366e1fa8c34059b736ab47', + image: '%(registry)sappleboy/drone-scp:1.6.2@sha256:bd37a55f4b97e7742b0de7333669b96220b3cc422d366e1fa8c34059b736ab47' % config, settings +: { command_timeout: '2m', target: target, @@ -15,7 +15,7 @@ }, } + overide, ssh(overide): { - image: 'appleboy/drone-ssh:1.6.2@sha256:b801dc2cd238c192b6e99acfa7bc3f5b9a03f312bd2feb1e10b3a7a28a1b80ea', + image: '%(registry)sappleboy/drone-ssh:1.6.2@sha256:b801dc2cd238c192b6e99acfa7bc3f5b9a03f312bd2feb1e10b3a7a28a1b80ea' % config, settings +: { envs: [ 'drone_tag', @@ -28,7 +28,7 @@ }, } + overide, wait(overide): function(delay) { - image: 'alpine:3.12.0@sha256:90baa0922fe90624b05cb5766fa5da4e337921656c2f8e2b13bd3c052a0baac1', + image: '%(registry)salpine:3.12.0@sha256:90baa0922fe90624b05cb5766fa5da4e337921656c2f8e2b13bd3c052a0baac1', name: 'wait', commands: [ 'sleep %s' % delay,