Chapter 3. Working in code-server Code-server is a web-based interactive development environment supporting multiple programming languages, including Python, for working with Jupyter notebooks. With the code-server workbench image, you can customize your workbench environment to meet your needs using a variety of extensions to add new languages, themes, debuggers, and connect to additional services. For more information, see code-server in GitHub . Note Elyra-based pipelines are not available with the code-server workbench image. 3.1. Creating code-server workbenches You can create a blank Jupyter notebook or import a Jupyter notebook in code-server from several different sources. 3.1.1. Creating a workbench When you create a workbench, you specify an image (an IDE, packages, and other dependencies). You can also configure connections, cluster storage, and add container storage. Prerequisites You have logged in to Red Hat OpenShift AI. If you use OpenShift AI groups, you are part of the user group or admin group (for example, rhoai-users or rhoai-admins ) in OpenShift. You created a project. If you created a Simple Storage Service (S3) account outside of Red Hat OpenShift AI and you want to create connections to your existing S3 storage buckets, you have the following credential information for the storage buckets: Endpoint URL Access key Secret key Region Bucket name For more information, see Working with data in an S3-compatible object store . Procedure From the OpenShift AI dashboard, click Data Science Projects . The Data Science Projects page opens. Click the name of the project that you want to add the workbench to. A project details page opens. Click the Workbenches tab. Click Create workbench . The Create workbench page opens. In the Name field, enter a unique name for your workbench. Optional: If you want to change the default resource name for your workbench, click Edit resource name . The resource name is what your resource is labeled in OpenShift. Valid characters include lowercase letters, numbers, and hyphens (-). The resource name cannot exceed 30 characters, and it must start with a letter and end with a letter or number. Note: You cannot change the resource name after the workbench is created. You can edit only the display name and the description. Optional: In the Description field, enter a description for your workbench. In the Notebook image section, complete the fields to specify the workbench image to use with your workbench. From the Image selection list, select a workbench image that suits your use case. A workbench image includes an IDE and Python packages (reusable code). Optionally, click View package information to view a list of packages that are included in the image that you selected. If the workbench image has multiple versions available, select the workbench image version to use from the Version selection list. To use the latest package versions, Red Hat recommends that you use the most recently added image. Note You can change the workbench image after you create the workbench. In the Deployment size section, from the Container size list, select a container size for your server. The container size specifies the number of CPUs and the amount of memory allocated to the container, setting the guaranteed minimum (request) and maximum (limit) for both. Optional: In the Environment variables section, select and specify values for any environment variables. Setting environment variables during the workbench configuration helps you save time later because you do not need to define them in the body of your notebooks, or with the IDE command line interface. If you are using S3-compatible storage, add these recommended environment variables: AWS_ACCESS_KEY_ID specifies your Access Key ID for Amazon Web Services. AWS_SECRET_ACCESS_KEY specifies your Secret access key for the account specified in AWS_ACCESS_KEY_ID . OpenShift AI stores the credentials as Kubernetes secrets in a protected namespace if you select Secret when you add the variable. In the Cluster storage section, configure the storage for your workbench. Select one of the following options: Create new persistent storage to create storage that is retained after you shut down your workbench. Complete the relevant fields to define the storage: Enter a name for the cluster storage. Enter a description for the cluster storage. Select a storage class for the cluster storage. Note You cannot change the storage class after you add the cluster storage to the workbench. Under Persistent storage size , enter a new size in gibibytes or mebibytes. Use existing persistent storage to reuse existing storage and select the storage from the Persistent storage list. Optional: You can add a connection to your workbench. A connection is a resource that contains the configuration parameters needed to connect to a data source or sink, such as an object storage bucket. You can use storage buckets for storing data, models, and pipeline artifacts. You can also use a connection to specify the location of a model that you want to deploy. In the Connections section, use an existing connection or create a new connection: Use an existing connection as follows: Click Attach existing connections . From the Connection list, select a connection that you previously defined. Create a new connection as follows: Click Create connection . The Add connection dialog appears. From the Connection type drop-down list, select the type of connection. The Connection details section appears. If you selected S3 compatible object storage in the preceding step, configure the connection details: In the Connection name field, enter a unique name for the connection. Optional: In the Description field, enter a description for the connection. In the Access key field, enter the access key ID for the S3-compatible object storage provider. In the Secret key field, enter the secret access key for the S3-compatible object storage account that you specified. In the Endpoint field, enter the endpoint of your S3-compatible object storage bucket. In the Region field, enter the default region of your S3-compatible object storage account. In the Bucket field, enter the name of your S3-compatible object storage bucket. Click Create . If you selected URI in the preceding step, configure the connection details: In the Connection name field, enter a unique name for the connection. Optional: In the Description field, enter a description for the connection. In the URI field, enter the Uniform Resource Identifier (URI). Click Create . Click Create workbench . Verification The workbench that you created appears on the Workbenches tab for the project. Any cluster storage that you associated with the workbench during the creation process appears on the Cluster storage tab for the project. The Status column on the Workbenches tab displays a status of Starting when the workbench server is starting, and Running when the workbench has successfully started. Optional: Click the Open link to open the IDE in a new window. 3.1.2. Uploading an existing notebook file to code-server from local storage You can load an existing notebook from local storage into code-server to continue work, or adapt a project for a new use case. Prerequisites You have a running code-server workbench. You have a notebook file in your local storage. Procedure In your code-server window, from the Activity Bar, select the menu icon ( ) File Open File . In the Open File dialog, click the Show Local button. Locate and select the notebook file and then click Open . The file is displayed in the code-server window. Save the file and then push the changes to your repository. Verification The notebook file appears in the code-server Explorer view. You can open the notebook file in the code-server window. 3.2. Collaborating on workbenches in code-server by using Git If your notebooks or other files are stored in Git version control, you can clone a Git repository to work with them in code-server. When you are ready, you can push your changes back to the Git repository so that others can review or use your models. 3.2.1. Uploading an existing notebook file from a Git repository by using code-server You can use the code-server user interface to clone a Git repository into your workspace to continue your work or integrate files from an external project. Prerequisites You have a running code-server workbench. You have read access for the Git repository you want to clone. Procedure Copy the HTTPS URL for the Git repository. In GitHub, click ⤓ Code HTTPS and then click the Copy URL to clipboard icon. In GitLab, click Code and then click the Copy URL icon under Clone with HTTPS . In your code-server window, from the Activity Bar, select the menu icon ( ) View Command Palette . In the Command Palette, enter Git: Clone , and then select Git: Clone from the list. Paste the HTTPS URL of the repository that contains your notebook, and then press Enter. If prompted, enter your username and password for the Git repository. Select a folder to clone the repository into, and then click OK . When the repository is cloned, a dialog appears asking if you want to open the cloned repository. Click Open in the dialog. Verification Check that the contents of the repository are visible in the code-server Explorer view, or run the ls command in the terminal to verify that the repository shows as a directory. 3.2.2. Uploading an existing notebook file to code-server from a Git repository by using the CLI You can use the command line interface to clone a Git repository into your workspace to continue your work or integrate files from an external project. Prerequisites You have a running code-server workbench. Procedure Copy the HTTPS URL for the Git repository. In GitHub, click ⤓ Code HTTPS and then click the Copy URL to clipboard icon. In GitLab, click Code and then click the Copy URL icon under Clone with HTTPS . In your code-server window, from the Activity Bar, select the menu icon ( ) Terminal New Terminal to open a terminal window. Enter the git clone command: Replace <git-clone-URL> with the HTTPS URL, for example: Verification Check that the contents of the repository are visible in the code-server Explorer view, or run the ls command in the terminal to verify that the repository shows as a directory. 3.2.3. Updating your project in code-server with changes from a remote Git repository You can pull changes made by other users into your workbench from a remote Git repository. Prerequisites You have configured the remote Git repository. You have imported the Git repository into code-server, and the contents of the repository are visible in the Explorer view in code-server. You have permissions to pull files from the remote Git repository to your local repository. You have a running code-server workbench. Procedure In your code-server window, from the Activity Bar, click the Source Control icon ( ). Click the Views and More Actions button ( ... ), and then select Pull . Verification You can view the changes pulled from the remote repository in the Source Control pane. 3.2.4. Pushing project changes in code-server to a Git repository To build and deploy your application in a production environment, upload your work to a remote Git repository. Prerequisites You have a running code-server workbench. You have added the relevant Git repository in code-server. You have permission to push changes to the relevant Git repository. You have installed the Git version control extension. Procedure In your code-server window, from the Activity Bar, select the menu icon ( ) File Save All to save any unsaved changes. Click the Source Control icon ( ) to open the Source Control pane. Confirm that your changed files appear under Changes . to the Changes heading, click the Stage All Changes button (+). The staged files move to the Staged Changes section. In the Message field, enter a brief description of the changes you made. to the Commit button, click the More Actions... button, and then click Commit & Sync . If prompted, enter your Git credentials and click OK . Verification Your most recently pushed changes are visible in the remote Git repository. 3.3. Managing Python packages in code-server In code-server, you can view the Python packages that are installed on your workbench image and install additional packages. 3.3.1. Viewing Python packages installed on your code-server workbench You can check which Python packages are installed on your workbench and which version of the package you have by running the pip tool in a terminal window. Prerequisites You have a running code-server workbench. Procedure In your code-server window, from the Activity Bar, select the menu icon ( ) Terminal New Terminal to open a terminal window. Enter the pip list command. Verification The output shows an alphabetical list of all installed Python packages and their versions. For example, if you use the pip list command immediately after creating a notebook server that uses the Minimal image, the first packages shown are similar to the following: 3.3.2. Installing Python packages on your code-server workbench You can install Python packages that are not part of the default workbench image by adding the package and the version to a requirements.txt file and then running the pip install command in a terminal window. Note Although you can install packages directly, it is recommended that you use a requirements.txt file so that the packages stated in the file can be easily re-used across different notebooks. Prerequisites You have a running code-server workbench. Procedure In your code-server window, from the Activity Bar, select the menu icon ( ) File New Text File to create a new text file. Add the packages to install to the text file. You can specify the exact version to install by using the == (equal to) operator, for example: Note Red Hat recommends specifying exact package versions to enhance the stability of your workbench over time. New package versions can introduce undesirable or unexpected changes in your environment's behavior. To install multiple packages at the same time, place each package on a separate line. Save the text file as requirements.txt . From the Activity Bar, select the menu icon ( ) Terminal New Terminal to open a terminal window. Install the packages in requirements.txt to your server by using the following command: Important The pip install command installs the package on your workbench. However, you must run the import statement to use the package in your code. Verification Confirm that the packages in the requirements.txt file appear in the list of packages installed on the workbench. See Viewing Python packages installed on your code-server workbench for details. 3.4. Installing extensions with code-server With the code-server workbench image, you can customize your code-server environment by using extensions to add new languages, themes, and debuggers, and to connect to additional services. You can also enhance the efficiency of your data science work with extensions for syntax highlighting, auto-indentation, and bracket matching. For details about the third-party extensions that you can install with code-server, see the Open VSX Registry . Prerequisites You are logged in to Red Hat OpenShift AI. You have created a data science project that has a code-server workbench. Procedure From the OpenShift AI dashboard, click Data Science Projects . The Data Science Projects page opens. Click the name of the project containing the code-server workbench you want to start. A project details page opens. Click the Workbenches tab. If the status of the workbench that you want to use is Running , skip to the step. If the status of the workbench is Stopped , in the Status column for the workbench, click Start . The Status column changes from Stopped to Starting when the workbench server is starting, and then to Running when the workbench has successfully started. Click the Open link to the workbench. The code-server window opens. In the Activity Bar, click the Extensions icon ( ). Search for the name of the extension you want to install. Click Install to add the extension to your code-server environment. Verification In the Browser - Installed list on the Extensions panel, confirm that the extension you installed is listed.

Commands:
git clone <git-clone-URL>
git clone https://github.com/example/myrepo.git Cloning into myrepo remote: Enumerating objects: 11, done. remote: Counting objects: 100% (11/11), done. remote: Compressing objects: 100% (10/10), done. remote: Total 2821 (delta 1), reused 5 (delta 1), pack-reused 2810 Receiving objects: 100% (2821/2821), 39.17 MiB | 23.89 MiB/s, done. Resolving deltas: 100% (1416/1416), done.
pip list
Package Version ------------------------ ---------- asttokens 2.4.1 boto3 1.34.162 botocore 1.34.162 cachetools 5.5.0 certifi 2024.8.30 charset-normalizer 3.4.0 comm 0.2.2 contourpy 1.3.0 cycler 0.12.1 debugpy 1.8.7
altair
altair==4.1.0
pip install -r requirements.txt
import altair