coder / modules

A collection of Terraform Modules to work with Coder.
https://registry.coder.com
Apache License 2.0
23 stars 19 forks source link

feat(Jetbrains-Gateway): Specify IDE Version or Latest #217

Open djarbz opened 2 months ago

djarbz commented 2 months ago

I would like to request an option to use a specific or latest version of the selected IDE.

For example:

michaelbrewer commented 2 months ago

I am not sure if Jetbrians has a handy api to fetch the latest versions and build number.

djarbz commented 2 months ago

I found one! Shows all (recent) versions as well as a marker for the latest!

https://data.services.jetbrains.com/help-versions?product=go

matifali commented 2 months ago

I found one! Shows all (recent) versions as well as a marker for the latest!

data.services.jetbrains.com/help-versions?product=go

This doesn't list the build number that is needed to construct the download URL.

djarbz commented 2 months ago

Well shoot, I'll keep looking...

djarbz commented 2 months ago

This one looks promising! https://data.services.jetbrains.com/products?code=GO&release.type=release

We can change the code=GO to match the selected IDE and under releases the first entry is the latest release with download links, version number, and build number, along with a bunch of other goodies!

matifali commented 2 months ago

So we should be able to get the items using download link: .[0].releases[0].downloads.linux.link build: .[0].releases[0].build version: .[0].releases[0].version

and HTTP provider.

djarbz commented 2 months ago

Looks like it, I'm wondering if we should default to the latest version and allow end users to optionally specify a specific version?

michaelbrewer commented 2 months ago

Default to fetch will slow down builds and not work for air gapped environments.

djarbz commented 2 months ago

Ok, so can we trigger the HTTP query pragmatically after the workspace owner selects and IDE and if they want the latest version? I'm not familiar enough with Terraform yet to know the inner workings of data access like that.

I also found this endpoint that will only provide the latest release, but we would need to call it for each IDE. I think this would be a quick enough API call that we could default to latest with a fallback? https://data.services.jetbrains.com/products/releases?code=GO&latest=true&type=release

Does this module even work in air gapped systems? Coder would need internet access to download the IDE anyways. Unless the system has the IDE pre-installed? In which case, perhaps we should have a backend parameter to override the IDE, version, and build number?

michaelbrewer commented 2 months ago

Air-gapped solutions would self-host terraform modules. But i like the idea that you can select for "latest" and it would dynamically look it up.

michaelbrewer commented 2 months ago

Actually, I am not sure how air-gapped solutions would allow for JetBrains download in the first place. 😆. You would have to pre-install the idea on the running workspace.

djarbz commented 2 months ago

Actually, I am not sure how air-gapped solutions would allow for JetBrains download in the first place. 😆. You would have to pre-install the idea on the running workspace.

That's kind of what I was getting at... But if you are on an air gapped system with a pre-installed IDE, wouldn't it be easier to manually specify the Gateway link to match the version than to match what is specified in this module?

IMHO I don't think this module is useful in an air gapped system.

matifali commented 2 months ago

226 addresses points 2 and 3 but needs to handle 1. I need help finding an easy way to get details of a specific version. It can be done with parsing and some regex matching. So, reopening this issue. if anyone wants to do that.

djarbz commented 2 months ago

@matifali

I found this endpoint that will return the info for a specific release/eap version.

https://data.services.jetbrains.com/products?code=GO&type=release&majorVersion=2024.1

matifali commented 2 months ago

Great. This would work. I won't be able to do this in next few weeks. Feel free to submit a PR.