Ouranosinc / PAVICS-e2e-workflow-tests

Test user-level workflow.
Apache License 2.0
0 stars 2 forks source link

Jupyter docker: new full build with latest of almost everything except xclim and ravenpy to smooth transition #121

Closed tlvu closed 4 months ago

tlvu commented 1 year ago

Overview

This new full build has latest of almost everything except xclim and ravenpy as intermediate step to smooth transition to pandas 2.2 freq strings changes.

Changes

major upgrade from v2 to v3

major upgrade from v1 to v2

major upgrade to v1

major upgrade from v1 to v2

Python 3.9 to 3.11



## Test

- Deployed as "beta" image in production for bokeh visualization performance regression testing.
- Manual test notebook https://github.com/Ouranosinc/PAVICS-landing/blob/master/content/notebooks/climate_indicators/PAVICStutorial_ClimateDataAnalysis-5Visualization.ipynb for bokeh visualization performance and it looks fine.
- Jenkins build:
  - Default notebooks, all passed: https://github.com/Ouranosinc/PAVICS-e2e-workflow-tests/blob/54792e6510adfcd1bb21e1bd31fdfa36c5c634e0/docker/saved_buildout/jenkins-buildlogs-default.txt
  - Raven notebooks, only known `HydroShare_integration.ipynb` failing: https://github.com/Ouranosinc/PAVICS-e2e-workflow-tests/blob/931cfc924a147d07b59e88badff9f170e852a03b/docker/saved_buildout/jenkins-buildlogs-raven.txt

## Related Issue / Discussion

- Matching notebook fixes:
  - Pavics-sdi: PR https://github.com/Ouranosinc/pavics-sdi/pull/321
  - Finch: PR url: None
  - PAVICS-landing: PR https://github.com/Ouranosinc/PAVICS-landing/pull/78
  - RavenPy: PR https://github.com/CSHS-CWRA/RavenPy/pull/356
  - Resolves https://github.com/Ouranosinc/PAVICS-landing/issues/65
  - Resolves https://github.com/Ouranosinc/PAVICS-landing/issues/66

- Deployment to PAVICS: https://github.com/bird-house/birdhouse-deploy/pull/453

- Jenkins-config changes for new notebooks: PR url: None

- Other issues found while working on this one
  - https://github.com/computationalmodelling/nbval/issues/204
  - https://github.com/jupyterlab-contrib/jupyter-archive/issues/132
  - https://github.com/CSHS-CWRA/RavenPy/issues/357
  - https://github.com/CSHS-CWRA/RavenPy/issues/361
  - https://github.com/CSHS-CWRA/RavenPy/issues/362

- Previous release: PR https://github.com/Ouranosinc/PAVICS-e2e-workflow-tests/pull/134

## Additional Information

Full diff conda env export:
https://github.com/Ouranosinc/PAVICS-e2e-workflow-tests/compare/81deb99a4111b9c0945e26e06809be2d90ea59b0...931cfc924a147d07b59e88badff9f170e852a03b#diff-e8f2a6a53085ae29bb7cedc701c1d345a330651ae971555e85a5c005e94f4cd9

Full new conda env export:
https://github.com/Ouranosinc/PAVICS-e2e-workflow-tests/blob/931cfc924a147d07b59e88badff9f170e852a03b/docker/saved_buildout/conda-env-export.yml

DockerHub build log
https://github.com/Ouranosinc/PAVICS-e2e-workflow-tests/blob/931cfc924a147d07b59e88badff9f170e852a03b/docker/saved_buildout/docker-buildlogs.txt
tlvu commented 4 months ago

@tlogan2000 The new Jupyter env is live. You can send announcement to our users to restart their server to get the new version.

The previous "stable" version is now the new "previous" version. I've also added a "last-py38-stable-version" to preserve our last Python 3.8 env in case our user need an even older version to reproduce their work.

20240509_141805

Zeitsperre commented 4 months ago

We need to cull a few of those entries. beta, alpha, gamma, and last are a lot of development options for images.

tlvu commented 4 months ago

We need to cull a few of those entries. beta, alpha, gamma, and last are a lot of development options for images.

Well beta, alpha, gamma are placeholders when we have many test candidates with slight variations to test for bug fixes. As we have just experienced, it's pretty labor intensive to release a fully tested/certified Jupyter env. So all those placeholders does help during the testing phase.

Previously we deploy those test versions on our staging host but since the staging host do not have all the data, we could not fully test those environments. And the only 100% sure way to not have any surprise is to test directly on the production host ! I've seen case where the JupyterHub is unable to launch the JupyterLab server ! Having the test env on the production host eliminate this issue.

All the app specific envs are for our apps to reproduce the exact env of their runtime. Not all of them, as you can see, are on the "Stable" image. Since their have their own version, they are not force to update at the same time we release a new Stable version. Just ensuring all the notebooks passed is way too labor intensive, I do not want to add all the apps to the certification list !

The last one are an ancien remark from David. We will eventually have last-py39, last-py311 ...

So that's the reason for all those multiple entries.

tlvu commented 4 months ago

We need to cull a few of those entries. beta, alpha, gamma, and last are a lot of development options for images.

Well beta, alpha, gamma are placeholders when we have many test candidates with slight variations to test for bug fixes. As we have just experienced, it's pretty labor intensive to release a fully tested/certified Jupyter env. So all those placeholders does help during the testing phase.

Previously we deploy those test versions on our staging host but since the staging host do not have all the data, we could not fully test those environments. And the only 100% sure way to not have any surprise is to test directly on the production host ! I've seen case where the JupyterHub is unable to launch the JupyterLab server ! Having the test env on the production host eliminate this issue.

All the app specific envs are for our apps to reproduce the exact env of their runtime. Not all of them, as you can see, are on the "Stable" image. Since their have their own version, they are not force to update at the same time we release a new Stable version. Just ensuring all the notebooks passed is way too labor intensive, I do not want to add all the apps to the certification list !

The last one are an ancien remark from David. We will eventually have last-py39, last-py311 ...

So that's the reason for all those multiple entries.

Oh forgot to add that we are trying to release more often so we are continuous trying to test newer versions. Those beta, alpha, gamma will continuously be useful.