Skip to content

Commit e99c65f

Browse files
committed
build JB images for stable and latest separately
1 parent ffe6f48 commit e99c65f

File tree

6 files changed

+134
-11
lines changed

6 files changed

+134
-11
lines changed

.werft/jobs/build/deploy-to-preview-environment.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -308,6 +308,9 @@ async function deployToDevWithInstaller(werft: Werft, jobConfig: JobConfig, depl
308308
// Relax CPU contraints
309309
exec(`yq w -i config.yaml workspace.resources.requests.cpu "100m"`, { slice: installerSlices.INSTALLER_RENDER });
310310

311+
// Disable resolution of latest images and use bundled latest versions instead
312+
exec(`yq w -i config.yaml experimental.ide.resolveLatest false`, { slice: installerSlices.INSTALLER_RENDER });
313+
311314
if ((deploymentConfig.analytics || "").startsWith("segment|")) {
312315
exec(`yq w -i config.yaml analytics.writer segment`, { slice: installerSlices.INSTALLER_RENDER });
313316
exec(`yq w -i config.yaml analytics.segmentKey ${deploymentConfig.analytics!.substring("segment|".length)}`, { slice: installerSlices.INSTALLER_RENDER });
@@ -390,7 +393,7 @@ async function deployToDevWithInstaller(werft: Werft, jobConfig: JobConfig, depl
390393
exec(`/tmp/installer validate cluster -c config.yaml || true`, { slice: installerSlices.INSTALLER_RENDER });
391394

392395
// render the k8s manifest
393-
exec(`/tmp/installer render --namespace ${deploymentConfig.namespace} --config config.yaml > k8s.yaml`, { silent: true });
396+
exec(`/tmp/installer render --use-experimental-config --namespace ${deploymentConfig.namespace} --config config.yaml > k8s.yaml`, { silent: true });
394397
werft.done(installerSlices.INSTALLER_RENDER);
395398
} catch (err) {
396399
if (!jobConfig.mainBuild) {

components/BUILD.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,13 @@ packages:
4242
- components/ide/code-desktop:docker-insiders
4343
- components/ide/code:docker
4444
- components/ide/jetbrains/image:goland
45+
- components/ide/jetbrains/image:goland-latest
4546
- components/ide/jetbrains/image:intellij
47+
- components/ide/jetbrains/image:intellij-latest
4648
- components/ide/jetbrains/image:phpstorm
49+
- components/ide/jetbrains/image:phpstorm-latest
4750
- components/ide/jetbrains/image:pycharm
51+
- components/ide/jetbrains/image:pycharm-latest
4852
- components/image-builder-bob:docker
4953
- components/image-builder-mk3:docker
5054
- components/local-app:docker

components/ide/jetbrains/image/BUILD.yaml

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,13 @@ packages:
55
- version
66
deps:
77
- :intellij
8+
- :intellij-latest
89
- :goland
10+
- :goland-latest
911
- :pycharm
12+
- :pycharm-latest
1013
- :phpstorm
14+
- :phpstorm-latest
1115
- name: intellij
1216
type: docker
1317
srcs:
@@ -30,6 +34,28 @@ packages:
3034
image:
3135
- ${imageRepoBase}/ide/intellij:${version}
3236
- ${imageRepoBase}/ide/intellij:commit-${__git_commit}
37+
- name: intellij-latest
38+
type: docker
39+
srcs:
40+
- "startup.sh"
41+
- "supervisor-ide-config_intellij.json"
42+
deps:
43+
- components/ide/jetbrains/backend-plugin:plugin
44+
- components/ide/jetbrains/image/status:app
45+
- components/ide/jetbrains/cli:app
46+
argdeps:
47+
- imageRepoBase
48+
config:
49+
dockerfile: leeway.Dockerfile
50+
metadata:
51+
helm-component: workspace.desktopIdeImages.intellijLatest
52+
buildArgs:
53+
# "https://data.services.jetbrains.com/products?code=IIU&fields=distributions%2Clink%2Cname%2Creleases&_=$(date +%s)000"
54+
JETBRAINS_BACKEND_URL: "https://download.jetbrains.com/idea/ideaIU-221.4994.44.tar.gz"
55+
SUPERVISOR_IDE_CONFIG: supervisor-ide-config_intellij.json
56+
image:
57+
- ${imageRepoBase}/ide/intellij:${version}-latest
58+
- ${imageRepoBase}/ide/intellij:commit-${__git_commit}-latest
3359
- name: goland
3460
type: docker
3561
srcs:
@@ -52,6 +78,28 @@ packages:
5278
image:
5379
- ${imageRepoBase}/ide/goland:${version}
5480
- ${imageRepoBase}/ide/goland:commit-${__git_commit}
81+
- name: goland-latest
82+
type: docker
83+
srcs:
84+
- "startup.sh"
85+
- "supervisor-ide-config_goland.json"
86+
deps:
87+
- components/ide/jetbrains/backend-plugin:plugin
88+
- components/ide/jetbrains/image/status:app
89+
- components/ide/jetbrains/cli:app
90+
argdeps:
91+
- imageRepoBase
92+
config:
93+
dockerfile: leeway.Dockerfile
94+
metadata:
95+
helm-component: workspace.desktopIdeImages.golandLatest
96+
buildArgs:
97+
# "https://data.services.jetbrains.com/products?code=GO&fields=distributions%2Clink%2Cname%2Creleases&_=$(date +%s)000"
98+
JETBRAINS_BACKEND_URL: "https://download.jetbrains.com/go/goland-221.4994.43.tar.gz"
99+
SUPERVISOR_IDE_CONFIG: supervisor-ide-config_goland.json
100+
image:
101+
- ${imageRepoBase}/ide/goland:${version}-latest
102+
- ${imageRepoBase}/ide/goland:commit-${__git_commit}-latest
55103
- name: pycharm
56104
type: docker
57105
srcs:
@@ -74,6 +122,28 @@ packages:
74122
image:
75123
- ${imageRepoBase}/ide/pycharm:${version}
76124
- ${imageRepoBase}/ide/pycharm:commit-${__git_commit}
125+
- name: pycharm-latest
126+
type: docker
127+
srcs:
128+
- "startup.sh"
129+
- "supervisor-ide-config_pycharm.json"
130+
deps:
131+
- components/ide/jetbrains/backend-plugin:plugin
132+
- components/ide/jetbrains/image/status:app
133+
- components/ide/jetbrains/cli:app
134+
argdeps:
135+
- imageRepoBase
136+
config:
137+
dockerfile: leeway.Dockerfile
138+
metadata:
139+
helm-component: workspace.desktopIdeImages.pycharm
140+
buildArgs:
141+
# "https://data.services.jetbrains.com/products?code=PCP&fields=distributions%2Clink%2Cname%2Creleases&_=$(date +%s)000"
142+
JETBRAINS_BACKEND_URL: "https://download.jetbrains.com/python/pycharm-professional-221.4994.44.tar.gz"
143+
SUPERVISOR_IDE_CONFIG: supervisor-ide-config_pycharm.json
144+
image:
145+
- ${imageRepoBase}/ide/pycharm:${version}-latest
146+
- ${imageRepoBase}/ide/pycharm:commit-${__git_commit}-latest
77147
- name: phpstorm
78148
type: docker
79149
srcs:
@@ -96,3 +166,25 @@ packages:
96166
image:
97167
- ${imageRepoBase}/ide/phpstorm:${version}
98168
- ${imageRepoBase}/ide/phpstorm:commit-${__git_commit}
169+
- name: phpstorm-latest
170+
type: docker
171+
srcs:
172+
- "startup.sh"
173+
- "supervisor-ide-config_phpstorm.json"
174+
deps:
175+
- components/ide/jetbrains/backend-plugin:plugin
176+
- components/ide/jetbrains/image/status:app
177+
- components/ide/jetbrains/cli:app
178+
argdeps:
179+
- imageRepoBase
180+
config:
181+
dockerfile: leeway.Dockerfile
182+
metadata:
183+
helm-component: workspace.desktopIdeImages.phpstorm
184+
buildArgs:
185+
# "https://data.services.jetbrains.com/products?code=PS&fields=distributions%2Clink%2Cname%2Creleases&_=$(date +%s)000"
186+
JETBRAINS_BACKEND_URL: "https://download.jetbrains.com/webide/PhpStorm-221.4994.43.tar.gz"
187+
SUPERVISOR_IDE_CONFIG: supervisor-ide-config_phpstorm.json
188+
image:
189+
- ${imageRepoBase}/ide/phpstorm:${version}-latest
190+
- ${imageRepoBase}/ide/phpstorm:commit-${__git_commit}-latest

install/installer/pkg/components/server/ide/configmap.go

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ import (
1010
"github.com/gitpod-io/gitpod/installer/pkg/common"
1111
"github.com/gitpod-io/gitpod/installer/pkg/components/workspace"
1212
"github.com/gitpod-io/gitpod/installer/pkg/components/workspace/ide"
13+
"github.com/gitpod-io/gitpod/installer/pkg/config/v1/experimental"
14+
"github.com/gitpod-io/gitpod/installer/pkg/config/versions"
1315

1416
corev1 "k8s.io/api/core/v1"
1517
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -31,6 +33,21 @@ func configmap(ctx *common.RenderContext) ([]runtime.Object, error) {
3133
goland := "goland"
3234
pycharm := "pycharm"
3335
phpstorm := "phpstorm"
36+
37+
resolveLatestImage := func(name string, tag string, bundledLatest versions.Versioned) string {
38+
resolveLatest := true
39+
ctx.WithExperimental(func(ucfg *experimental.Config) error {
40+
if ucfg.IDE != nil && ucfg.IDE.ResolveLatest != nil {
41+
resolveLatest = *ucfg.IDE.ResolveLatest
42+
}
43+
return nil
44+
})
45+
if resolveLatest {
46+
return common.ImageName(ctx.Config.Repository, name, tag)
47+
}
48+
return common.ImageName(ctx.Config.Repository, name, bundledLatest.Version)
49+
}
50+
3451
idecfg := IDEConfig{
3552
SupervisorImage: common.ImageName(ctx.Config.Repository, workspace.SupervisorImage, ctx.VersionManifest.Components.Workspace.Supervisor.Version),
3653
IDEOptions: IDEOptions{
@@ -72,7 +89,7 @@ func configmap(ctx *common.RenderContext) ([]runtime.Object, error) {
7289
Logo: getIdeLogoPath("vscodeInsiders"),
7390
Tooltip: pointer.String("Early access version, still subject to testing."),
7491
Label: pointer.String("Insiders"),
75-
Image: common.ImageName(ctx.Config.Repository, ide.CodeIDEImage, ctx.VersionManifest.Components.Workspace.CodeImage.Version),
92+
Image: resolveLatestImage(ide.CodeIDEImage, "nightly", ctx.VersionManifest.Components.Workspace.CodeImage),
7693
ResolveImageDigest: pointer.Bool(true),
7794
},
7895
codeDesktop: {
@@ -97,31 +114,31 @@ func configmap(ctx *common.RenderContext) ([]runtime.Object, error) {
97114
Type: typeDesktop,
98115
Logo: getIdeLogoPath("intellijIdeaLogo"),
99116
Image: common.ImageName(ctx.Config.Repository, ide.IntelliJDesktopIDEImage, ctx.VersionManifest.Components.Workspace.DesktopIdeImages.IntelliJImage.Version),
100-
LatestImage: common.ImageName(ctx.Config.Repository, ide.IntelliJDesktopIDEImage, "latest"),
117+
LatestImage: resolveLatestImage(ide.IntelliJDesktopIDEImage, "latest", ctx.VersionManifest.Components.Workspace.DesktopIdeImages.IntelliJLatestImage),
101118
},
102119
goland: {
103120
OrderKey: pointer.String("05"),
104121
Title: "GoLand",
105122
Type: typeDesktop,
106123
Logo: getIdeLogoPath("golandLogo"),
107124
Image: common.ImageName(ctx.Config.Repository, ide.GoLandDesktopIdeImage, ctx.VersionManifest.Components.Workspace.DesktopIdeImages.GoLandImage.Version),
108-
LatestImage: common.ImageName(ctx.Config.Repository, ide.GoLandDesktopIdeImage, "latest"),
125+
LatestImage: resolveLatestImage(ide.GoLandDesktopIdeImage, "latest", ctx.VersionManifest.Components.Workspace.DesktopIdeImages.GoLandLatestImage),
109126
},
110127
pycharm: {
111128
OrderKey: pointer.String("06"),
112129
Title: "PyCharm",
113130
Type: typeDesktop,
114131
Logo: getIdeLogoPath("pycharmLogo"),
115132
Image: common.ImageName(ctx.Config.Repository, ide.PyCharmDesktopIdeImage, ctx.VersionManifest.Components.Workspace.DesktopIdeImages.PyCharmImage.Version),
116-
LatestImage: common.ImageName(ctx.Config.Repository, ide.PyCharmDesktopIdeImage, "latest"),
133+
LatestImage: resolveLatestImage(ide.PyCharmDesktopIdeImage, "latest", ctx.VersionManifest.Components.Workspace.DesktopIdeImages.PyCharmLatestImage),
117134
},
118135
phpstorm: {
119136
OrderKey: pointer.String("07"),
120137
Title: "PhpStorm",
121138
Type: typeDesktop,
122139
Logo: getIdeLogoPath("phpstormLogo"),
123140
Image: common.ImageName(ctx.Config.Repository, ide.PhpStormDesktopIdeImage, ctx.VersionManifest.Components.Workspace.DesktopIdeImages.PhpStormImage.Version),
124-
LatestImage: common.ImageName(ctx.Config.Repository, ide.PhpStormDesktopIdeImage, "latest"),
141+
LatestImage: resolveLatestImage(ide.PhpStormDesktopIdeImage, "latest", ctx.VersionManifest.Components.Workspace.DesktopIdeImages.PhpStormLatestImage),
125142
},
126143
},
127144
DefaultIDE: "code",

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

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,13 @@ import "k8s.io/apimachinery/pkg/api/resource"
1414

1515
// Config contains all experimental configuration.
1616
type Config struct {
17-
Workspace *WorkspaceConfig `json:"workspace"`
18-
WebApp *WebAppConfig `json:"webapp"`
19-
IDE *IDEConfig `json:"ide"`
17+
Workspace *WorkspaceConfig `json:"workspace,omitempty"`
18+
WebApp *WebAppConfig `json:"webapp,omitempty"`
19+
IDE *IDEConfig `json:"ide,omitempty"`
2020
}
2121

2222
type WorkspaceConfig struct {
23-
Tracing *Tracing `json:"tracing"`
23+
Tracing *Tracing `json:"tracing,omitempty"`
2424
Stage string `json:"stage"`
2525

2626
CPULimits struct {
@@ -34,7 +34,10 @@ type WorkspaceConfig struct {
3434
type WebAppConfig struct {
3535
}
3636

37-
type IDEConfig struct{}
37+
type IDEConfig struct {
38+
// Disable resolution of latest images and use bundled latest versions instead
39+
ResolveLatest *bool `json:"resolveLatest,omitempty"`
40+
}
3841

3942
type TracingSampleType string
4043

install/installer/pkg/config/versions/versions.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,13 @@ type Components struct {
4545
CodeDesktopImage Versioned `json:"codeDesktop"`
4646
CodeDesktopImageInsiders Versioned `json:"codeDesktopInsiders"`
4747
IntelliJImage Versioned `json:"intellij"`
48+
IntelliJLatestImage Versioned `json:"intellijLatest"`
4849
GoLandImage Versioned `json:"goland"`
50+
GoLandLatestImage Versioned `json:"golandLatest"`
4951
PyCharmImage Versioned `json:"pycharm"`
52+
PyCharmLatestImage Versioned `json:"pycharmLatest"`
5053
PhpStormImage Versioned `json:"phpstorm"`
54+
PhpStormLatestImage Versioned `json:"phpstormLatest"`
5155
} `json:"desktopIdeImages"`
5256
} `json:"workspace"`
5357
WSDaemon struct {

0 commit comments

Comments
 (0)