@@ -105,6 +105,8 @@ const buildJob = (event: Event, version?: string) => {
105
105
let registryOrg : string
106
106
let registryUsername : string
107
107
let registryPassword : string
108
+ let signingSetupCommands = ""
109
+ let signingCommand = ""
108
110
if ( ! version ) { // This is where we'll push potentially unstable images
109
111
registry = secrets . unstableImageRegistry
110
112
registryOrg = secrets . unstableImageRegistryOrg
@@ -117,6 +119,16 @@ const buildJob = (event: Event, version?: string) => {
117
119
registryPassword = secrets . stableImageRegistryPassword
118
120
// Since it's defined, the make target will want this env var
119
121
env [ "VERSION" ] = version
122
+ env [ "BASE64_IMAGE_SIGNING_KEY" ] = secrets . base64ImageSigningKey
123
+ // This env var is documented here:
124
+ // https://docs.docker.com/engine/security/trust/trust_automation/
125
+ env [ "DOCKER_CONTENT_TRUST_REPOSITORY_PASSPHRASE" ] = secrets . imageSigningKeyPassphrase
126
+ const keyDir = "~/.docker/trust/private"
127
+ const keyFile = `${ keyDir } /${ secrets . imageSigningKeyHash } .key`
128
+ signingSetupCommands = `mkdir -p ${ keyDir } && chmod 700 ${ keyDir } && ` +
129
+ `printf $BASE64_IMAGE_SIGNING_KEY | base64 -d > ${ keyFile } && chmod 600 ${ keyFile } && ` +
130
+ `docker trust key load --name ${ registryUsername } ${ keyFile } && `
131
+ signingCommand = " && make sign"
120
132
}
121
133
if ( registry ) {
122
134
// Since it's defined, the make target will want this env var
@@ -137,17 +149,19 @@ const buildJob = (event: Event, version?: string) => {
137
149
env [ "IMAGE_REGISTRY_PASSWORD" ] = registryPassword
138
150
registriesLoginCmd = `${ registriesLoginCmd } && docker login ${ registry } -u ${ registryUsername } -p $IMAGE_REGISTRY_PASSWORD`
139
151
}
140
- const job = new JobWithSource ( "build" , dockerClientImg , event , env )
152
+ const job = new JobWithSource ( buildJobName , dockerClientImg , event , env )
141
153
job . primaryContainer . command = [ "sh" ]
142
154
job . primaryContainer . arguments = [
143
155
"-c" ,
144
156
// The sleep is a grace period after which we assume the DinD sidecar is
145
157
// probably up and running.
146
158
"sleep 20 && " +
147
159
`${ registriesLoginCmd } && ` +
160
+ signingSetupCommands +
148
161
"docker buildx create --name builder --use && " +
149
162
"docker info && " +
150
- "make push"
163
+ "make push" +
164
+ signingCommand
151
165
]
152
166
job . sidecarContainers . dind = new Container ( dindImg )
153
167
job . sidecarContainers . dind . privileged = true
0 commit comments