Skip to content

Commit d418701

Browse files
committed
Enhance JetBrains module config and tests
- Refine README for improved clarity and structure. - Expand automated test coverage across multiple scenarios. - Ensure custom IDE configurations and URL generation are validated. - Simplify handling of parameter defaults and custom builds.
1 parent 09873f9 commit d418701

File tree

3 files changed

+686
-111
lines changed

3 files changed

+686
-111
lines changed

registry/coder/modules/jetbrains/README.md

Lines changed: 105 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
display_name: JetBrains IDEs
3-
description: Add a one-click button to launch JetBrains IDEs from the Coder dashboard.
3+
description: Add JetBrains IDE integrations to your Coder workspaces with configurable options.
44
icon: ../.icons/jetbrains.svg
55
maintainer_github: coder
66
partner_github: jetbrains
@@ -10,16 +10,15 @@ tags: [ide, jetbrains, parameter]
1010

1111
# JetBrains IDEs
1212

13-
This module adds a JetBrains IDE Button to open any workspace with a single click.
13+
This module adds JetBrains IDE integrations to your Coder workspaces, allowing users to launch IDEs directly from the dashboard or pre-configure specific IDEs for immediate use.
1414

1515
```tf
1616
module "jetbrains" {
1717
count = data.coder_workspace.me.start_count
1818
source = "registry.coder.com/coder/jetbrains/coder"
1919
version = "1.0.0"
2020
agent_id = coder_agent.example.id
21-
folder = "/home/coder/example"
22-
default = "GO"
21+
folder = "/home/coder/project"
2322
}
2423
```
2524

@@ -31,58 +30,134 @@ module "jetbrains" {
3130

3231
## Examples
3332

34-
### Use the latest version of each IDE
33+
### Pre-configured Mode (Direct App Creation)
34+
35+
When `default` contains IDE codes, those IDEs are created directly without user selection:
3536

3637
```tf
3738
module "jetbrains" {
3839
count = data.coder_workspace.me.start_count
39-
source = "registry.coder.com/modules/jetbrains/coder"
40+
source = "registry.coder.com/coder/jetbrains/coder"
4041
version = "1.0.0"
4142
agent_id = coder_agent.example.id
42-
folder = "/home/coder/example"
43-
options = ["IU", "PY"]
44-
default = ["IU"]
45-
latest = true
43+
folder = "/home/coder/project"
44+
default = ["GO", "IU"] # Pre-configure GoLand and IntelliJ IDEA
4645
}
4746
```
4847

49-
### Use the latest EAP version
48+
### User Choice with Limited Options
5049

5150
```tf
5251
module "jetbrains" {
5352
count = data.coder_workspace.me.start_count
54-
source = "registry.coder.com/modules/jetbrains/coder"
53+
source = "registry.coder.com/coder/jetbrains/coder"
5554
version = "1.0.0"
5655
agent_id = coder_agent.example.id
57-
folder = "/home/coder/example"
58-
options = ["GO", "WS"]
59-
default = ["GO"]
60-
latest = true
61-
channel = "eap"
56+
folder = "/home/coder/project"
57+
# Show parameter with limited options
58+
options = ["GO", "PY", "WS"] # Only these IDEs are available for selection
6259
}
6360
```
6461

65-
### Custom base link
62+
### Early Access Preview (EAP) Versions
63+
64+
```tf
65+
module "jetbrains" {
66+
count = data.coder_workspace.me.start_count
67+
source = "registry.coder.com/coder/jetbrains/coder"
68+
version = "1.0.0"
69+
agent_id = coder_agent.example.id
70+
folder = "/home/coder/project"
71+
default = ["GO", "RR"]
72+
channel = "eap" # Use Early Access Preview versions
73+
major_version = "2025.2" # Specific major version
74+
}
75+
```
76+
77+
### Custom IDE Configuration
78+
79+
```tf
80+
module "jetbrains" {
81+
count = data.coder_workspace.me.start_count
82+
source = "registry.coder.com/coder/jetbrains/coder"
83+
version = "1.0.0"
84+
agent_id = coder_agent.example.id
85+
folder = "/workspace/project"
86+
87+
# Custom IDE metadata (display names and icons)
88+
ide_config = {
89+
"GO" = {
90+
name = "GoLand"
91+
icon = "/custom/icons/goland.svg"
92+
build = "251.25410.140" # Note: build numbers are fetched from API, not used
93+
}
94+
"PY" = {
95+
name = "PyCharm"
96+
icon = "/custom/icons/pycharm.svg"
97+
build = "251.23774.211"
98+
}
99+
"WS" = {
100+
name = "WebStorm"
101+
icon = "/icon/webstorm.svg"
102+
build = "251.23774.210"
103+
}
104+
}
105+
}
106+
```
107+
108+
### Offline Mode
109+
110+
For organizations with internal JetBrains API mirrors:
111+
112+
```tf
113+
module "jetbrains" {
114+
count = data.coder_workspace.me.start_count
115+
source = "registry.coder.com/coder/jetbrains/coder"
116+
version = "1.0.0"
117+
agent_id = coder_agent.example.id
118+
folder = "/home/coder/project"
66119
67-
Due to the highest priority of the `ide_download_link` parameter in the `(jetbrains-gateway://...` within IDEA, the pre-configured download address will be overridden when using [IDEA's offline mode](https://www.jetbrains.com/help/idea/fully-offline-mode.html). Therefore, it is necessary to configure the `download_base_link` parameter for the `jetbrains_gateway` module to change the value of `ide_download_link`.
120+
default = ["GO", "IU"]
121+
122+
# Custom API endpoints
123+
releases_base_link = "https://jetbrains-api.internal.company.com"
124+
download_base_link = "https://jetbrains-downloads.internal.company.com"
125+
}
126+
```
127+
128+
### Single IDE for Specific Use Case
68129

69130
```tf
70-
module "jetbrains_gateway" {
71-
count = data.coder_workspace.me.start_count
72-
source = "registry.coder.com/modules/jetbrains-gateway/coder"
73-
version = "1.0.0"
74-
agent_id = coder_agent.example.id
75-
folder = "/home/coder/example"
76-
options = ["GO", "WS"]
77-
releases_base_link = "https://releases.internal.site/"
78-
download_base_link = "https://download.internal.site/"
79-
default = ["GO"]
131+
module "jetbrains_goland" {
132+
count = data.coder_workspace.me.start_count
133+
source = "registry.coder.com/coder/jetbrains/coder"
134+
version = "1.0.0"
135+
agent_id = coder_agent.example.id
136+
folder = "/go/src/project"
137+
138+
default = ["GO"] # Only GoLand
139+
140+
# Specific version for consistency
141+
major_version = "2025.1"
142+
channel = "release"
80143
}
81144
```
82145

146+
## Behavior
147+
148+
### Parameter vs Direct Apps
149+
150+
- **`default = []` (empty)**: Creates a `coder_parameter` allowing users to select IDEs from `options`
151+
- **`default` with values**: Skips parameter and directly creates `coder_app` resources for the specified IDEs
152+
153+
### Version Resolution
154+
155+
- Build numbers are always fetched from the JetBrains API for the latest compatible versions
156+
- `major_version` and `channel` control which API endpoint is queried
157+
83158
## Supported IDEs
84159

85-
JetBrains supports remote development for the following IDEs:
160+
All JetBrains IDEs with remote development capabilities:
86161

87162
- [GoLand (`GO`)](https://www.jetbrains.com/go/)
88163
- [WebStorm (`WS`)](https://www.jetbrains.com/webstorm/)

0 commit comments

Comments
 (0)