Skip to content

Commit c0f1a8a

Browse files
[ide] Add VS Code desktop IDE options
1 parent b055288 commit c0f1a8a

15 files changed

+692
-7
lines changed

chart/templates/server-ide-configmap.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ code-latest: {{ (include "insider-image-full" (dict "root" $ "gp" $gp "comp" $gp
2828
{{- define "desktop-ide-images-aliases"}}
2929
{{- $ := .root -}}
3030
{{- $gp := .gp -}}
31+
code-desktop: {{ (include "gitpod.comp.imageFull" (dict "root" $ "gp" $gp "comp" $gp.components.workspace.desktopIdeImages.codeDesktop)) }}
32+
code-desktop-insiders: {{ (include "gitpod.comp.imageFull" (dict "root" $ "gp" $gp "comp" $gp.components.workspace.desktopIdeImages.codeDesktopInsiders)) }}
3133
intellij: {{ (include "gitpod.comp.imageFull" (dict "root" $ "gp" $gp "comp" $gp.components.workspace.desktopIdeImages.intellij)) }}
3234
goland: {{ (include "gitpod.comp.imageFull" (dict "root" $ "gp" $gp "comp" $gp.components.workspace.desktopIdeImages.goland)) }}
3335
{{ end }}

chart/values.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -402,6 +402,10 @@ components:
402402
stableVersion: "commit-636ef165f4255931c23fb2948e81c73cc75c4fb9"
403403
insidersVersion: "nightly"
404404
desktopIdeImages:
405+
codeDesktop:
406+
imageName: "ide/code-desktop"
407+
codeDesktopInsiders:
408+
imageName: "ide/code-desktop-insiders"
405409
intellij:
406410
imageName: "ide/intellij"
407411
goland:

components/BUILD.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@ packages:
4040
- components/ee/ws-scheduler:docker
4141
- components/gitpod-db:docker
4242
- components/ide/code:docker
43+
- components/ide/code-desktop:docker
44+
- components/ide/code-desktop:docker-insiders
4345
- components/ide/jetbrains/image:intellij
4446
- components/ide/jetbrains/image:goland
4547
- components/ide/theia:docker

components/dashboard/src/components/CheckBox.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
function CheckBox(props: {
99
name?: string,
10-
title: string,
10+
title: string | React.ReactNode,
1111
desc: string,
1212
checked: boolean,
1313
disabled?: boolean,
Lines changed: 37 additions & 0 deletions
Loading

components/dashboard/src/settings/Preferences.tsx

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import Tooltip from "../components/Tooltip";
1515
import golandLogo from '../images/golandLogo.svg';
1616
import ideaLogo from '../images/intellijIdeaLogo.svg';
1717
import vscode from '../images/vscode.svg';
18+
import vscodeInsiders from '../images/vscodeInsiders.svg';
1819
import { getGitpodService } from "../service/service";
1920
import { ThemeContext } from "../theme-context";
2021
import { UserContext } from "../user-context";
@@ -36,7 +37,7 @@ export default function Preferences() {
3637
setDefaultIde(value);
3738
}
3839

39-
const [defaultDesktopIde, setDefaultDesktopIde] = useState<string>(user?.additionalData?.ideSettings?.defaultDesktopIde || 'intellij');
40+
const [defaultDesktopIde, setDefaultDesktopIde] = useState<string>(user?.additionalData?.ideSettings?.defaultDesktopIde || 'code-desktop');
4041
const actuallySetDefaultDesktopIde = async (value: string) => {
4142
const additionalData = user?.additionalData || {};
4243
const settings = additionalData.ideSettings || {};
@@ -83,35 +84,44 @@ export default function Preferences() {
8384
<Tooltip content={'Early access version, still subject to testing.'} >
8485
<SelectableCard className="w-36 h-40" title="VS Code" selected={defaultIde === 'code-latest'} onClick={() => actuallySetDefaultIde('code-latest')}>
8586
<div className="flex justify-center mt-3">
86-
<img className="w-16 filter-grayscale self-center" src={vscode} />
87+
<img className="w-16 filter-grayscale self-center" src={vscodeInsiders} />
8788
</div>
8889
<PillLabel type="warn" className="font-semibold mt-2 py-0.5 px-2 self-center">Insiders</PillLabel>
8990
</SelectableCard>
9091
</Tooltip>
9192
</div>
9293
<div className="mt-4 space-x-4 flex">
9394
<CheckBox
94-
title="Open in Desktop IDE"
95+
title={<div>Open in Desktop IDE <PillLabel type="warn" className="font-semibold mt-2 py-0.5 px-2 self-center">Beta</PillLabel></div>}
9596
desc="Choose whether you would like to open your workspace in a desktop IDE instead."
9697
checked={useDesktopIde}
9798
onChange={(evt) => actuallySetUseDesktopIde(evt.target.checked)} />
9899
</div>
99100
{useDesktopIde && <>
100101
<div className="mt-4 space-x-4 flex">
102+
<SelectableCard className="w-36 h-40" title="VS Code" selected={defaultDesktopIde === 'code-desktop'} onClick={() => actuallySetDefaultDesktopIde('code-desktop')}>
103+
<div className="flex justify-center mt-3">
104+
<img className="w-16 filter-grayscale self-center" src={vscode} />
105+
</div>
106+
</SelectableCard>
107+
<SelectableCard className="w-36 h-40" title="VS Code" selected={defaultDesktopIde === 'code-desktop-insiders'} onClick={() => actuallySetDefaultDesktopIde('code-desktop-insiders')}>
108+
<div className="flex justify-center mt-3">
109+
<img className="w-16 filter-grayscale self-center" src={vscodeInsiders} />
110+
</div>
111+
<PillLabel type="warn" className="font-semibold mt-2 py-0.5 px-2 self-center">Insiders</PillLabel>
112+
</SelectableCard>
101113
<SelectableCard className="w-36 h-40" title="IntelliJ IDEA" selected={defaultDesktopIde === 'intellij'} onClick={() => actuallySetDefaultDesktopIde('intellij')}>
102114
<div className="flex justify-center mt-3">
103115
<img className="w-16 filter-grayscale self-center" src={ideaLogo} />
104116
</div>
105-
<PillLabel type="warn" className="font-semibold mt-2 py-0.5 px-2 self-center">Beta</PillLabel>
106117
</SelectableCard>
107118
<SelectableCard className="w-36 h-40" title="GoLand" selected={defaultDesktopIde === 'goland'} onClick={() => actuallySetDefaultDesktopIde('goland')}>
108119
<div className="flex justify-center mt-3">
109120
<img className="w-16 filter-grayscale self-center" src={golandLogo} />
110121
</div>
111-
<PillLabel type="warn" className="font-semibold mt-2 py-0.5 px-2 self-center">Beta</PillLabel>
112122
</SelectableCard>
113123
</div>
114-
<InfoBox className="my-5">While in beta, when you open a workspace using a JetBrains IDE you will need to use the following password: <CodeText>gitpod</CodeText></InfoBox>
124+
<InfoBox className="my-5 max-w-2xl">While in beta, when you open a workspace using a JetBrains IDE you will need to use the following password: <CodeText>gitpod</CodeText></InfoBox>
115125
<p className="text-left w-full text-gray-500">
116126
The <strong>JetBrains desktop IDEs</strong> are currently in beta. <a href="https://github.com/gitpod-io/gitpod/issues/6576" target="gitpod-feedback-issue" rel="noopener" className="gp-link">Send feedback</a> · <a href="https://www.gitpod.io/docs/integrations/jetbrains" target="_blank" rel="noopener" className="gp-link">Documentation</a>
117127
</p>
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
packages:
2+
- name: docker
3+
type: docker
4+
srcs:
5+
- "startup.sh"
6+
- "supervisor-ide-config_stable.json"
7+
deps:
8+
- components/ide/code-desktop/status:app
9+
argdeps:
10+
- imageRepoBase
11+
config:
12+
dockerfile: leeway.Dockerfile
13+
metadata:
14+
helm-component: workspace.desktopIdeImages.codeDesktop
15+
buildArgs:
16+
SUPERVISOR_IDE_CONFIG: supervisor-ide-config_stable.json
17+
image:
18+
- ${imageRepoBase}/ide/code-desktop:${version}
19+
- ${imageRepoBase}/ide/code-desktop:commit-${__git_commit}
20+
- name: docker-insiders
21+
type: docker
22+
srcs:
23+
- "startup.sh"
24+
- "supervisor-ide-config_insiders.json"
25+
deps:
26+
- components/ide/code-desktop/status:app
27+
argdeps:
28+
- imageRepoBase
29+
config:
30+
dockerfile: leeway.Dockerfile
31+
metadata:
32+
helm-component: workspace.desktopIdeImages.codeDesktopInsiders
33+
buildArgs:
34+
SUPERVISOR_IDE_CONFIG: supervisor-ide-config_insiders.json
35+
image:
36+
- ${imageRepoBase}/ide/code-desktop-insiders:${version}
37+
- ${imageRepoBase}/ide/code-desktop-insiders:commit-${__git_commit}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# Copyright (c) 2021 Gitpod GmbH. All rights reserved.
2+
# Licensed under the GNU Affero General Public License (AGPL).
3+
# See License-AGPL.txt in the project root for license information.
4+
5+
FROM scratch
6+
ARG SUPERVISOR_IDE_CONFIG
7+
COPY --chown=33333:33333 ${SUPERVISOR_IDE_CONFIG} /ide-desktop/supervisor-ide-config.json
8+
COPY --chown=33333:33333 startup.sh components-ide-code-desktop-status--app/status /ide-desktop/
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
#!/bin/bash -li
2+
# Copyright (c) 2021 Gitpod GmbH. All rights reserved.
3+
# Licensed under the GNU Affero General Public License (AGPL).
4+
# See License-AGPL.txt in the project root for license information.
5+
6+
set -euo pipefail
7+
8+
# kill background jobs when the script exits
9+
trap "jobs -p | xargs -r kill" SIGINT SIGTERM EXIT
10+
11+
/ide-desktop/status 24000 "$1" "$2"
12+
13+
echo "Desktop IDE startup script exited"
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
packages:
2+
- name: app
3+
type: go
4+
srcs:
5+
- "**/*.go"
6+
- "go.mod"
7+
- "go.sum"
8+
env:
9+
- CGO_ENABLED=0
10+
- GOOS=linux
11+
deps:
12+
- components/supervisor-api/go:lib
13+
config:
14+
packaging: app
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
module github.com/gitpod-io/gitpod/code-desktop/status
2+
3+
go 1.17
4+
5+
require google.golang.org/grpc v1.42.0
6+
7+
require github.com/grpc-ecosystem/grpc-gateway/v2 v2.5.0 // indirect
8+
9+
require (
10+
github.com/gitpod-io/gitpod/supervisor/api v0.0.0-00010101000000-000000000000
11+
github.com/golang/protobuf v1.5.2 // indirect
12+
golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4 // indirect
13+
golang.org/x/sys v0.0.0-20210510120138-977fb7262007 // indirect
14+
golang.org/x/text v0.3.5 // indirect
15+
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1
16+
google.golang.org/genproto v0.0.0-20210617175327-b9e0b3197ced // indirect
17+
google.golang.org/protobuf v1.27.1 // indirect
18+
)
19+
20+
replace github.com/gitpod-io/gitpod/supervisor/api => ../../../supervisor-api/go // leeway

0 commit comments

Comments
 (0)