Skip to content

Commit b0b8664

Browse files
author
Simon Emms
committed
[installer]: create build-from-envvars command on config
1 parent 9365e5d commit b0b8664

File tree

28 files changed

+859
-3
lines changed

28 files changed

+859
-3
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
// Copyright (c) 2022 Gitpod GmbH. All rights reserved.
2+
// Licensed under the MIT License. See License-MIT.txt in the project root for license information.
3+
4+
package cmd
5+
6+
import (
7+
"github.com/gitpod-io/gitpod/installer/pkg/config"
8+
"github.com/spf13/cobra"
9+
)
10+
11+
// configBuildFromEnvvarsCmd represents the validate command
12+
var configBuildFromEnvvarsCmd = &cobra.Command{
13+
Use: "build-from-envvars",
14+
Short: "Build configuration from environment variables",
15+
RunE: func(cmd *cobra.Command, args []string) error {
16+
if _, err := configFileExistsAndInit(); err != nil {
17+
return err
18+
}
19+
20+
_, version, cfg, err := loadConfig(configOpts.ConfigFile)
21+
if err != nil {
22+
return err
23+
}
24+
25+
apiVersion, err := config.LoadConfigVersion(version)
26+
if err != nil {
27+
return err
28+
}
29+
30+
if err := apiVersion.BuildFromEnvvars(cfg); err != nil {
31+
return err
32+
}
33+
34+
return saveConfigFile(cfg)
35+
},
36+
}
37+
38+
func init() {
39+
configCmd.AddCommand(configBuildFromEnvvarsCmd)
40+
}

install/installer/go.mod

+1
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,7 @@ require (
122122
github.com/go-redis/redis/v7 v7.4.1 // indirect
123123
github.com/go-redis/redis/v8 v8.11.5 // indirect
124124
github.com/go-sql-driver/mysql v1.6.0 // indirect
125+
github.com/go-test/deep v1.0.8
125126
github.com/gobwas/glob v0.2.3 // indirect
126127
github.com/goccy/go-yaml v1.9.5 // indirect
127128
github.com/godbus/dbus/v5 v5.0.6 // indirect

install/installer/go.sum

+2
Original file line numberDiff line numberDiff line change
@@ -658,6 +658,8 @@ github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg78
658658
github.com/go-test/deep v1.0.2-0.20181118220953-042da051cf31/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA=
659659
github.com/go-test/deep v1.0.2/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA=
660660
github.com/go-test/deep v1.0.7 h1:/VSMRlnY/JSyqxQUzQLKVMAskpY/NZKFA5j2P+0pP2M=
661+
github.com/go-test/deep v1.0.8 h1:TDsG77qcSprGbC6vTN8OuXp5g+J+b5Pcguhf7Zt61VM=
662+
github.com/go-test/deep v1.0.8/go.mod h1:5C2ZWiW0ErCdrYzpqxLbTX7MG14M9iiw8DgHncVwcsE=
661663
github.com/gobuffalo/envy v1.7.0/go.mod h1:n7DRkBerg/aorDM8kbduw5dN3oXGswK5liaSCx4T5NI=
662664
github.com/gobuffalo/envy v1.7.1/go.mod h1:FurDp9+EDPE4aIUS3ZLyD+7/9fpx7YRt/ukY6jIHf0w=
663665
github.com/gobuffalo/flect v0.2.2/go.mod h1:vmkQwuZYhN5Pc4ljYQZzP+1sq+NEkK+lh20jmEmX3jc=

install/installer/pkg/config/loader.go

+3
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,9 @@ type ConfigVersion interface {
5151
// CheckDeprecated checks for deprecated config params.
5252
// Returns key/value pair of deprecated params/values and any error messages (used for conflicting params)
5353
CheckDeprecated(cfg interface{}) (map[string]interface{}, []string)
54+
55+
// BuildFromEnvvars builds the configuration file from assigned envvars
56+
BuildFromEnvvars(cfg interface{}) error
5457
}
5558

5659
// AddVersion adds a new version.

install/installer/pkg/config/v1/config.go

+10-3
Original file line numberDiff line numberDiff line change
@@ -34,21 +34,28 @@ func (v version) Factory() interface{} {
3434
},
3535
}
3636
}
37+
38+
const (
39+
defaultRepositoryUrl = "eu.gcr.io/gitpod-core-dev/build"
40+
defaultOpenVSXURL = "https://open-vsx.org"
41+
defaultMetadataRegion = "local"
42+
)
43+
3744
func (v version) Defaults(in interface{}) error {
3845
cfg, ok := in.(*Config)
3946
if !ok {
4047
return config.ErrInvalidType
4148
}
4249

4350
cfg.Kind = InstallationFull
44-
cfg.Repository = "eu.gcr.io/gitpod-core-dev/build"
51+
cfg.Repository = defaultRepositoryUrl
4552
cfg.Observability = Observability{
4653
LogLevel: LogLevelInfo,
4754
}
4855
cfg.Certificate.Kind = ObjectRefSecret
4956
cfg.Certificate.Name = "https-certificates"
5057
cfg.Database.InCluster = pointer.Bool(true)
51-
cfg.Metadata.Region = "local"
58+
cfg.Metadata.Region = defaultMetadataRegion
5259
cfg.Metadata.InstallationShortname = InstallationShortNameOldDefault // TODO(gpl): we're tied to "default" here because that's what we put into static bridges in the past
5360
cfg.ObjectStorage.InCluster = pointer.Bool(true)
5461
cfg.ObjectStorage.Resources = &Resources{
@@ -69,7 +76,7 @@ func (v version) Defaults(in interface{}) error {
6976
cfg.Workspace.PVC.Size = resource.MustParse("30Gi")
7077
cfg.Workspace.PVC.StorageClass = ""
7178
cfg.Workspace.PVC.SnapshotClass = ""
72-
cfg.OpenVSX.URL = "https://open-vsx.org"
79+
cfg.OpenVSX.URL = defaultOpenVSXURL
7380
cfg.DisableDefinitelyGP = true
7481

7582
return nil

0 commit comments

Comments
 (0)