This section describes the steps necessary to build Elyra in a development environment.
Setting up your development environment¶
Install Miniconda Download and install a Python 3 version of Miniconda according to your Operating System
Create a new Python environment
conda create -n <env-name> python
The python version of your environment will match the miniconda version you installed. You can override the default by explicitly setting
python=3.7, for example.
Activate the new environment
conda activate <env-name>
Verify your miniconda environment
python --version which python # Displays current python path pip3 --version which pip3
Python path must be under miniconda envs folder. Confirm pip3 location matches where miniconda is installed.
conda install -y -c conda-forge/label/main nodejs
conda install -y -c conda-forge/label/main yarn
Setting up your Elyra Github repository¶
Elyra is divided in two parts, a collection of Jupyter Notebook backend extensions,
and their respective JupyterLab UI extensions. Our JupyterLab extensions are located in our
Build & Installation¶
make to automate some of the development workflow tasks.
make command with no task specified will provide a list of the currently supported tasks.
$ make clean Make a clean source tree and uninstall extensions container-images Build all container images docs Build docs install-all Build and install, including examples install-examples Install example pipeline components install-server Build and install backend install Build and install lint Run linters publish-container-images Publish all container images release Build wheel file for release test Run all tests (backend, frontend and cypress integration tests) watch Watch packages. For use alongside jupyter lab --watch
You can build and install all Elyra packages with:
make clean install
You can check that the notebook server extension was successfully installed with:
jupyter serverextension list
You can check that the JupyterLab extension was successfully installed with:
jupyter labextension list
NOTE: When switching between Elyra major versions, it is recommended to clean your JupyterLab environment before a build. The
clean-jupyterlabremoves your JupyterLab packages and completely deletes your Jupyter workspace. Make sure to backup any important data in your environment before running the script. To clean your environment and install the latest JupyterLab:
etc/scripts/clean-jupyterlab.shTo specify a JupyterLab version to be installed:
etc/scripts/clean-jupyterlab.sh --version 2.2.9
Parallel Development with @elyra/pipeline-editor¶
You can install Elyra using a local build of @elyra/pipeline-editor with:
make clean dev-link install
After making code changes to the back-end, you can re-build Elyra’s Python package with:
This command builds and installs the updated Python package independently, skipping any UI component build.
Restart JupyterLab to pick up the new code changes.
Front-end Incremental Development¶
Elyra supports incremental development using
--watch. This allows you to make code changes to
front-end packages and see them without running
make install again.
After installation run the following to watch for code changes and rebuild automatically:
Then in a separate terminal, using the same Python environment, start JupyterLab in watch mode:
jupyter lab --watch
When in watch mode JupyterLab will watch for changes in the build of each package and rebuild. To see your changes just refresh JupyterLab in your browser.
NOTE: JupyterLab watch mode will not pick up changes in package dependencies like
services. So when making changes to services you will need to stop and restart
jupyter lab --watchand not just refresh your browser.
Building the Elyra Container Image¶
Elyra’s container image can be built in two ways (production and development):
By default, the command above will build a container image (development) with the changes that exist in your local branch.
From master/main branch:
make elyra-image TAG=3.7.0
or after checking out a git tag e.g.
git checkout tags/v3.7.0
In order to build from a particular release (production), you can pass a
TAG parameter to the make command
or you can checkout the respective tagged release and omit the