From dca47ea05016d374dcdc8151373889788b3b91e2 Mon Sep 17 00:00:00 2001 From: Giles Bradshaw Date: Fri, 28 Aug 2020 12:22:28 +0100 Subject: [PATCH] feat: make images overideable BREAKING CHANGE: --- deploy.libsonnet | 19 +++++++++++-------- lib/build.libsonnet | 37 +++++++++++++++++++------------------ lib/images.libsonnet | 24 ++++++++++++------------ lib/settings.libsonnet | 9 +++++---- 4 files changed, 47 insertions(+), 42 deletions(-) diff --git a/deploy.libsonnet b/deploy.libsonnet index 6942c51..d25f0c9 100644 --- a/deploy.libsonnet +++ b/deploy.libsonnet @@ -4,13 +4,16 @@ local environment = import 'lib/node_modules/@sigyl/jsonnet-drone-environment/en local compose = import 'lib/node_modules/@sigyl/jsonnet-compose/compose.libsonnet'; local util = import 'lib/util.libsonnet'; +local overide = function(overides, name) + ({ [name]: {}} + overides)[name]; function( name, root, buildSecrets, publicSecrets, secretSecrets, - droneSecrets + droneSecrets, + imageOverides = {}, ) { kind: 'pipeline', @@ -21,7 +24,7 @@ function( depth: 0, }, services: [ - images.docker { + images.docker(overide(imageOverides, 'docker')) { privileged: true, volumes: [ { @@ -57,9 +60,9 @@ function( ) ) ( - images.ssh { + images.ssh(overide(imageOverides, 'ssh')) { settings +: { - script: [ + script +: [ 'rm -f env-%s' % name, ], }, @@ -67,18 +70,18 @@ function( ) { name: 'print env', }, - images.scp( + images.scp(overide(imageOverides, 'scp'))( '%(root)s%(name)s' % { root: root, name: name } ), - images.wait(15), - build(buildSecrets), + images.wait(overide(imageOverides, 'alpine'))(15), + build(overide(imageOverides, 'docker'))(buildSecrets), compose( std.map( function(secret) environment.envSet(secret), publicSecrets + secretSecrets + buildSecrets, ), )( - images.ssh { + images.ssh(overide(imageOverides, 'ssh')) { name: 'deploy', settings +: { envs +: std.map( diff --git a/lib/build.libsonnet b/lib/build.libsonnet index da3c13e..ba1658b 100644 --- a/lib/build.libsonnet +++ b/lib/build.libsonnet @@ -1,21 +1,22 @@ local images = import 'images.libsonnet'; local environment = import 'node_modules/@sigyl/jsonnet-drone-environment/environment.libsonnet'; -function(secrets) - images.docker { - 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(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 diff --git a/lib/images.libsonnet b/lib/images.libsonnet index b67fc35..960ddef 100644 --- a/lib/images.libsonnet +++ b/lib/images.libsonnet @@ -1,12 +1,12 @@ local settings = import 'settings.libsonnet'; { - docker: { + docker(overide): { name: 'docker', - image: 'docker:dind', - }, - scp(target): settings.ssh { + image: 'docker:19.03.12-dind@sha256:8dded163e463f4a59bf305b3dca98e312b2cfb89a43da3872e48f95a7554c48f', + } + overide, + scp(overide): function(target) settings.ssh { name: 'scp', - image: 'appleboy/drone-scp:1.6.2', + image: 'appleboy/drone-scp:1.6.2@sha256:bd37a55f4b97e7742b0de7333669b96220b3cc422d366e1fa8c34059b736ab47', settings +: { command_timeout: '2m', target: target, @@ -14,9 +14,9 @@ local settings = import 'settings.libsonnet'; '.', ], }, - }, - ssh: settings.ssh { - image: 'appleboy/drone-ssh:1.6.2', + } + overide, + ssh(overide): settings.ssh { + image: 'appleboy/drone-ssh:1.6.2@sha256:b801dc2cd238c192b6e99acfa7bc3f5b9a03f312bd2feb1e10b3a7a28a1b80ea', settings +: { envs: [ 'drone_tag', @@ -27,12 +27,12 @@ local settings = import 'settings.libsonnet'; ], script: [], }, - }, - wait(delay): { - image: 'alpine', + } + overide, + wait(overide): function(delay) { + image: 'alpine:3.12.0@sha256:90baa0922fe90624b05cb5766fa5da4e337921656c2f8e2b13bd3c052a0baac1', name: 'wait', commands: [ 'sleep %s' % delay, ], - } + } + overide } \ No newline at end of file diff --git a/lib/settings.libsonnet b/lib/settings.libsonnet index 945a613..7fe488b 100644 --- a/lib/settings.libsonnet +++ b/lib/settings.libsonnet @@ -2,10 +2,11 @@ local environment = import 'node_modules/@sigyl/jsonnet-drone-environment/enviro { ssh: { settings +: { - host: environment.fromSecret('ssh-host'), - port: environment.fromSecret('ssh-port'), - username: environment.fromSecret('ssh-user'), - key: environment.fromSecret('ssh-key'), + host: '${SSH_HOST}', + username: '${SSH_USER}', + key: '${SSH_KEY}', + port: '${SSH_PORT}', + passphrase: '${SSH_PASSPHRASE}', }, }, } \ No newline at end of file