Red Hat CodeReady Workspaces (CRW) provides a default browser-based IDE to be used with developer workspaces. However, the architecture is flexible for using other IDEs such as Jupyter Notebooks and Eclipse Dirigible. In this article, you will learn how to create a custom workspace using the community edition of IntelliJ IDEA.
Note: You can also apply the instructions in this article to create a free, self-service Eclipse Che workspace hosted at che.openshift.io.
Creating a custom workspace in CodeReady Workspaces
We will start with the procedure for creating a custom workspace in a connected CodeReady Workspaces environment. See the next section for instructions to set up a custom workspace in an air-gapped environment.
Step 1: Add a custom IntelliJ IDEA workspace
Our first step is to install IntelliJ IDEA from a devfile:
- Open CodeReady Workspaces and select Workspaces from the top-left corner of the dashboard.
- Click Add Workspace.
- Select the Custom Workspace tab if it is not already selected.
- Enter the URL of the CRW 2.5 IntelliJ devfile:
https://raw.githubusercontent.com/redhat-developer/codeready-workspaces/crw-2.5-rhel-8/dependencies/che-editor-intellij-community/devfiles/workspace.yaml. - Click Load devfile.
Figure 1 shows the dialog to add a workspace and load the CRW 2.5 IntelliJ devfile.
Step 2: Create and open the workspace
Scroll down and click Create & Open. After the workspace loads, you will be prompted to accept the license terms for IntelliJ's community edition. After accepting the terms, you will see the Welcome to IntelliJ IDEA window shown in Figure 2.
From here, click Get from Version Control and enter a CodeReady Workspaces project URL. The URL for our example is https://github.com/redhat-developer/codeready-workspaces. You can use the noVNC clipboard to paste the URL from your computer into the IntelliJ dialog, as shown in Figure 3.
Next, click Clone and wait for the project to load. Once it has loaded, you can open a project file and start coding in IntelliJ IDEA.
Additional tips
If you accidentally minimize a window and can’t get it back, see this tip for using the Fluxbox content menu to enable the toolbar. Once the toolbar is enabled, you will be able to find the window again.
If the noVNC interface uses a different language from your primary setting, you likely need to configure your browser’s language settings.
Creating a custom workspace in an air-gapped environment
Creating a custom workspace in an air-gapped environment requires a different approach and a few more steps than the connected environment.
Step 1: Build a custom plug-in registry image
To start, make sure that you've mirrored the image quay.io/crw/plugin-intellij-rhel8:2.5
to your internal registry. Next, you will build a custom plug-in registry image that includes IntelliJ:
- Clone the Git repository that has the CRW 2.5 plug-in definitions:
git clone -b crw-2.5-rhel-8 https://github.com/redhat-developer/codeready-workspaces.git cd codeready-workspaces/dependencies/che-plugin-registry
- Create a new folder that contains the IntelliJ editor definition:
mkdir -p v3/plugins/idea/intellij-community/2020.2.2/
- Create the
meta.yaml
file that contains the IntelliJ editor definition:echo 'apiVersion: v2 publisher: idea name: intellij-community version: 2020.2.2 type: Che Editor displayName: IntelliJ IDEA Community Edition title: IntelliJ IDEA Community Edition (in browser using noVNC) as editor for Eclipse Che description: IntelliJ IDEA Community Edition running on the Web with noVNC icon: https://resources.jetbrains.com/storage/products/intellij-idea/img/meta/intellij-idea_logo_300x300.png category: Editor repository: https://github.com/che-incubator/jetbrains-editor-images firstPublicationDate: "2020-09-25" spec: endpoints: - name: "intellij" public: true targetPort: 8080 attributes: protocol: http type: ide discoverable: false path: /vnc.html?resize=remote&autoconnect=true&reconnect=true containers: - name: ideaic-novnc image: "quay.io/crw/plugin-intellij-rhel8:2.5" mountSources: true volumes: - mountPath: "/JetBrains/IdeaIC" name: idea-configuration ports: - exposedPort: 8080 memoryLimit: "2048M"' > v3/plugins/idea/intellij-community/2020.2.2/meta.yaml
- Specify that the latest version is 2020.2.2:
echo "2020.2.2" > v3/plugins/idea/intellij-community/latest.txt
- Patch the Dockerfile:
echo '--- a/dependencies/che-plugin-registry/build/dockerfiles/Dockerfile +++ b/dependencies/che-plugin-registry/build/dockerfiles/Dockerfile @@ -12,7 +12,7 @@ # Builder: check meta.yamls and create index.json FROM docker.io/alpine:3.11.5 AS builder -RUN apk add --no-cache py-pip jq bash wget skopeo && pip install yq jsonschema +RUN apk add --no-cache py3-pip jq bash wget skopeo && pip3 install yq jsonschema ARG LATEST_ONLY=false ARG USE_DIGESTS=false' | patch build/dockerfiles/Dockerfile
- Build and publish the new plug-in registry image that includes the IntelliJ editor:
REGISTRY_URL=quay.io REGISTRY_ORG=crw REGISTRY_IMAGE_TAG=crw-2.5-rhel-8-intellij ./build.sh --organization ${REGISTRY_ORG} \ --registry ${REGISTRY_URL} \ --tag ${REGISTRY_IMAGE_TAG} docker push ${REGISTRY_URL}/${REGISTRY_ORG}/che-plugin-registry:${REGISTRY_IMAGE_TAG}
- Update the CRW configuration to use the new image for the plug-in registry:
CRW_NAMESPACE=workspaces oc patch checluster codeready-workspaces -n ${CRW_NAMESPACE} \ --type=merge -p \ '{"spec":{"server": {"pluginRegistryImage": "'${REGISTRY_URL}'/'${REGISTRY_ORG}'/che-plugin-registry:'${REGISTRY_IMAGE_TAG}'"}}}'
Once the CheCluster custom resource (CR) is patched, the plug-in registry pod will be updated with the new image.
Step 2: Create the IntelliJ workspace
Next, you'll create the custom workspace in CodeReady Workspaces:
- Open CodeReady Workspaces and select Get Started from the top-left corner of the CRW dashboard.
- Select the Custom Workspace tab if it is not already selected.
- Copy and paste the following into the devfile text area:
apiVersion: 1.0.0 metadata: generateName: che-ideaic components: - type: cheEditor id: idea/intellij-community/2020.2.2
- Click Load devfile.
- Scroll down and click Create & Open.
Conclusion
This article showed you how to create a custom workspace with IntelliJ IDEA in CodeReady Workspaces 2.5. We started with the installation and setup for a connected environment, then presented an air-gapped installation. We hope the instructions are helpful. Please let us know in the comments if you have questions or feedback.
Check out the CodeReady Workspaces product page on Red Hat Developer for the latest news and tutorials.
Acknowledgment
Special thanks to Nick Boldt for his help with this article.
Last updated: November 8, 2023