Elyra Release

Before you begin

Elyra depends on a few different packages that are under the control of the Elyra community and used mostly to abstract integration with other runtimes and components.

Currently, these packages are:

Before you begin creating a new Elyra release, verify if there is a need to release any of these packages, and if necessary, update Elyra to use the new release.

Elyra release process overview

Building an Elyra release consists of the following steps:

  • Updating the changelog.md with the list of changes added to the release
  • Building the Elyra python package.
  • Building Elyra JupyterLab extensions as npm packages.
  • Generate and build the modified packages to enable single-extension deployment.
  • Build and publish multiple docker images

Most of the steps required to prepare and publish a release have been automated through the create-release.sh script, which exposes three goals:

  • The prepare-changelog goal traverse the recent commits to update the changelog.md for a given release.
create release prepare-changelog --version 2.3.0
  • The prepare goal create the release artifacts and make them available locally for validation.
create release prepare --version 2.3.0 --dev-version 2.4.0

– The ‘publish’ goal get a previous prepared release and publish the artifacts to respective repositories.

create release publish --version 2.3.0

Creating minor/patch releases from branches

In the case of creating minor/patch releases from a branch, one will need to modify the release script so that it perform a checkout of the given branch after cloning the Elyra repository:

Update the checkout_code function in the create-release script and add the following at the end of that function:

check_run(['git', 'checkout', '<BRANCH NAME>'], cwd=config.source_dir)
check_run(['git', 'status'], cwd=config.source_dir)

Preparing Elyra release

Generate the release changelog

create release prepare-changelog --version 2.3.0
  • The updated changelog will then be available at ./build/release/elyra as a git commit
    • The release manager should make any necessary adjustments and/or updates before ‘pushing the changelog commit’.
    • Note that the release manage could also push the change log as a new pull request to gather inputs from the community.

Prepare the release artifacts

create-release.py prepare --version 2.0.0 --dev-version 2.1.0 [--rc 0][--beta 0]
  • The artifacts for the new release will then be available at ./build/release/
    • The Elyra folder is the main release
    • The other folders, are the individual extensions packaged as standalone packages
elyra
elyra-code-snippet-extension
elyra-pipeline-editor-extension
elyra-python-editor-extension
elyra-r-editor-extension
  • Test the release
    • Run multiple scenarios, to make sure each extension is working ok
    • Run the covid-notebook scenario
    • Run the NOAA sample

Publish the release

create-release.py publish --version 2.0.0 [--rc 0] [--beta 0]
  • Build and publish container images based on release tag
git pull --rebase
git checkout tags/v2.0.0
make container-images publish-container-images
  • Update dev and latest image tags based on release tag
docker tag elyra/elyra:2.0.0 elyra/elyra:dev && docker push elyra/elyra:dev
docker tag elyra/elyra:2.0.0 elyra/elyra:latest && docker push elyra/elyra:latest
docker tag quay.io/elyra/elyra:2.0.0 quay.io/elyra/elyra:dev && docker push quay.io/elyra/elyra:dev
docker tag quay.io/elyra/elyra:2.0.0 quay.io/elyra/elyra:latest && docker push quay.io/elyra/elyra:latest

docker tag elyra/airflow:2.0.0 elyra/airflow:dev && docker push elyra/airflow:dev
docker tag elyra/airflow:2.0.0 elyra/airflow:latest && docker push elyra/airflow:latest
docker tag quay.io/elyra/airflow:2.0.0 quay.io/elyra/airflow:dev && docker push quay.io/elyra/airflow:dev
docker tag quay.io/elyra/airflow:2.0.0 quay.io/elyra/airflow:latest && docker push quay.io/elyra/airflow:latest

docker tag elyra/kf-notebook:2.0.0 elyra/kf-notebook:dev && docker push elyra/kf-notebook:dev
docker tag elyra/kf-notebook:2.0.0 elyra/kf-notebook:latest && docker push elyra/kf-notebook:latest
docker tag quay.io/elyra/kf-notebook:2.0.0 quay.io/elyra/kf-notebook:dev && docker push quay.io/elyra/kf-notebook:dev
docker tag quay.io/elyra/kf-notebook:2.0.0 quay.io/elyra/kf-notebook:latest && docker push quay.io/elyra/kf-notebook:latest
  • Merge changes for conda-forge
    • https://github.com/conda-forge/elyra-feedstock/pulls
    • https://github.com/conda-forge/elyra-server-feedstock/pulls
    • https://github.com/conda-forge/elyra-code-snippet-extension-feedstock/pulls
    • https://github.com/conda-forge/elyra-pipeline-editor-extension-feedstock/pulls
    • https://github.com/conda-forge/elyra-python-editor-extension-feedstock/pulls
    • https://github.com/conda-forge/elyra-r-editor-extension-feedstock/pulls