Skip to content

impl: support for self-hosted IDE feed#290

Open
fioan89 wants to merge 1 commit intomainfrom
impl-support-for-self-hosted-ide-feed
Open

impl: support for self-hosted IDE feed#290
fioan89 wants to merge 1 commit intomainfrom
impl-support-for-self-hosted-ide-feed

Conversation

@fioan89
Copy link
Copy Markdown
Collaborator

@fioan89 fioan89 commented Apr 9, 2026

Currently in air-gapped environments, the plugin's two modes for resolving JetBrains IDE versions are both insufficient at scale:

  • online mode fetches feeds from a hardcoded URL (https://data.services.jetbrains.com/), which is unreachable in air-gapped networks.
  • offline mode (--offline-mode) reads local release.json/eap.json files from each client machine's data directory, requiring manual distribution of feed files to every developer workstation.

Organizations running JetBrains IDE Services in an air-gapped network have no way to point the plugin at their internal instance for feed resolution.

This PR introduces support for a configuration setting where a base URL pointing to a self-hosted web server serving data feeds very similar to data.services.jetbrains.com. Similar query path and same data structures are used. The fallback sequence is the following:

  • if --offline-mode is present we first try to read the local release.json/eap.json. If they are not found we fall back to the ide feed base URL if it is configured.
  • in online mode we use the ide feed base URL if it is configured, data.services.jetbrains.com otherwise.

Currently in air-gapped environments, the plugin's two modes
for resolving JetBrains IDE versions are both insufficient at scale:

- online mode fetches feeds from a hardcoded URL (https://data.services.jetbrains.com/),
  which is unreachable in air-gapped networks.
- offline mode (--offline-mode) reads local release.json/eap.json files from each client
  machine's data directory, requiring manual distribution of feed files to every developer workstation.

Organizations running JetBrains IDE Services in an air-gapped network have no way to point
the plugin at their internal instance for feed resolution.

This PR introduces support for a configuration setting where a base URL pointing to a self-hosted
web server serving data feeds very similar to data.services.jetbrains.com. Similar query path and
same data structures are used. The fallback sequence is the following:

- if --offline-mode is present we first try to read the local release.json/eap.json. If they are
  not found we fall back to the ide feed base URL if it is configured.
- in online mode we use the ide feed base URL if it is configured, data.services.jetbrains.com otherwise.
@fioan89 fioan89 requested review from code-asher and matifali April 9, 2026 21:20
Comment on lines +88 to +89
context.logger.info("No local feed files found, falling back to custom IDE feed URL")
loadIdesOnline()
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is definitely a big nit so feel free to ignore, but it feels weird to call something called online under a block of isOffline.

Wonder if we should do something like loadIdesFromFeed(feedUrl) or something, where passing in the feed URL would make it obvious that we were loading from a user-provided value or from jetbrains.com?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants