Skip to content

Commit

Permalink
deprecate extended images on dev in favour of build section (#2269)
Browse files Browse the repository at this point in the history
* feat: deprecate extended images on dev

Signed-off-by: Javier López Barba <javier@okteto.com>

* refactor: change depreciation message

Signed-off-by: Javier López Barba <javier@okteto.com>
  • Loading branch information
jLopezbarb committed Mar 7, 2022
1 parent 6617c18 commit f49b132
Show file tree
Hide file tree
Showing 10 changed files with 69 additions and 36 deletions.
2 changes: 1 addition & 1 deletion cmd/utils/dev_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ func Test_LoadManifestOrDefault(t *testing.T) {
expectErr: false,
dev: &model.Dev{
Name: "loaded",
Image: &model.BuildInfo{
Image: &model.DevBuildInfo{
Name: "okteto/test:1.0",
},
Sync: model.Sync{
Expand Down
4 changes: 2 additions & 2 deletions pkg/cmd/doctor/run.go
Original file line number Diff line number Diff line change
Expand Up @@ -161,8 +161,8 @@ func generateManifestFile(devPath string) (string, error) {
}

dev := &model.Dev{
Image: &model.BuildInfo{},
Push: &model.BuildInfo{},
Image: &model.DevBuildInfo{},
Push: &model.DevBuildInfo{},
Environment: make([]model.EnvVar, 0),
Secrets: make([]model.Secret, 0),
Forward: make([]model.Forward, 0),
Expand Down
6 changes: 3 additions & 3 deletions pkg/cmd/doctor/run_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,19 +34,19 @@ func Test_generateManifestFile(t *testing.T) {
name: "basic",
dev: &model.Dev{
Name: "dev",
Image: &model.BuildInfo{Name: "okteto/dev"},
Image: &model.DevBuildInfo{Name: "okteto/dev"},
Command: model.Command{Values: []string{"bash"}},
},
},
{
name: "with-services",
dev: &model.Dev{
Name: "dev",
Image: &model.BuildInfo{Name: "okteto/dev"},
Image: &model.DevBuildInfo{Name: "okteto/dev"},
Command: model.Command{Values: []string{"bash"}},
Services: []*model.Dev{{
Name: "svc",
Image: &model.BuildInfo{Name: "okteto/svc"},
Image: &model.DevBuildInfo{Name: "okteto/svc"},
Command: model.Command{Values: []string{"bash"}},
}, {
Name: "svc2",
Expand Down
4 changes: 2 additions & 2 deletions pkg/k8s/apps/crud_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ func TestGetStatefulset(t *testing.T) {
dev := &model.Dev{
Name: "test",
Namespace: "test",
Image: &model.BuildInfo{
Image: &model.DevBuildInfo{
Name: "image",
},
PersistentVolumeInfo: &model.PersistentVolumeInfo{
Expand Down Expand Up @@ -114,7 +114,7 @@ func TestGetDeployment(t *testing.T) {
dev := &model.Dev{
Name: "test",
Namespace: "test",
Image: &model.BuildInfo{
Image: &model.DevBuildInfo{
Name: "image",
},
PersistentVolumeInfo: &model.PersistentVolumeInfo{
Expand Down
2 changes: 1 addition & 1 deletion pkg/linguist/dev.go
Original file line number Diff line number Diff line change
Expand Up @@ -304,7 +304,7 @@ func GetDevDefaults(language, workdir string) (*model.Dev, error) {
vals := languageDefaults[language]

dev := &model.Dev{
Image: &model.BuildInfo{
Image: &model.DevBuildInfo{
Name: vals.image,
},
Command: model.Command{
Expand Down
25 changes: 20 additions & 5 deletions pkg/model/dev.go
Original file line number Diff line number Diff line change
Expand Up @@ -58,8 +58,8 @@ type Dev struct {
Namespace string `json:"namespace,omitempty" yaml:"namespace,omitempty"`
Container string `json:"container,omitempty" yaml:"container,omitempty"`
EmptyImage bool `json:"-" yaml:"-"`
Image *BuildInfo `json:"image,omitempty" yaml:"image,omitempty"`
Push *BuildInfo `json:"-" yaml:"push,omitempty"`
Image *DevBuildInfo `json:"image,omitempty" yaml:"image,omitempty"`
Push *DevBuildInfo `json:"-" yaml:"push,omitempty"`
ImagePullPolicy apiv1.PullPolicy `json:"imagePullPolicy,omitempty" yaml:"imagePullPolicy,omitempty"`
Secrets []Secret `json:"secrets,omitempty" yaml:"secrets,omitempty"`
Command Command `json:"command,omitempty" yaml:"command,omitempty"`
Expand Down Expand Up @@ -125,6 +125,9 @@ type BuildInfo struct {
Image string `yaml:"image,omitempty"`
}

// DevBuildInfo throws a warning if it's not single line
type DevBuildInfo BuildInfo

// Volume represents a volume in the development container
type Volume struct {
LocalPath string
Expand Down Expand Up @@ -302,8 +305,8 @@ func Get(devPath string) (*Manifest, error) {
}
func NewDev() *Dev {
return &Dev{
Image: &BuildInfo{},
Push: &BuildInfo{},
Image: &DevBuildInfo{},
Push: &DevBuildInfo{},
Environment: make(Environment, 0),
Secrets: make([]Secret, 0),
Forward: make([]Forward, 0),
Expand Down Expand Up @@ -428,7 +431,7 @@ func (dev *Dev) loadSelector() error {
func (dev *Dev) loadImage() error {
var err error
if dev.Image == nil {
dev.Image = &BuildInfo{}
dev.Image = &DevBuildInfo{}
}
if len(dev.Image.Name) > 0 {
dev.Image.Name, err = ExpandEnv(dev.Image.Name)
Expand Down Expand Up @@ -551,6 +554,18 @@ func (dev *Dev) SetDefaults() error {
return nil
}

func (build *DevBuildInfo) setBuildDefaults() {
if build == nil {
build = &DevBuildInfo{}
}
if build.Context == "" {
build.Context = "."
}
if _, err := url.ParseRequestURI(build.Context); err != nil && build.Dockerfile == "" {
build.Dockerfile = "Dockerfile"
}
}

func (build *BuildInfo) setBuildDefaults() {
if build == nil {
build = &BuildInfo{}
Expand Down
10 changes: 5 additions & 5 deletions pkg/model/dev_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -506,8 +506,8 @@ func TestDev_validateName(t *testing.T) {
dev := &Dev{
Name: tt.devName,
ImagePullPolicy: apiv1.PullAlways,
Image: &BuildInfo{},
Push: &BuildInfo{},
Image: &DevBuildInfo{},
Push: &DevBuildInfo{},
Sync: Sync{
Folders: []SyncFolder{
{
Expand All @@ -533,15 +533,15 @@ func TestDev_readImageContext(t *testing.T) {
tests := []struct {
name string
manifest []byte
expected *BuildInfo
expected *DevBuildInfo
}{
{
name: "context pointing to url",
manifest: []byte(`name: deployment
image:
context: https://github.com/okteto/okteto.git
`),
expected: &BuildInfo{
expected: &DevBuildInfo{
Context: "https://github.com/okteto/okteto.git",
},
},
Expand All @@ -551,7 +551,7 @@ image:
image:
context: .
`),
expected: &BuildInfo{
expected: &DevBuildInfo{
Context: ".",
Dockerfile: "Dockerfile",
},
Expand Down
18 changes: 18 additions & 0 deletions pkg/model/serializer.go
Original file line number Diff line number Diff line change
Expand Up @@ -285,6 +285,24 @@ func (sync Sync) MarshalYAML() (interface{}, error) {
return syncRaw(sync), nil
}

// UnmarshalYAML Implements the Unmarshaler interface of the yaml pkg.
func (buildInfo *DevBuildInfo) UnmarshalYAML(unmarshal func(interface{}) error) error {
var rawString string
err := unmarshal(&rawString)
if err == nil {
buildInfo.Name = rawString
return nil
}
var rawBuildInfo BuildInfo
err = unmarshal(&rawBuildInfo)
if err != nil {
return err
}
oktetoLog.Yellow("The `image` extended syntax is deprecated. Define the images you want to build in the 'build' section of your manifest. More info at https://www.okteto.com/docs/reference/manifest/#build")
*buildInfo = DevBuildInfo(rawBuildInfo)
return nil
}

// UnmarshalYAML Implements the Unmarshaler interface of the yaml pkg.
func (buildInfo *BuildInfo) UnmarshalYAML(unmarshal func(interface{}) error) error {
var rawString string
Expand Down
30 changes: 15 additions & 15 deletions pkg/model/serializer_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1114,7 +1114,7 @@ dev:
Selector: Selector{},
EmptyImage: true,
ImagePullPolicy: v1.PullAlways,
Image: &BuildInfo{
Image: &DevBuildInfo{
Name: "",
Context: ".",
Dockerfile: "Dockerfile",
Expand All @@ -1124,7 +1124,7 @@ dev:
PersistentVolumeInfo: &PersistentVolumeInfo{
Enabled: true,
},
Push: &BuildInfo{
Push: &DevBuildInfo{
Name: "",
Context: ".",
Dockerfile: "Dockerfile",
Expand Down Expand Up @@ -1179,7 +1179,7 @@ dev:
Selector: Selector{},
EmptyImage: true,
ImagePullPolicy: v1.PullAlways,
Image: &BuildInfo{
Image: &DevBuildInfo{
Name: "",
Context: ".",
Dockerfile: "Dockerfile",
Expand All @@ -1189,7 +1189,7 @@ dev:
PersistentVolumeInfo: &PersistentVolumeInfo{
Enabled: true,
},
Push: &BuildInfo{
Push: &DevBuildInfo{
Name: "",
Context: ".",
Dockerfile: "Dockerfile",
Expand Down Expand Up @@ -1259,7 +1259,7 @@ sync:
Selector: Selector{},
EmptyImage: true,
ImagePullPolicy: v1.PullAlways,
Image: &BuildInfo{
Image: &DevBuildInfo{
Name: "",
Context: ".",
Dockerfile: "Dockerfile",
Expand All @@ -1269,7 +1269,7 @@ sync:
PersistentVolumeInfo: &PersistentVolumeInfo{
Enabled: true,
},
Push: &BuildInfo{
Push: &DevBuildInfo{
Name: "",
Context: ".",
Dockerfile: "Dockerfile",
Expand Down Expand Up @@ -1340,7 +1340,7 @@ services:
Selector: Selector{},
EmptyImage: true,
ImagePullPolicy: v1.PullAlways,
Image: &BuildInfo{
Image: &DevBuildInfo{
Name: "",
Context: ".",
Dockerfile: "Dockerfile",
Expand All @@ -1350,7 +1350,7 @@ services:
PersistentVolumeInfo: &PersistentVolumeInfo{
Enabled: true,
},
Push: &BuildInfo{
Push: &DevBuildInfo{
Name: "",
Context: ".",
Dockerfile: "Dockerfile",
Expand Down Expand Up @@ -1380,7 +1380,7 @@ services:
Annotations: Annotations{},
Selector: Selector{},
EmptyImage: true,
Image: &BuildInfo{},
Image: &DevBuildInfo{},
ImagePullPolicy: v1.PullAlways,
Secrets: []Secret{},
Probes: &Probes{
Expand Down Expand Up @@ -1469,7 +1469,7 @@ dev:
Selector: Selector{},
EmptyImage: true,
ImagePullPolicy: v1.PullAlways,
Image: &BuildInfo{
Image: &DevBuildInfo{
Name: "",
Context: ".",
Dockerfile: "Dockerfile",
Expand All @@ -1480,7 +1480,7 @@ dev:
Enabled: true,
},
Secrets: make([]Secret, 0),
Push: &BuildInfo{
Push: &DevBuildInfo{
Name: "",
Context: ".",
Dockerfile: "Dockerfile",
Expand Down Expand Up @@ -1554,7 +1554,7 @@ dev:
Selector: Selector{},
EmptyImage: true,
ImagePullPolicy: v1.PullAlways,
Image: &BuildInfo{
Image: &DevBuildInfo{
Name: "",
Context: ".",
Dockerfile: "Dockerfile",
Expand All @@ -1564,7 +1564,7 @@ dev:
PersistentVolumeInfo: &PersistentVolumeInfo{
Enabled: true,
},
Push: &BuildInfo{
Push: &DevBuildInfo{
Name: "",
Context: ".",
Dockerfile: "Dockerfile",
Expand Down Expand Up @@ -1619,7 +1619,7 @@ dev:
Selector: Selector{},
EmptyImage: true,
ImagePullPolicy: v1.PullAlways,
Image: &BuildInfo{
Image: &DevBuildInfo{
Name: "",
Context: ".",
Dockerfile: "Dockerfile",
Expand All @@ -1629,7 +1629,7 @@ dev:
PersistentVolumeInfo: &PersistentVolumeInfo{
Enabled: true,
},
Push: &BuildInfo{
Push: &DevBuildInfo{
Name: "",
Context: ".",
Dockerfile: "Dockerfile",
Expand Down
4 changes: 2 additions & 2 deletions pkg/model/translation_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -468,7 +468,7 @@ func TestSSHServerPortTranslationRule(t *testing.T) {
{
name: "default",
manifest: &Dev{
Image: &BuildInfo{},
Image: &DevBuildInfo{},
SSHServerPort: oktetoDefaultSSHServerPort,
},
expected: Environment{
Expand All @@ -479,7 +479,7 @@ func TestSSHServerPortTranslationRule(t *testing.T) {
{
name: "custom port",
manifest: &Dev{
Image: &BuildInfo{},
Image: &DevBuildInfo{},
SSHServerPort: 22220,
},
expected: Environment{
Expand Down

0 comments on commit f49b132

Please sign in to comment.