Skip to content

Commit d70bbe3

Browse files
author
Lukas Gentele
authored
Merge pull request #196 from covexo/issue-169
resolve #169 and remove freebsd from release builds
2 parents 25b6eb9 + c7b4bf4 commit d70bbe3

8 files changed

Lines changed: 263 additions & 121 deletions

File tree

.travis.yml

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -31,26 +31,26 @@ jobs:
3131
deploy:
3232
- provider: releases
3333
file:
34-
- release/devspace-linux-amd64
35-
- release/devspace-linux-amd64.sha256
36-
- release/devspace-darwin-amd64
37-
- release/devspace-darwin-amd64.sha256
38-
- release/devspace-freebsd-amd64
39-
- release/devspace-freebsd-amd64.sha256
4034
- release/devspace-windows-amd64.exe
4135
- release/devspace-windows-amd64.exe.sha256
42-
- release/devspace-linux-386
43-
- release/devspace-linux-386.sha256
44-
- release/devspace-darwin-386
45-
- release/devspace-darwin-386.sha256
46-
- release/devspace-freebsd-386
47-
- release/devspace-freebsd-386.sha256
4836
- release/devspace-windows-386.exe
4937
- release/devspace-windows-386.exe.sha256
38+
- release/devspace-darwin-amd64
39+
- release/devspace-darwin-amd64.sha256
40+
- release/devspace-darwin-386
41+
- release/devspace-darwin-386.sha256
42+
- release/devspace-linux-amd64
43+
- release/devspace-linux-amd64.sha256
44+
- release/devspace-linux-386
45+
- release/devspace-linux-386.sha256
5046
- release/devspace-linux-ppc64
5147
- release/devspace-linux-ppc64.sha256
5248
- release/devspace-linux-ppc64le
5349
- release/devspace-linux-ppc64le.sha256
50+
# - release/devspace-freebsd-amd64
51+
# - release/devspace-freebsd-amd64.sha256
52+
# - release/devspace-freebsd-386
53+
# - release/devspace-freebsd-386.sha256
5454
skip_cleanup: true
5555
api_key:
5656
secure: "KGCqYQmeEirDMoghu88D4hzUaG6ypBIFlY+QBtqlvyIbjbkyoOJ2cYJlcGG3SVssnXHgNQFGa8OZJosjVysNQorYY2P4ckF/V0GM+u0mSAeRcSSrorMOL6c8UQEY5695st2VqZBFtlpW7mNo75pU6Xgkcqhxb4/j/aj0I/+vhHbakFAQXcC6iMsuKQqRkXsh7g/G5/xgc2oxxK7dcfbJqC4QeUddKX0bZdLyml4yVrrI9XR/7bS1h+Q5S6ZyJ2EO3HRE7h6hAuGU21R4lrzRpDJh7Kopg4Fo6zqrU8lF3/Gw+RtmkWGoo6tXn+r6+HBu8xSbkw0NhGdL2iKraE2pOkRDlYZsR1XTNM5WKRMx+cZGY0OJT+Q04/5hs8uIuGwEATOZ2IAj2AWMba750Hx5h18dyLijpvSjNPtPo+ki0MYbMyYuZtlQDqvBfOclLfKoScsHz9ffGf0oz7p9/Z0riLIaMLmQXY5Zq3OSXATnXBAfgwtOppgR1foUKYb0P92uPePYIsmZN+p2HZDgS1nP2++Mg33BCLf+HUVhyekGc+wLbcEZTz49FCPjDRhGZz7FGe1ovvnYmtr00gaUcR6pq2nJGackkTOeuggu5ahmcc6xtFBxRT/JHi+LCeoqESsi6mvF7QEK4Widpn+sFwbAZlhGUVzhYnwfDNM9RK1pF+Q="

cmd/up.go

Lines changed: 85 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@ import (
88
"strings"
99
"time"
1010

11+
"github.com/covexo/devspace/pkg/util/yamlutil"
12+
13+
"github.com/covexo/devspace/pkg/devspace/builder"
14+
1115
"github.com/docker/docker/api/types"
1216

1317
"github.com/covexo/devspace/pkg/devspace/builder/docker"
@@ -214,12 +218,21 @@ func (cmd *UpCmd) initRegistries() {
214218
}
215219

216220
for registryName, registryConf := range registryMap {
217-
log.StartWait("Creating image pull secret for registry: " + registryName)
218-
err := registry.CreatePullSecret(cmd.kubectl, *config.DevSpace.Release.Namespace, registryConf)
219-
log.StopWait()
221+
if registryConf.Auth != nil && registryConf.Auth.Password != nil {
222+
username := ""
223+
password := *registryConf.Auth.Password
224+
email := "noreply@devspace-cloud.com"
220225

221-
if err != nil {
222-
log.Fatalf("Failed to create pull secret for registry: %v", err)
226+
if registryConf.Auth.Username != nil {
227+
username = *registryConf.Auth.Username
228+
}
229+
log.StartWait("Creating image pull secret for registry: " + registryName)
230+
err := registry.CreatePullSecret(cmd.kubectl, *config.DevSpace.Release.Namespace, *registryConf.URL, username, password, email)
231+
log.StopWait()
232+
233+
if err != nil {
234+
log.Fatalf("Failed to create pull secret for registry: %v", err)
235+
}
223236
}
224237
}
225238
}
@@ -285,66 +298,74 @@ func (cmd *UpCmd) buildImages(buildFlagChanged bool) bool {
285298
log.Fatal(registryErr)
286299
}
287300
var buildErr error
301+
var imageBuilder builder.Interface
288302

289303
buildInfo := "Building image '%s' with engine '%s'"
290304

291-
if imageConf.Build.Engine.Kaniko != nil {
292-
log.Infof(buildInfo, imageName, "kaniko")
305+
registryURL := *registryConf.URL
293306

294-
imageDestination := registry.GetImageURL(imageConf, false) + ":" + imageTag
307+
if registryURL == "hub.docker.com" {
308+
registryURL = ""
309+
}
310+
engineName := ""
295311

296-
buildErr = kaniko.BuildDockerfile(cmd.kubectl, *config.DevSpace.Release.Namespace, imageDestination, registry.PullSecretName, *registryConf.Insecure)
297-
} else {
298-
log.Infof(buildInfo, imageName, "docker")
312+
if imageConf.Build.Engine.Kaniko != nil {
313+
engineName = "kaniko"
314+
buildNamespace := *config.DevSpace.Release.Namespace
315+
allowInsecurePush := false
299316

300-
var dockerBuilder *docker.Builder
317+
if imageConf.Build.Engine.Kaniko.Namespace != nil {
318+
buildNamespace = *imageConf.Build.Engine.Kaniko.Namespace
319+
}
301320

321+
if registryConf.Insecure != nil {
322+
allowInsecurePush = *registryConf.Insecure
323+
}
324+
imageBuilder, buildErr = kaniko.NewBuilder(registryURL, *imageConf.Name, imageTag, buildNamespace, cmd.kubectl, allowInsecurePush)
325+
} else {
326+
engineName = "docker"
302327
preferMinikube := true
303328

304329
if imageConf.Build.Engine.Docker.PreferMinikube != nil {
305330
preferMinikube = *imageConf.Build.Engine.Docker.PreferMinikube
306331
}
307-
registryURL := *registryConf.URL
332+
imageBuilder, buildErr = docker.NewBuilder(registryURL, *imageConf.Name, imageTag, preferMinikube)
333+
}
334+
log.Infof(buildInfo, imageName, engineName)
335+
336+
if buildErr == nil {
337+
username := ""
338+
password := ""
308339

309-
if registryURL == "hub.docker.com" {
310-
registryURL = ""
340+
if registryConf.Auth != nil {
341+
if registryConf.Auth.Username != nil {
342+
username = *registryConf.Auth.Username
343+
}
344+
345+
if registryConf.Auth.Password != nil {
346+
password = *registryConf.Auth.Password
347+
}
311348
}
312-
dockerBuilder, buildErr = docker.NewBuilder(registryURL, *imageConf.Name, imageTag, preferMinikube)
349+
log.StartWait("Authenticating (" + *registryConf.URL + ")")
350+
_, buildErr = imageBuilder.Authenticate(username, password, len(username) == 0)
351+
log.StopWait()
313352

314353
if buildErr == nil {
315-
username := ""
316-
password := ""
317-
318-
if registryConf.Auth != nil {
319-
if registryConf.Auth.Username != nil {
320-
username = *registryConf.Auth.Username
321-
}
354+
log.Done("Authentication successful (" + *registryConf.URL + ")")
355+
buildOptions := &types.ImageBuildOptions{}
322356

323-
if registryConf.Auth.Password != nil {
324-
password = *registryConf.Auth.Password
357+
if imageConf.Build.Options != nil {
358+
if imageConf.Build.Options.BuildArgs != nil {
359+
buildOptions.BuildArgs = *imageConf.Build.Options.BuildArgs
325360
}
326361
}
327-
log.StartWait("Authenticating (" + *registryConf.URL + ")")
328-
buildErr = dockerBuilder.Authenticate(username, password, len(username) == 0)
329-
log.StopWait()
362+
buildErr = imageBuilder.BuildImage(contextPath, dockerfilePath, buildOptions)
330363

331364
if buildErr == nil {
332-
log.Done("Authentication successful (" + *registryConf.URL + ")")
333-
buildOptions := &types.ImageBuildOptions{}
334-
335-
if imageConf.Build.Engine.Docker.Options != nil {
336-
if imageConf.Build.Engine.Docker.Options.BuildArgs != nil {
337-
buildOptions.BuildArgs = *imageConf.Build.Engine.Docker.Options.BuildArgs
338-
}
339-
}
340-
buildErr = dockerBuilder.BuildImage(contextPath, dockerfilePath, buildOptions)
365+
buildErr = imageBuilder.PushImage()
341366

342367
if buildErr == nil {
343-
buildErr = dockerBuilder.PushImage()
344-
345-
if buildErr == nil {
346-
log.Info("Image pushed to registry (" + *registryConf.URL + ")")
347-
}
368+
log.Info("Image pushed to registry (" + *registryConf.URL + ")")
348369
}
349370
}
350371
}
@@ -394,6 +415,10 @@ func (cmd *UpCmd) deployChart() {
394415
chartPath := "chart/"
395416

396417
values := map[interface{}]interface{}{}
418+
overwriteValues := map[interface{}]interface{}{}
419+
420+
yamlutil.ReadYamlFromFile(chartPath, values)
421+
397422
containerValues := map[string]interface{}{}
398423

399424
for imageName, imageConf := range *config.Images {
@@ -406,9 +431,25 @@ func (cmd *UpCmd) deployChart() {
406431
}
407432
containerValues[imageName] = container
408433
}
409-
values["containers"] = containerValues
410434

411-
appRelease, err := cmd.helm.InstallChartByPath(releaseName, releaseNamespace, chartPath, &values)
435+
pullSecrets := []string{}
436+
existingPullSecrets, pullSecretsExisting := values["pullSecrets"]
437+
438+
if pullSecretsExisting {
439+
pullSecrets = existingPullSecrets.([]string)
440+
}
441+
442+
for _, registryConf := range *config.Registries {
443+
if registryConf.URL != nil {
444+
registrySecretName := registry.GetRegistryAuthSecretName(*registryConf.URL)
445+
pullSecrets = append(pullSecrets, registrySecretName)
446+
}
447+
}
448+
449+
overwriteValues["containers"] = containerValues
450+
overwriteValues["pullSecrets"] = pullSecrets
451+
452+
appRelease, err := cmd.helm.InstallChartByPath(releaseName, releaseNamespace, chartPath, &overwriteValues)
412453

413454
log.StopWait()
414455

pkg/devspace/builder/docker/docker.go

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ func (b *Builder) BuildImage(contextPath, dockerfilePath string, options *types.
144144
}
145145

146146
// Authenticate authenticates the client with a remote registry
147-
func (b *Builder) Authenticate(user, password string, checkCredentialsStore bool) error {
147+
func (b *Builder) Authenticate(user, password string, checkCredentialsStore bool) (*types.AuthConfig, error) {
148148
ctx := context.Background()
149149
authServer := getOfficialServer(ctx, b.client)
150150
serverAddress := b.RegistryURL
@@ -154,12 +154,12 @@ func (b *Builder) Authenticate(user, password string, checkCredentialsStore bool
154154
} else {
155155
ref, err := reference.ParseNormalizedNamed(b.imageURL)
156156
if err != nil {
157-
return err
157+
return nil, err
158158
}
159159

160160
repoInfo, err := registry.ParseRepositoryInfo(ref)
161161
if err != nil {
162-
return err
162+
return nil, err
163163
}
164164

165165
if repoInfo.Index.Official {
@@ -176,7 +176,7 @@ func (b *Builder) Authenticate(user, password string, checkCredentialsStore bool
176176

177177
response, err := b.client.RegistryLogin(ctx, *authConfig)
178178
if err != nil {
179-
return err
179+
return nil, err
180180
}
181181

182182
if response.IdentityToken != "" {
@@ -185,7 +185,8 @@ func (b *Builder) Authenticate(user, password string, checkCredentialsStore bool
185185
}
186186

187187
b.authConfig = authConfig
188-
return nil
188+
189+
return b.authConfig, nil
189190
}
190191

191192
// PushImage pushes an image to the specified registry

pkg/devspace/builder/interface.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package builder
2+
3+
import "github.com/docker/docker/api/types"
4+
5+
// Interface defines methods for builders (e.g. docker, kaniko)
6+
type Interface interface {
7+
Authenticate(username, password string, checkCredentialsStore bool) (*types.AuthConfig, error)
8+
BuildImage(contextPath, dockerfilePath string, options *types.ImageBuildOptions) error
9+
PushImage() error
10+
}

0 commit comments

Comments
 (0)