From 58bbdad7f7e9e52476ba83132be53af2f6192824 Mon Sep 17 00:00:00 2001 From: Austin Macdonald Date: Tue, 6 Aug 2024 17:20:46 -0500 Subject: [PATCH 1/9] Document inotify config for kind deployments Fixes #495 --- docs/docs/how-tos/nebari-local.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/docs/docs/how-tos/nebari-local.md b/docs/docs/how-tos/nebari-local.md index 15335b4a..46543279 100644 --- a/docs/docs/how-tos/nebari-local.md +++ b/docs/docs/how-tos/nebari-local.md @@ -159,6 +159,15 @@ security: tag: sha-b4a2d1e ``` +### Increase fs watches + +Depending on your host system, you may need to increase the `fs.inotify.max_user_watches` and +`fs.inotify.max_user_instances kernel parameters` if you see a `too many open files` in the logs of +a failing pod. + +See the [kind troubleshooting +docs](https://kind.sigs.k8s.io/docs/user/known-issues/#pod-errors-due-to-too-many-open-files) + ## Deploying Nebari With the `nebari-config.yaml` configuration file now created, Nebari can be deployed for the first time with: From 8a2cdd862781bc3b3d23f0fb5607323178dadce7 Mon Sep 17 00:00:00 2001 From: Austin Macdonald Date: Thu, 26 Sep 2024 11:12:14 -0500 Subject: [PATCH 2/9] Add user watches and instances snippet --- docs/docs/how-tos/nebari-local.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docs/docs/how-tos/nebari-local.md b/docs/docs/how-tos/nebari-local.md index 46543279..bba889af 100644 --- a/docs/docs/how-tos/nebari-local.md +++ b/docs/docs/how-tos/nebari-local.md @@ -165,6 +165,11 @@ Depending on your host system, you may need to increase the `fs.inotify.max_user `fs.inotify.max_user_instances kernel parameters` if you see a `too many open files` in the logs of a failing pod. +```bash +sudo sysctl fs.inotify.max_user_watches=524288 +sudo sysctl fs.inotify.max_user_instances=512 +``` + See the [kind troubleshooting docs](https://kind.sigs.k8s.io/docs/user/known-issues/#pod-errors-due-to-too-many-open-files) From 1b0ae94b73e4fc307b90cd008be30ea9d7c03e15 Mon Sep 17 00:00:00 2001 From: Austin Macdonald Date: Thu, 26 Sep 2024 11:13:16 -0500 Subject: [PATCH 3/9] Apply suggestions from code review Co-authored-by: Kim Pevey --- docs/docs/how-tos/nebari-local.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/docs/how-tos/nebari-local.md b/docs/docs/how-tos/nebari-local.md index bba889af..30b98a8c 100644 --- a/docs/docs/how-tos/nebari-local.md +++ b/docs/docs/how-tos/nebari-local.md @@ -162,7 +162,7 @@ security: ### Increase fs watches Depending on your host system, you may need to increase the `fs.inotify.max_user_watches` and -`fs.inotify.max_user_instances kernel parameters` if you see a `too many open files` in the logs of +`fs.inotify.max_user_instances kernel parameters` if you see the error "too many open files" in the logs of a failing pod. ```bash @@ -171,7 +171,7 @@ sudo sysctl fs.inotify.max_user_instances=512 ``` See the [kind troubleshooting -docs](https://kind.sigs.k8s.io/docs/user/known-issues/#pod-errors-due-to-too-many-open-files) +docs](https://kind.sigs.k8s.io/docs/user/known-issues/#pod-errors-due-to-too-many-open-files) for more information. ## Deploying Nebari From a46bfff3fa7783bedd74c2d677940cbbc1829d39 Mon Sep 17 00:00:00 2001 From: Blake Rosenthal Date: Fri, 27 Sep 2024 10:32:38 -0700 Subject: [PATCH 4/9] Update and format GCP roles --- docs/docs/how-tos/nebari-gcp.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/docs/docs/how-tos/nebari-gcp.md b/docs/docs/how-tos/nebari-gcp.md index 2979c035..90ef2a08 100644 --- a/docs/docs/how-tos/nebari-gcp.md +++ b/docs/docs/how-tos/nebari-gcp.md @@ -66,7 +66,10 @@ management. If it's your first time creating a service account, please follow [these detailed instructions](https://cloud.google.com/iam/docs/creating-managing-service-accounts) to create a Google Service Account with the following roles attached: -"roles/editor", "roles/resourcemanager.projectIamAdmin" and "roles/container.admin". +- [`roles/editor`](https://cloud.google.com/iam/docs/understanding-roles#editor) +- [`roles/resourcemanager.projectIamAdmin`](https://cloud.google.com/iam/docs/understanding-roles#resourcemanager.projectIamAdmin) +- [`roles/container.admin`](https://cloud.google.com/iam/docs/understanding-roles#container.admin) +- [`roles/storage.admin`](https://cloud.google.com/iam/docs/understanding-roles#storage.admin) For more information about roles and permissions, see the [Google Cloud Platform IAM documentation](https://cloud.google.com/iam/docs/choose-predefined-roles). Remember to check the active project before creating resources, especially if From 7f3b5e90c15b7992166d01c4d21ff6ed78c795e6 Mon Sep 17 00:00:00 2001 From: nebari-sensei Date: Fri, 27 Sep 2024 22:17:12 +0000 Subject: [PATCH 5/9] =?UTF-8?q?=F0=9F=94=84=20synced=20local=20'docs/docs/?= =?UTF-8?q?references/RELEASE.md'=20with=20remote=20'RELEASE.md'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit MAINT - Sync release notes :robot: --- docs/docs/references/RELEASE.md | 1168 ++++++++++++++++--------------- 1 file changed, 602 insertions(+), 566 deletions(-) diff --git a/docs/docs/references/RELEASE.md b/docs/docs/references/RELEASE.md index e3343dd1..2c3ba770 100644 --- a/docs/docs/references/RELEASE.md +++ b/docs/docs/references/RELEASE.md @@ -1,6 +1,6 @@ # Release notes -_Contains description of Nebari releases._ +*Contains description of Nebari releases.* --- -### Release 2024.7.1 - August 8, 2024 +## Release 2024.9.1 - September 27, 2024 + +> WARNING: This release changes how group directories are mounted in JupyterLab pods: only groups with specific permissions will have their directories mounted. If you rely on custom group mounts, we strongly recommend running `nebari upgrade` before updating. This will prompt you to confirm how Nebari should handle your groupsβ€”either keep them mounted or allow unmounting. **No data will be lost**, and you can reverse this anytime. + +### What's Changed +* Fix: KeyValueDict error when deploying to existing infrastructure by @oftheaxe in https://github.com/nebari-dev/nebari/pull/2560 +* Remove unused AWS terraform modules by @marcelovilla in https://github.com/nebari-dev/nebari/pull/2623 +* Upgrade Hashicorp Vault action by @aktech in https://github.com/nebari-dev/nebari/pull/2616 +* Pass `oauth_no_confirm=True` to jhub-apps by @krassowski in https://github.com/nebari-dev/nebari/pull/2631 +* Use Rook Ceph for Jupyterhub and Conda Store drives by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2541 +* Fix typo in guided init by @marcelovilla in https://github.com/nebari-dev/nebari/pull/2635 +* Action var tests off by @BrianCashProf in https://github.com/nebari-dev/nebari/pull/2632 +* add a "moved" block to account for refactored terraform code without deleting/recreating NFS disks by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2639 +* Use Helm Chart for JupyterHub 5.1.0 by @krassowski in https://github.com/nebari-dev/nebari/pull/2661 +* Add a how to test section to PR template by @marcelovilla in https://github.com/nebari-dev/nebari/pull/2659 +* Support disallowed nebari config changes by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2660 +* Fix converted init command in guided init by @marcelovilla in https://github.com/nebari-dev/nebari/pull/2666 +* Add initial uptime metrics by @dcmcand in https://github.com/nebari-dev/nebari/pull/2609 +* Refactor and extend Playwright tests by @viniciusdc in https://github.com/nebari-dev/nebari/pull/2644 +* Remove Cypress remaining tests/files by @viniciusdc in https://github.com/nebari-dev/nebari/pull/2672 +* refactor jupyterhub user token retrieval within pytest by @viniciusdc in https://github.com/nebari-dev/nebari/pull/2645 +* add moved block to account for terraform changes on AWS only by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2673 +* Refactor shared group mounting using RBAC by @viniciusdc in https://github.com/nebari-dev/nebari/pull/2593 +* Dashboard fix usage report by @kenafoster in https://github.com/nebari-dev/nebari/pull/2671 +* only capture stdout not stdout+stderr when capture_output=True by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2704 +* revert breaking change to azure deployment test by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2706 +* Refactor GitOps approach prompt flow in guided init by @marcelovilla in https://github.com/nebari-dev/nebari/pull/2269 +* template the kustomization.yaml file by @dcmcand in https://github.com/nebari-dev/nebari/pull/2667 +* Fix auto-provisioned GitHub repo description after guided init by @marcelovilla in https://github.com/nebari-dev/nebari/pull/2708 +* Add amazon_web_services configuration option to specify EKS cluster api server endpoint access setting by @joneszc in https://github.com/nebari-dev/nebari/pull/2618 +* Use Google Auth and Cloud Python APIs instead of `gcloud` CLI by @swastik959 in https://github.com/nebari-dev/nebari/pull/2083 +* fix broken links in README.md, SECURITY.md, and CONTRIBUTING.md by @blakerosenthal in https://github.com/nebari-dev/nebari/pull/2720 +* add test for changing dicts and lists by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2724 +* 2024.9.1 upgrade notes by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2726 +* Add Support for AWS Launch Template Configuration by @viniciusdc in https://github.com/nebari-dev/nebari/pull/2668 +* Run terraform init before running terraform show by @marcelovilla in https://github.com/nebari-dev/nebari/pull/2734 +* Release Process Checklist Updates by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2727 +* Test implicit aiohttp's TCP to HTTP connector change by @viniciusdc in https://github.com/nebari-dev/nebari/pull/2741 +* remove comments by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2743 +* Deploy Rook Ceph Helm only when Ceph FS Needed by @kenafoster in https://github.com/nebari-dev/nebari/pull/2742 +* fix group mounting paths by @viniciusdc in https://github.com/nebari-dev/nebari/pull/2738 +* Add compatibility prompt and notes for shared group mounting by @viniciusdc in https://github.com/nebari-dev/nebari/pull/2739 + +### New Contributors +* @oftheaxe made their first contribution in https://github.com/nebari-dev/nebari/pull/2560 +* @joneszc made their first contribution in https://github.com/nebari-dev/nebari/pull/2618 +* @swastik959 made their first contribution in https://github.com/nebari-dev/nebari/pull/2083 +* @blakerosenthal made their first contribution in https://github.com/nebari-dev/nebari/pull/2720 + +**Full Changelog**: https://github.com/nebari-dev/nebari/compare/2024.7.1...2024.9.1 + + +## Release 2024.7.1 - August 8, 2024 > NOTE: Support for Digital Ocean deployments using CLI commands and related Terraform modules is being deprecated. Although Digital Ocean will no longer be directly supported in future releases, you can still deploy to Digital Ocean infrastructure using the current `existing` deployment option. -## What's Changed - -- Enable authentication by default in jupyter-server by @krassowski in https://github.com/nebari-dev/nebari/pull/2288 -- remove dns sleep by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2550 -- Conda-store permissions v2 + load roles from keycloak by @aktech in https://github.com/nebari-dev/nebari/pull/2531 -- Restrict public access and add bucket encryption using cmk by @dcmcand in https://github.com/nebari-dev/nebari/pull/2525 -- Add overwrite to AWS coredns addon by @dcmcand in https://github.com/nebari-dev/nebari/pull/2538 -- Add a default roles at initialisation by @aktech in https://github.com/nebari-dev/nebari/pull/2546 -- Hide gallery section if no exhibits are configured by @krassowski in https://github.com/nebari-dev/nebari/pull/2549 -- Add note about ~/.bash_profile by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2575 -- Expose jupyterlab-gallery branch and depth options by @krassowski in https://github.com/nebari-dev/nebari/pull/2556 -- #2566 Upgrade Jupyterhub ssh image by @arjxn-py in https://github.com/nebari-dev/nebari/pull/2576 -- Stop copying unnecessary files into user home directory by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2578 -- Include deprecation notes for init/deploy subcommands by @viniciusdc in https://github.com/nebari-dev/nebari/pull/2582 -- Only download jar if file doesn't exist by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2588 -- Remove unnecessary experimental flag by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2606 -- Add typos spell checker to pre-commit by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2568 -- Enh 2451 skip conditionals by @BrianCashProf in https://github.com/nebari-dev/nebari/pull/2569 -- Improve codespell support: adjust and concentrate config to pyproject.toml and fix more typos by @yarikoptic in https://github.com/nebari-dev/nebari/pull/2583 -- Move codespell config to pyproject.toml only by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2611 -- Add `depends_on` for bucket encryption by @viniciusdc in https://github.com/nebari-dev/nebari/pull/2615 - -## New Contributors - -- @BrianCashProf made their first contribution in https://github.com/nebari-dev/nebari/pull/2569 -- @yarikoptic made their first contribution in https://github.com/nebari-dev/nebari/pull/2583 +### What's Changed +* Enable authentication by default in jupyter-server by @krassowski in https://github.com/nebari-dev/nebari/pull/2288 +* remove dns sleep by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2550 +* Conda-store permissions v2 + load roles from keycloak by @aktech in https://github.com/nebari-dev/nebari/pull/2531 +* Restrict public access and add bucket encryption using cmk by @dcmcand in https://github.com/nebari-dev/nebari/pull/2525 +* Add overwrite to AWS coredns addon by @dcmcand in https://github.com/nebari-dev/nebari/pull/2538 +* Add a default roles at initialisation by @aktech in https://github.com/nebari-dev/nebari/pull/2546 +* Hide gallery section if no exhibits are configured by @krassowski in https://github.com/nebari-dev/nebari/pull/2549 +* Add note about ~/.bash_profile by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2575 +* Expose jupyterlab-gallery branch and depth options by @krassowski in https://github.com/nebari-dev/nebari/pull/2556 +* #2566 Upgrade Jupyterhub ssh image by @arjxn-py in https://github.com/nebari-dev/nebari/pull/2576 +* Stop copying unnecessary files into user home directory by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2578 +* Include deprecation notes for init/deploy subcommands by @viniciusdc in https://github.com/nebari-dev/nebari/pull/2582 +* Only download jar if file doesn't exist by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2588 +* Remove unnecessary experimental flag by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2606 +* Add typos spell checker to pre-commit by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2568 +* Enh 2451 skip conditionals by @BrianCashProf in https://github.com/nebari-dev/nebari/pull/2569 +* Improve codespell support: adjust and concentrate config to pyproject.toml and fix more typos by @yarikoptic in https://github.com/nebari-dev/nebari/pull/2583 +* Move codespell config to pyproject.toml only by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2611 +* Add `depends_on` for bucket encryption by @viniciusdc in https://github.com/nebari-dev/nebari/pull/2615 + +### New Contributors +* @BrianCashProf made their first contribution in https://github.com/nebari-dev/nebari/pull/2569 +* @yarikoptic made their first contribution in https://github.com/nebari-dev/nebari/pull/2583 + **Full Changelog**: https://github.com/nebari-dev/nebari/compare/2024.6.1...2024.7.1 -### Release 2024.6.1 - June 26, 2024 + +## Release 2024.6.1 - June 26, 2024 > NOTE: This release includes an upgrade to the `kube-prometheus-stack` Helm chart, resulting in a newer version of Grafana. When upgrading your Nebari cluster, you will be prompted to have Nebari update some CRDs and delete a DaemonSet on your behalf. If you prefer, you can also run the commands yourself, which will be shown to you. If you have any custom dashboards, you'll also need to back them up by [exporting them as JSON](https://grafana.com/docs/grafana/latest/dashboards/share-dashboards-panels/#export-a-dashboard-as-json), so you can [import them](https://grafana.com/docs/grafana/latest/dashboards/build-dashboards/import-dashboards/#import-a-dashboard) after upgrading. ### What's Changed - -- Fetch JupyterHub roles from Keycloak by @krassowski in https://github.com/nebari-dev/nebari/pull/2447 -- Update selector for Start server button to use button tag by @krassowski in https://github.com/nebari-dev/nebari/pull/2464 -- Reduce GCP Fixed Costs by 50% by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2453 -- Restore JupyterHub updates from PR-2427 by @viniciusdc in https://github.com/nebari-dev/nebari/pull/2465 -- Workload identity by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2460 -- Fix test using a non-specific selector by @krassowski in https://github.com/nebari-dev/nebari/pull/2475 -- add verify=false since we use self signed cert in tests by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2481 -- fix forward auth when using custom cert by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2479 -- Upgrade to JupyterHub 5.0.0b2 by @krassowski in https://github.com/nebari-dev/nebari/pull/2468 -- upgrade instructions for PR 2453 by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2466 -- Use Helm Chart for JupyterHub 5.0.0 final by @krassowski in https://github.com/nebari-dev/nebari/pull/2484 -- Parse and insert keycloak roles scopes into JupyterHub by @aktech in https://github.com/nebari-dev/nebari/pull/2471 -- Add CITATION file by @pavithraes in https://github.com/nebari-dev/nebari/pull/2455 -- CI: add azure integration by @fangchenli in https://github.com/nebari-dev/nebari/pull/2061 -- Create trivy.yml by @dcmcand in https://github.com/nebari-dev/nebari/pull/2458 -- don't run azure deployment on PRs, only on schedule and manual trigger by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2498 -- add cloud provider deployment status badges to README.md by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2407 -- Upgrade kube-prometheus-stack helm chart by @marcelovilla in https://github.com/nebari-dev/nebari/pull/2472 -- upgrade note by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2502 -- Remove VSCode from jhub_apps default services by @jbouder in https://github.com/nebari-dev/nebari/pull/2503 -- Explicit config by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2294 -- fix general node scaling bug for azure by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2517 -- Skip running cleanup on pull requests by @aktech in https://github.com/nebari-dev/nebari/pull/2488 -- 1792 Add docstrings to `upgrade.py` by @arjxn-py in https://github.com/nebari-dev/nebari/pull/2512 -- set's min TLS version for azure storage account to TLS 1.2 by @dcmcand in https://github.com/nebari-dev/nebari/pull/2522 -- Fix conda-store and Traefik Grafana Dashboards by @marcelovilla in https://github.com/nebari-dev/nebari/pull/2540 -- Implement support for jupyterlab-gallery config by @krassowski in https://github.com/nebari-dev/nebari/pull/2501 -- Add option to run CRDs updates and DaemonSet deletion on user's behalf. by @marcelovilla in https://github.com/nebari-dev/nebari/pull/2544 +* Fetch JupyterHub roles from Keycloak by @krassowski in https://github.com/nebari-dev/nebari/pull/2447 +* Update selector for Start server button to use button tag by @krassowski in https://github.com/nebari-dev/nebari/pull/2464 +* Reduce GCP Fixed Costs by 50% by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2453 +* Restore JupyterHub updates from PR-2427 by @viniciusdc in https://github.com/nebari-dev/nebari/pull/2465 +* Workload identity by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2460 +* Fix test using a non-specific selector by @krassowski in https://github.com/nebari-dev/nebari/pull/2475 +* add verify=false since we use self signed cert in tests by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2481 +* fix forward auth when using custom cert by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2479 +* Upgrade to JupyterHub 5.0.0b2 by @krassowski in https://github.com/nebari-dev/nebari/pull/2468 +* upgrade instructions for PR 2453 by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2466 +* Use Helm Chart for JupyterHub 5.0.0 final by @krassowski in https://github.com/nebari-dev/nebari/pull/2484 +* Parse and insert keycloak roles scopes into JupyterHub by @aktech in https://github.com/nebari-dev/nebari/pull/2471 +* Add CITATION file by @pavithraes in https://github.com/nebari-dev/nebari/pull/2455 +* CI: add azure integration by @fangchenli in https://github.com/nebari-dev/nebari/pull/2061 +* Create trivy.yml by @dcmcand in https://github.com/nebari-dev/nebari/pull/2458 +* don't run azure deployment on PRs, only on schedule and manual trigger by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2498 +* add cloud provider deployment status badges to README.md by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2407 +* Upgrade kube-prometheus-stack helm chart by @marcelovilla in https://github.com/nebari-dev/nebari/pull/2472 +* upgrade note by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2502 +* Remove VSCode from jhub_apps default services by @jbouder in https://github.com/nebari-dev/nebari/pull/2503 +* Explicit config by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2294 +* fix general node scaling bug for azure by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2517 +* Skip running cleanup on pull requests by @aktech in https://github.com/nebari-dev/nebari/pull/2488 +* 1792 Add docstrings to `upgrade.py` by @arjxn-py in https://github.com/nebari-dev/nebari/pull/2512 +* set's min TLS version for azure storage account to TLS 1.2 by @dcmcand in https://github.com/nebari-dev/nebari/pull/2522 +* Fix conda-store and Traefik Grafana Dashboards by @marcelovilla in https://github.com/nebari-dev/nebari/pull/2540 +* Implement support for jupyterlab-gallery config by @krassowski in https://github.com/nebari-dev/nebari/pull/2501 +* Add option to run CRDs updates and DaemonSet deletion on user's behalf. by @marcelovilla in https://github.com/nebari-dev/nebari/pull/2544 ### New Contributors - -- @arjxn-py made their first contribution in https://github.com/nebari-dev/nebari/pull/2512 +* @arjxn-py made their first contribution in https://github.com/nebari-dev/nebari/pull/2512 **Full Changelog**: https://github.com/nebari-dev/nebari/compare/2024.5.1...2024.6.1 -### Release 2024.5.1 - May 13, 2024 +## Release 2024.5.1 - May 13, 2024 -## What's Changed +### What's Changed -- make userscheduler run on general node group by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2415 -- Upgrade to Pydantic V2 by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2348 -- Pydantic2 PR fix by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2421 -- remove redundant pydantic class, fix bug by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2426 -- Update `python-keycloak` version pins constraints by @viniciusdc in https://github.com/nebari-dev/nebari/pull/2435 -- add HERA_TOKEN env var to user pods by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2438 -- fix docs link by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2443 -- Update allowed admin groups by @aktech in https://github.com/nebari-dev/nebari/pull/2429 +* make userscheduler run on general node group by @Adam-D-Lewis in +* Upgrade to Pydantic V2 by @Adam-D-Lewis in +* Pydantic2 PR fix by @Adam-D-Lewis in +* remove redundant pydantic class, fix bug by @Adam-D-Lewis in +* Update `python-keycloak` version pins constraints by @viniciusdc in +* add HERA_TOKEN env var to user pods by @Adam-D-Lewis in +* fix docs link by @Adam-D-Lewis in +* Update allowed admin groups by @aktech in -**Full Changelog**: https://github.com/nebari-dev/nebari/compare/2024.4.1...2024.5.1 +**Full Changelog**: ## Release 2024.4.1 - April 20, 2024 ### What's Changed - -- update azurerm version by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2370 -- Get JupyterHub `groups` from Keycloak, support `oauthenticator` 16.3+ by @krassowski in https://github.com/nebari-dev/nebari/pull/2361 -- add full names for cloud providers in guided init by @exitflynn in https://github.com/nebari-dev/nebari/pull/2375 -- Add middleware to prefix JupyterHub navbar items with /hub. by @marcelovilla in https://github.com/nebari-dev/nebari/pull/2360 -- CLN: split #1928, refactor render test by @fangchenli in https://github.com/nebari-dev/nebari/pull/2246 -- add trailing slash for jupyterhub proxy paths by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2387 -- remove references to deprecated cdsdashboards by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2390 -- add default node groups to config by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2398 -- Update concurrency settings for Integration tests by @viniciusdc in https://github.com/nebari-dev/nebari/pull/2393 -- Make CI/CD Cloud Provider Test Conditional by @tylergraff in https://github.com/nebari-dev/nebari/pull/2369 +* update azurerm version by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2370 +* Get JupyterHub `groups` from Keycloak, support `oauthenticator` 16.3+ by @krassowski in https://github.com/nebari-dev/nebari/pull/2361 +* add full names for cloud providers in guided init by @exitflynn in https://github.com/nebari-dev/nebari/pull/2375 +* Add middleware to prefix JupyterHub navbar items with /hub. by @marcelovilla in https://github.com/nebari-dev/nebari/pull/2360 +* CLN: split #1928, refactor render test by @fangchenli in https://github.com/nebari-dev/nebari/pull/2246 +* add trailing slash for jupyterhub proxy paths by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2387 +* remove references to deprecated cdsdashboards by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2390 +* add default node groups to config by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2398 +* Update concurrency settings for Integration tests by @viniciusdc in https://github.com/nebari-dev/nebari/pull/2393 +* Make CI/CD Cloud Provider Test Conditional by @tylergraff in https://github.com/nebari-dev/nebari/pull/2369 ### New Contributors - -- @exitflynn made their first contribution in https://github.com/nebari-dev/nebari/pull/2375 +* @exitflynn made their first contribution in https://github.com/nebari-dev/nebari/pull/2375 **Full Changelog**: https://github.com/nebari-dev/nebari/compare/2024.3.3...2024.4.1 + ## Release 2024.3.3 - March 27, 2024 ### What's Changed - -- get default variable value when following a terraform variable by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2322 -- Upgrade Actions versions by @isumitjha in https://github.com/nebari-dev/nebari/pull/2291 -- Cleanup spawner logs by @krassowski in https://github.com/nebari-dev/nebari/pull/2328 -- Fix loki gateway url when deployed on non-dev namespace by @aktech in https://github.com/nebari-dev/nebari/pull/2327 -- Dmcandrew update ruamel.yaml by @dcmcand in https://github.com/nebari-dev/nebari/pull/2315 -- upgrade auth0-python version to ultimately resolve CVE-2024-26130 by @tylergraff in https://github.com/nebari-dev/nebari/pull/2314 -- remove deprecated code paths by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2349 -- Create SECURITY.md by @dcmcand in https://github.com/nebari-dev/nebari/pull/2354 -- Set node affinity for more pods to ensure they run on general node pool by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2353 -- Deduplicate conda-store in JupyterLab main menu by @krassowski in https://github.com/nebari-dev/nebari/pull/2347 -- Pass current namespace to argo via environment variable by @krassowski in https://github.com/nebari-dev/nebari/pull/2317 -- PVC for Traefik Ingress (prevent LetsEncrypt throttling) by @kenafoster in https://github.com/nebari-dev/nebari/pull/2352 +* get default variable value when following a terraform variable by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2322 +* Upgrade Actions versions by @isumitjha in https://github.com/nebari-dev/nebari/pull/2291 +* Cleanup spawner logs by @krassowski in https://github.com/nebari-dev/nebari/pull/2328 +* Fix loki gateway url when deployed on non-dev namespace by @aktech in https://github.com/nebari-dev/nebari/pull/2327 +* Dmcandrew update ruamel.yaml by @dcmcand in https://github.com/nebari-dev/nebari/pull/2315 +* upgrade auth0-python version to ultimately resolve CVE-2024-26130 by @tylergraff in https://github.com/nebari-dev/nebari/pull/2314 +* remove deprecated code paths by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2349 +* Create SECURITY.md by @dcmcand in https://github.com/nebari-dev/nebari/pull/2354 +* Set node affinity for more pods to ensure they run on general node pool by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2353 +* Deduplicate conda-store in JupyterLab main menu by @krassowski in https://github.com/nebari-dev/nebari/pull/2347 +* Pass current namespace to argo via environment variable by @krassowski in https://github.com/nebari-dev/nebari/pull/2317 +* PVC for Traefik Ingress (prevent LetsEncrypt throttling) by @kenafoster in https://github.com/nebari-dev/nebari/pull/2352 ### New Contributors - -- @isumitjha made their first contribution in https://github.com/nebari-dev/nebari/pull/2291 -- @tylergraff made their first contribution in https://github.com/nebari-dev/nebari/pull/2314 +* @isumitjha made their first contribution in https://github.com/nebari-dev/nebari/pull/2291 +* @tylergraff made their first contribution in https://github.com/nebari-dev/nebari/pull/2314 **Full Changelog**: https://github.com/nebari-dev/nebari/compare/2024.3.2...2024.3.3 + ## Release 2024.3.2 - March 14, 2024 ### What's Changed +* update max k8s versions and remove depreciated api usage in local deploy by @dcmcand in https://github.com/nebari-dev/nebari/pull/2276 +* update keycloak image repo by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2312 +* Generate random password for Grafana by @aktech in https://github.com/nebari-dev/nebari/pull/2289 +* update conda store to 2024.3.1 by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2316 +* Switch PyPI release workflow to use trusted publishing by @viniciusdc in https://github.com/nebari-dev/nebari/pull/2323 -- update max k8s versions and remove depreciated api usage in local deploy by @dcmcand in https://github.com/nebari-dev/nebari/pull/2276 -- update keycloak image repo by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2312 -- Generate random password for Grafana by @aktech in https://github.com/nebari-dev/nebari/pull/2289 -- update conda store to 2024.3.1 by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2316 -- Switch PyPI release workflow to use trusted publishing by @viniciusdc in https://github.com/nebari-dev/nebari/pull/2323 **Full Changelog**: https://github.com/nebari-dev/nebari/compare/2024.3.1...2024.3.2 ## Release 2024.3.1 - March 11, 2024 ### What's Changed - -- Modify Playwright test to account for changes in JupyterLab UI. by @marcelovilla in https://github.com/nebari-dev/nebari/pull/2232 -- Add favicon to jupyterhub theme. by @jbouder in https://github.com/nebari-dev/nebari/pull/2222 -- Set min nodes to 0 for worker and user. by @pt247 in https://github.com/nebari-dev/nebari/pull/2168 -- Remove `jhub-client` from pyproject.toml by @pavithraes in https://github.com/nebari-dev/nebari/pull/2242 -- Include permission validation step to programmatically cloned repos by @viniciusdc in https://github.com/nebari-dev/nebari/pull/2258 -- Expose jupyter's preferred dir as a config option by @krassowski in https://github.com/nebari-dev/nebari/pull/2251 -- Allow to configure default settings for JupyterLab (`overrides.json`) by @krassowski in https://github.com/nebari-dev/nebari/pull/2249 -- Feature/jlab menu customization by @marcelovilla in https://github.com/nebari-dev/nebari/pull/2259 -- Add cloud provider to the dask config.json file by @marcelovilla in https://github.com/nebari-dev/nebari/pull/2266 -- Fix syntax error in jupyter-server-config Python file by @krassowski in https://github.com/nebari-dev/nebari/pull/2286 -- Add "Open VS Code" entry in services by @krassowski in https://github.com/nebari-dev/nebari/pull/2267 -- Add Grafana Loki integration by @aktech in https://github.com/nebari-dev/nebari/pull/2156 +* Modify Playwright test to account for changes in JupyterLab UI. by @marcelovilla in https://github.com/nebari-dev/nebari/pull/2232 +* Add favicon to jupyterhub theme. by @jbouder in https://github.com/nebari-dev/nebari/pull/2222 +* Set min nodes to 0 for worker and user. by @pt247 in https://github.com/nebari-dev/nebari/pull/2168 +* Remove `jhub-client` from pyproject.toml by @pavithraes in https://github.com/nebari-dev/nebari/pull/2242 +* Include permission validation step to programmatically cloned repos by @viniciusdc in https://github.com/nebari-dev/nebari/pull/2258 +* Expose jupyter's preferred dir as a config option by @krassowski in https://github.com/nebari-dev/nebari/pull/2251 +* Allow to configure default settings for JupyterLab (`overrides.json`) by @krassowski in https://github.com/nebari-dev/nebari/pull/2249 +* Feature/jlab menu customization by @marcelovilla in https://github.com/nebari-dev/nebari/pull/2259 +* Add cloud provider to the dask config.json file by @marcelovilla in https://github.com/nebari-dev/nebari/pull/2266 +* Fix syntax error in jupyter-server-config Python file by @krassowski in https://github.com/nebari-dev/nebari/pull/2286 +* Add "Open VS Code" entry in services by @krassowski in https://github.com/nebari-dev/nebari/pull/2267 +* Add Grafana Loki integration by @aktech in https://github.com/nebari-dev/nebari/pull/2156 ### New Contributors - -- @jbouder made their first contribution in https://github.com/nebari-dev/nebari/pull/2222 -- @krassowski made their first contribution in https://github.com/nebari-dev/nebari/pull/2251 +* @jbouder made their first contribution in https://github.com/nebari-dev/nebari/pull/2222 +* @krassowski made their first contribution in https://github.com/nebari-dev/nebari/pull/2251 **Full Changelog**: https://github.com/nebari-dev/nebari/compare/2024.1.1...2024.3.1 + ## Release 2024.1.1 - January 17, 2024 ### Feature changes and enhancements -- Upgrade conda-store to latest version 2024.1.1 -- Add Jhub-Apps -- Add Jupyterlab-pioneer -- Minor improvements and bug fixes +* Upgrade conda-store to latest version 2024.1.1 +* Add Jhub-Apps +* Add Jupyterlab-pioneer +* Minor improvements and bug fixes ### Breaking Changes @@ -194,26 +241,27 @@ This file is copied to nebari-dev/nebari-docs using a GitHub Action. --> ### What's Changed -- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/nebari-dev/nebari/pull/2176 -- Fix logic for dns lookup. by @pt247 in https://github.com/nebari-dev/nebari/pull/2166 -- Integrate JupyterHub App Launcher into Nebari by @aktech in https://github.com/nebari-dev/nebari/pull/2185 -- Pass in permissions boundary to k8s module by @aktech in https://github.com/nebari-dev/nebari/pull/2153 -- Add jupyterlab-pioneer by @aktech in https://github.com/nebari-dev/nebari/pull/2127 -- JHub Apps: Filter conda envs by user by @aktech in https://github.com/nebari-dev/nebari/pull/2187 -- update upgrade command by @dcmcand in https://github.com/nebari-dev/nebari/pull/2198 -- Remove JupyterLab from services list by @aktech in https://github.com/nebari-dev/nebari/pull/2189 -- Adding fields to ignore within keycloak_realm by @costrouc in https://github.com/nebari-dev/nebari/pull/2200 -- Add Nebari menu item configuration. by @marcelovilla in https://github.com/nebari-dev/nebari/pull/2196 -- Disable "Newer update available" popup as default setting by @viniciusdc in https://github.com/nebari-dev/nebari/pull/2192 -- Block usage of pip inside jupyterlab by @viniciusdc in https://github.com/nebari-dev/nebari/pull/2191 -- Return all environments instead of just those under the user's namespace for jhub-apps by @marcelovilla in https://github.com/nebari-dev/nebari/pull/2206 -- Adding a temporary writable directory for conda-store server /home/conda by @costrouc in https://github.com/nebari-dev/nebari/pull/2209 -- Add demo repositories mechanism to populate user's space by @viniciusdc in https://github.com/nebari-dev/nebari/pull/2207 -- update nebari_workflow_controller and conda_store tags to test rc by @dcmcand in https://github.com/nebari-dev/nebari/pull/2210 -- 2023.12.1 release notes by @dcmcand in https://github.com/nebari-dev/nebari/pull/2211 -- Make it so that jhub-apps default theme doesn't override by @costrouc in https://github.com/nebari-dev/nebari/pull/2213 -- Adding additional theme variables to jupyterhub theme config by @costrouc in https://github.com/nebari-dev/nebari/pull/2215 -- updates Current Release to 2024.1.1 by @dcmcand in https://github.com/nebari-dev/nebari/pull/2227 +* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/nebari-dev/nebari/pull/2176 +* Fix logic for dns lookup. by @pt247 in https://github.com/nebari-dev/nebari/pull/2166 +* Integrate JupyterHub App Launcher into Nebari by @aktech in https://github.com/nebari-dev/nebari/pull/2185 +* Pass in permissions boundary to k8s module by @aktech in https://github.com/nebari-dev/nebari/pull/2153 +* Add jupyterlab-pioneer by @aktech in https://github.com/nebari-dev/nebari/pull/2127 +* JHub Apps: Filter conda envs by user by @aktech in https://github.com/nebari-dev/nebari/pull/2187 +* update upgrade command by @dcmcand in https://github.com/nebari-dev/nebari/pull/2198 +* Remove JupyterLab from services list by @aktech in https://github.com/nebari-dev/nebari/pull/2189 +* Adding fields to ignore within keycloak_realm by @costrouc in https://github.com/nebari-dev/nebari/pull/2200 +* Add Nebari menu item configuration. by @marcelovilla in https://github.com/nebari-dev/nebari/pull/2196 +* Disable "Newer update available" popup as default setting by @viniciusdc in https://github.com/nebari-dev/nebari/pull/2192 +* Block usage of pip inside jupyterlab by @viniciusdc in https://github.com/nebari-dev/nebari/pull/2191 +* Return all environments instead of just those under the user's namespace for jhub-apps by @marcelovilla in https://github.com/nebari-dev/nebari/pull/2206 +* Adding a temporary writable directory for conda-store server /home/conda by @costrouc in https://github.com/nebari-dev/nebari/pull/2209 +* Add demo repositories mechanism to populate user's space by @viniciusdc in https://github.com/nebari-dev/nebari/pull/2207 +* update nebari_workflow_controller and conda_store tags to test rc by @dcmcand in https://github.com/nebari-dev/nebari/pull/2210 +* 2023.12.1 release notes by @dcmcand in https://github.com/nebari-dev/nebari/pull/2211 +* Make it so that jhub-apps default theme doesn't override by @costrouc in https://github.com/nebari-dev/nebari/pull/2213 +* Adding additional theme variables to jupyterhub theme config by @costrouc in https://github.com/nebari-dev/nebari/pull/2215 +* updates Current Release to 2024.1.1 by @dcmcand in https://github.com/nebari-dev/nebari/pull/2227 + **Full Changelog**: https://github.com/nebari-dev/nebari/compare/2023.12.1...2024.1.1 @@ -221,30 +269,30 @@ This file is copied to nebari-dev/nebari-docs using a GitHub Action. --> ### Feature changes and enhancements -- Upgrade conda-store to latest version 2023.10.1 -- Minor improvements and bug fixes +* Upgrade conda-store to latest version 2023.10.1 +* Minor improvements and bug fixes ### Breaking Changes > WARNING: Prefect, ClearML and kbatch were removed in this release and upgrading to this version will result in all of them being uninstalled. ### What's Changed +* BUG: fix incorrect config override #2086 by @fangchenli in https://github.com/nebari-dev/nebari/pull/2087 +* ENH: add AWS IAM permissions_boundary option #2078 by @fangchenli in https://github.com/nebari-dev/nebari/pull/2082 +* CI: cleanup local integration workflow by @fangchenli in https://github.com/nebari-dev/nebari/pull/2079 +* ENH: check missing GCP services by @fangchenli in https://github.com/nebari-dev/nebari/pull/2036 +* ENH: use packaging for version parsing, add unit tests by @fangchenli in https://github.com/nebari-dev/nebari/pull/2048 +* ENH: specify required field when retrieving available gcp regions by @fangchenli in https://github.com/nebari-dev/nebari/pull/2033 +* Upgrade conda-store to 2023.10.1 by @iameskild in https://github.com/nebari-dev/nebari/pull/2092 +* Add upgrade command for 2023.11.1 by @iameskild in https://github.com/nebari-dev/nebari/pull/2103 +* CLN: cleanup typing and typing import in init by @fangchenli in https://github.com/nebari-dev/nebari/pull/2107 +* Remove kbatch, prefect and clearml by @iameskild in https://github.com/nebari-dev/nebari/pull/2101 +* Fix integration tests, helm-validate script by @iameskild in https://github.com/nebari-dev/nebari/pull/2102 +* Re-enable AWS tags support by @iameskild in https://github.com/nebari-dev/nebari/pull/2096 +* Update upgrade instructions for 2023.11.1 by @iameskild in https://github.com/nebari-dev/nebari/pull/2112 +* Update nebari-git env pins by by @iameskild in https://github.com/nebari-dev/nebari/pull/2113 +* Update release notes for 2023.11.1 by @iameskild in https://github.com/nebari-dev/nebari/pull/2114 -- BUG: fix incorrect config override #2086 by @fangchenli in https://github.com/nebari-dev/nebari/pull/2087 -- ENH: add AWS IAM permissions_boundary option #2078 by @fangchenli in https://github.com/nebari-dev/nebari/pull/2082 -- CI: cleanup local integration workflow by @fangchenli in https://github.com/nebari-dev/nebari/pull/2079 -- ENH: check missing GCP services by @fangchenli in https://github.com/nebari-dev/nebari/pull/2036 -- ENH: use packaging for version parsing, add unit tests by @fangchenli in https://github.com/nebari-dev/nebari/pull/2048 -- ENH: specify required field when retrieving available gcp regions by @fangchenli in https://github.com/nebari-dev/nebari/pull/2033 -- Upgrade conda-store to 2023.10.1 by @iameskild in https://github.com/nebari-dev/nebari/pull/2092 -- Add upgrade command for 2023.11.1 by @iameskild in https://github.com/nebari-dev/nebari/pull/2103 -- CLN: cleanup typing and typing import in init by @fangchenli in https://github.com/nebari-dev/nebari/pull/2107 -- Remove kbatch, prefect and clearml by @iameskild in https://github.com/nebari-dev/nebari/pull/2101 -- Fix integration tests, helm-validate script by @iameskild in https://github.com/nebari-dev/nebari/pull/2102 -- Re-enable AWS tags support by @iameskild in https://github.com/nebari-dev/nebari/pull/2096 -- Update upgrade instructions for 2023.11.1 by @iameskild in https://github.com/nebari-dev/nebari/pull/2112 -- Update nebari-git env pins by by @iameskild in https://github.com/nebari-dev/nebari/pull/2113 -- Update release notes for 2023.11.1 by @iameskild in https://github.com/nebari-dev/nebari/pull/2114 **Full Changelog**: https://github.com/nebari-dev/nebari/compare/2023.11.1...2023.12.1 @@ -252,34 +300,35 @@ This file is copied to nebari-dev/nebari-docs using a GitHub Action. --> ### Feature changes and enhancements -- Upgrade conda-store to latest version 2023 .10.1 -- Minor improvements and bug fixes +* Upgrade conda-store to latest version 2023 .10.1 +* Minor improvements and bug fixes ### Breaking Changes > WARNING: Prefect, ClearML and kbatch were removed in this release and upgrading to this version will result in all of them being uninstalled. ### What's Changed +* BUG: fix incorrect config override #2086 by @fangchenli in https://github.com/nebari-dev/nebari/pull/2087 +* ENH: add AWS IAM permissions_boundary option #2078 by @fangchenli in https://github.com/nebari-dev/nebari/pull/2082 +* CI: cleanup local integration workflow by @fangchenli in https://github.com/nebari-dev/nebari/pull/2079 +* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/nebari-dev/nebari/pull/2099 +* ENH: check missing GCP services by @fangchenli in https://github.com/nebari-dev/nebari/pull/2036 +* ENH: use packaging for version parsing, add unit tests by @fangchenli in https://github.com/nebari-dev/nebari/pull/2048 +* ENH: specify required field when retrieving available gcp regions by @fangchenli in https://github.com/nebari-dev/nebari/pull/2033 +* Upgrade conda-store to 2023.10.1 by @iameskild in https://github.com/nebari-dev/nebari/pull/2092 +* Add upgrade command for 2023.11.1 by @iameskild in https://github.com/nebari-dev/nebari/pull/2103 +* CLN: cleanup typing and typing import in init by @fangchenli in https://github.com/nebari-dev/nebari/pull/2107 +* Remove kbatch, prefect and clearml by @iameskild in https://github.com/nebari-dev/nebari/pull/2101 +* Fix integration tests, helm-validate script by @iameskild in https://github.com/nebari-dev/nebari/pull/2102 +* Re-enable AWS tags support by @iameskild in https://github.com/nebari-dev/nebari/pull/2096 +* Update upgrade instructions for 2023.11.1 by @iameskild in https://github.com/nebari-dev/nebari/pull/2112 +* Update nebari-git env pins by by @iameskild in https://github.com/nebari-dev/nebari/pull/2113 +* Update release notes for 2023.11.1 by @iameskild in https://github.com/nebari-dev/nebari/pull/2114 -- BUG: fix incorrect config override #2086 by @fangchenli in https://github.com/nebari-dev/nebari/pull/2087 -- ENH: add AWS IAM permissions_boundary option #2078 by @fangchenli in https://github.com/nebari-dev/nebari/pull/2082 -- CI: cleanup local integration workflow by @fangchenli in https://github.com/nebari-dev/nebari/pull/2079 -- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/nebari-dev/nebari/pull/2099 -- ENH: check missing GCP services by @fangchenli in https://github.com/nebari-dev/nebari/pull/2036 -- ENH: use packaging for version parsing, add unit tests by @fangchenli in https://github.com/nebari-dev/nebari/pull/2048 -- ENH: specify required field when retrieving available gcp regions by @fangchenli in https://github.com/nebari-dev/nebari/pull/2033 -- Upgrade conda-store to 2023.10.1 by @iameskild in https://github.com/nebari-dev/nebari/pull/2092 -- Add upgrade command for 2023.11.1 by @iameskild in https://github.com/nebari-dev/nebari/pull/2103 -- CLN: cleanup typing and typing import in init by @fangchenli in https://github.com/nebari-dev/nebari/pull/2107 -- Remove kbatch, prefect and clearml by @iameskild in https://github.com/nebari-dev/nebari/pull/2101 -- Fix integration tests, helm-validate script by @iameskild in https://github.com/nebari-dev/nebari/pull/2102 -- Re-enable AWS tags support by @iameskild in https://github.com/nebari-dev/nebari/pull/2096 -- Update upgrade instructions for 2023.11.1 by @iameskild in https://github.com/nebari-dev/nebari/pull/2112 -- Update nebari-git env pins by by @iameskild in https://github.com/nebari-dev/nebari/pull/2113 -- Update release notes for 2023.11.1 by @iameskild in https://github.com/nebari-dev/nebari/pull/2114 **Full Changelog**: https://github.com/nebari-dev/nebari/compare/2023.10.1...2023.11.1 + ## Release 2023.10.1 - October 20, 2023 This release includes a major refactor which introduces a Pluggy-based extension mechanism which allow developers to build new stages. This is the initial implementation @@ -293,110 +342,109 @@ command and follow the instructions ### Feature changes and enhancements -- Extension Mechanism Implementation in [PR 1833](https://github.com/nebari-dev/nebari/pull/1833) - - This also includes much stricter schema validation. -- JupyterHub upgraded to 3.1 in [PR 1856](https://github.com/nebari-dev/nebari/pull/1856)' +* Extension Mechanism Implementation in [PR 1833](https://github.com/nebari-dev/nebari/pull/1833) + * This also includes much stricter schema validation. +* JupyterHub upgraded to 3.1 in [PR 1856](https://github.com/nebari-dev/nebari/pull/1856)' ### Breaking Changes -- While we have tried our best to avoid breaking changes when introducing the extension mechanism, the scope of the changes is too large for us to confidently say there won't be breaking changes. +* While we have tried our best to avoid breaking changes when introducing the extension mechanism, the scope of the changes is too large for us to confidently say there won't be breaking changes. > WARNING: CDS Dashboards was removed in this release and upgrading to this version will result in CDS Dashboards being uninstalled. A replacement dashboarding solution is currently in the work and will be integrated soon. > WARNING: We will be removing and ending support for ClearML, Prefect and kbatch in the next release. The kbatch has been functionally replaced by Argo-Jupyter-Scheduler. We have seen little interest in ClearML and Prefect in recent years, and removing makes sense at this point. However if you wish to continue using them with Nebari we encourage you to [write your own Nebari extension](https://www.nebari.dev/docs/how-tos/nebari-extension-system#developing-an-extension). ### What's Changed - -- Spinup spot instance for CI with cirun by @aktech in https://github.com/nebari-dev/nebari/pull/1882 -- Fix argo-viewer service account reference by @iameskild in https://github.com/nebari-dev/nebari/pull/1881 -- Framework for Nebari deployment via pytest for extensive testing by @aktech in https://github.com/nebari-dev/nebari/pull/1867 -- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/nebari-dev/nebari/pull/1878 -- Test GCP/AWS Deployment with Pytest by @aktech in https://github.com/nebari-dev/nebari/pull/1871 -- Bump DigitalOcean provider to latest by @aktech in https://github.com/nebari-dev/nebari/pull/1891 -- Ensure path is Path object by @iameskild in https://github.com/nebari-dev/nebari/pull/1888 -- enabling viewing hidden files in jupyterlab file explorer by @kalpanachinnappan in https://github.com/nebari-dev/nebari/pull/1893 -- Extension Mechanism Implementation by @costrouc in https://github.com/nebari-dev/nebari/pull/1833 -- Fix import path in deployment tests & misc by @aktech in https://github.com/nebari-dev/nebari/pull/1908 -- pytest:ensure failure on warnings by @costrouc in https://github.com/nebari-dev/nebari/pull/1907 -- workaround for mixed string/posixpath error by @sblair-metrostar in https://github.com/nebari-dev/nebari/pull/1915 -- ENH: Remove aws cli, use boto3 by @fangchenli in https://github.com/nebari-dev/nebari/pull/1920 -- paginator for boto3 ec2 instance types by @sblair-metrostar in https://github.com/nebari-dev/nebari/pull/1923 -- Update README.md -- fix typo. by @teoliphant in https://github.com/nebari-dev/nebari/pull/1925 -- Add more unit tests, add cleanup step for Digital Ocean integration test by @iameskild in https://github.com/nebari-dev/nebari/pull/1910 -- Add cleanup step for AWS integration test, ensure diable_prompt is passed through by @iameskild in https://github.com/nebari-dev/nebari/pull/1921 -- K8s 1.25 + More Improvements by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/1856 -- adding lifecycle ignore to eks node group by @sblair-metrostar in https://github.com/nebari-dev/nebari/pull/1905 -- nebari init unit tests by @sblair-metrostar in https://github.com/nebari-dev/nebari/pull/1931 -- Bug fix - JH singleuser environment getting overwritten by @kenafoster in https://github.com/nebari-dev/nebari/pull/1933 -- Allow users to specify the Azure RG to deploy into by @iameskild in https://github.com/nebari-dev/nebari/pull/1927 -- nebari validate unit tests by @sblair-metrostar in https://github.com/nebari-dev/nebari/pull/1938 -- adding openid connect provider to enable irsa feature by @sblair-metrostar in https://github.com/nebari-dev/nebari/pull/1903 -- nebari upgrade CLI tests by @sblair-metrostar in https://github.com/nebari-dev/nebari/pull/1963 -- CI: Add test coverage by @fangchenli in https://github.com/nebari-dev/nebari/pull/1959 -- nebari cli environment variable handling, support, keycloak, dev tests by @sblair-metrostar in https://github.com/nebari-dev/nebari/pull/1968 -- CI: remove empty notebook to fix pre-commit json check by @fangchenli in https://github.com/nebari-dev/nebari/pull/1976 -- TYP: fix typing error in plugins by @fangchenli in https://github.com/nebari-dev/nebari/pull/1973 -- TYP: fix return class type in hookimpl by @fangchenli in https://github.com/nebari-dev/nebari/pull/1975 -- Allow users to specify Azure tags by @iameskild in https://github.com/nebari-dev/nebari/pull/1967 -- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/nebari-dev/nebari/pull/1979 -- Do not try and add argo envs when disabled by @iameskild in https://github.com/nebari-dev/nebari/pull/1926 -- Handle region with care, updates to test suite by @iameskild in https://github.com/nebari-dev/nebari/pull/1930 -- remove custom auth from config schema by @sblair-metrostar in https://github.com/nebari-dev/nebari/pull/1994 -- CLI: handle removed dns options in deploy command by @fangchenli in https://github.com/nebari-dev/nebari/pull/1992 -- Add API docs by @kcpevey in https://github.com/nebari-dev/nebari/pull/1634 -- Upgrade images for jupyterhub-ssh, kbatch by @iameskild in https://github.com/nebari-dev/nebari/pull/1997 -- Add permissions to generate_cli_docs workflow by @iameskild in https://github.com/nebari-dev/nebari/pull/2005 -- standardize regex and messaging for names by @kenafoster in https://github.com/nebari-dev/nebari/pull/2003 -- ENH: specify required fields when retrieving available gcp projects by @fangchenli in https://github.com/nebari-dev/nebari/pull/2008 -- Modify JupyterHub networkPolicy to match existing policy by @iameskild in https://github.com/nebari-dev/nebari/pull/1991 -- Update package dependencies by @iameskild in https://github.com/nebari-dev/nebari/pull/1986 -- CI: Add AWS integration test workflow, clean up by @iameskild in https://github.com/nebari-dev/nebari/pull/1977 -- BUG: fix unboundlocalerror in integration test by @fangchenli in https://github.com/nebari-dev/nebari/pull/1999 -- Auth0/Github auth-provider config validation fix by @sblair-metrostar in https://github.com/nebari-dev/nebari/pull/2009 -- terraform upgrade to 1.5.7 by @sblair-metrostar in https://github.com/nebari-dev/nebari/pull/1998 -- cli init repo auto provision fix by @sblair-metrostar in https://github.com/nebari-dev/nebari/pull/2012 -- Add gcp_cleanup, minor changes by @iameskild in https://github.com/nebari-dev/nebari/pull/2010 -- Fix #2024 by @dcmcand in https://github.com/nebari-dev/nebari/pull/2025 -- Upgrade conda-store to 2023.9.2 by @iameskild in https://github.com/nebari-dev/nebari/pull/2028 -- Add upgrade steps, instructions for 2023.9.1 by @iameskild in https://github.com/nebari-dev/nebari/pull/2029 -- CI: add gcp integration test by @fangchenli in https://github.com/nebari-dev/nebari/pull/2049 -- CLN: remove flake8 from dependencies by @fangchenli in https://github.com/nebari-dev/nebari/pull/2044 -- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/nebari-dev/nebari/pull/2047 -- fix typo in guided init for Digital Ocean by @dcmcand in https://github.com/nebari-dev/nebari/pull/2059 -- CI: add do integration by @fangchenli in https://github.com/nebari-dev/nebari/pull/2060 -- TYP: make all subfolders under kubernetes_services/template non-module by @fangchenli in https://github.com/nebari-dev/nebari/pull/2043 -- TYP: fix most typing errors in provider by @fangchenli in https://github.com/nebari-dev/nebari/pull/2038 -- Fix link to documentation on Nebari Deployment home page by @aktech in https://github.com/nebari-dev/nebari/pull/2063 -- TST: enable timeout config in playwright notebook test by @fangchenli in https://github.com/nebari-dev/nebari/pull/1996 -- DEPS: sync supported python version by @fangchenli in https://github.com/nebari-dev/nebari/pull/2065 -- Test support for Python 3.12 by @aktech in https://github.com/nebari-dev/nebari/pull/2046 -- BUG: fix validation error related to `provider` #2054 by @fangchenli in https://github.com/nebari-dev/nebari/pull/2056 -- CI: improve unit test workflow in CI, revert #2046 by @fangchenli in https://github.com/nebari-dev/nebari/pull/2071 -- TST: enable exact_match config in playwright notebook test by @fangchenli in https://github.com/nebari-dev/nebari/pull/2027 -- CI: move conda build test to separate job by @fangchenli in https://github.com/nebari-dev/nebari/pull/2073 -- Revert conda-store to v0.4.14, #2028 by @iameskild in https://github.com/nebari-dev/nebari/pull/2074 -- ENH/CI: add mypy config, and CI workflow by @fangchenli in https://github.com/nebari-dev/nebari/pull/2066 -- Update upgrade for 2023.10.1 by @kenfoster in https://github.com/nebari-dev/nebari/pull/2080 -- Update RELEASE notes, minor fixes by @iameskild in https://github.com/nebari-dev/nebari/pull/2039 +* Spinup spot instance for CI with cirun by @aktech in https://github.com/nebari-dev/nebari/pull/1882 +* Fix argo-viewer service account reference by @iameskild in https://github.com/nebari-dev/nebari/pull/1881 +* Framework for Nebari deployment via pytest for extensive testing by @aktech in https://github.com/nebari-dev/nebari/pull/1867 +* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/nebari-dev/nebari/pull/1878 +* Test GCP/AWS Deployment with Pytest by @aktech in https://github.com/nebari-dev/nebari/pull/1871 +* Bump DigitalOcean provider to latest by @aktech in https://github.com/nebari-dev/nebari/pull/1891 +* Ensure path is Path object by @iameskild in https://github.com/nebari-dev/nebari/pull/1888 +* enabling viewing hidden files in jupyterlab file explorer by @kalpanachinnappan in https://github.com/nebari-dev/nebari/pull/1893 +* Extension Mechanism Implementation by @costrouc in https://github.com/nebari-dev/nebari/pull/1833 +* Fix import path in deployment tests & misc by @aktech in https://github.com/nebari-dev/nebari/pull/1908 +* pytest:ensure failure on warnings by @costrouc in https://github.com/nebari-dev/nebari/pull/1907 +* workaround for mixed string/posixpath error by @sblair-metrostar in https://github.com/nebari-dev/nebari/pull/1915 +* ENH: Remove aws cli, use boto3 by @fangchenli in https://github.com/nebari-dev/nebari/pull/1920 +* paginator for boto3 ec2 instance types by @sblair-metrostar in https://github.com/nebari-dev/nebari/pull/1923 +* Update README.md -- fix typo. by @teoliphant in https://github.com/nebari-dev/nebari/pull/1925 +* Add more unit tests, add cleanup step for Digital Ocean integration test by @iameskild in https://github.com/nebari-dev/nebari/pull/1910 +* Add cleanup step for AWS integration test, ensure disable_prompt is passed through by @iameskild in https://github.com/nebari-dev/nebari/pull/1921 +* K8s 1.25 + More Improvements by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/1856 +* adding lifecycle ignore to eks node group by @sblair-metrostar in https://github.com/nebari-dev/nebari/pull/1905 +* nebari init unit tests by @sblair-metrostar in https://github.com/nebari-dev/nebari/pull/1931 +* Bug fix - JH singleuser environment getting overwritten by @kenafoster in https://github.com/nebari-dev/nebari/pull/1933 +* Allow users to specify the Azure RG to deploy into by @iameskild in https://github.com/nebari-dev/nebari/pull/1927 +* nebari validate unit tests by @sblair-metrostar in https://github.com/nebari-dev/nebari/pull/1938 +* adding openid connect provider to enable irsa feature by @sblair-metrostar in https://github.com/nebari-dev/nebari/pull/1903 +* nebari upgrade CLI tests by @sblair-metrostar in https://github.com/nebari-dev/nebari/pull/1963 +* CI: Add test coverage by @fangchenli in https://github.com/nebari-dev/nebari/pull/1959 +* nebari cli environment variable handling, support, keycloak, dev tests by @sblair-metrostar in https://github.com/nebari-dev/nebari/pull/1968 +* CI: remove empty notebook to fix pre-commit json check by @fangchenli in https://github.com/nebari-dev/nebari/pull/1976 +* TYP: fix typing error in plugins by @fangchenli in https://github.com/nebari-dev/nebari/pull/1973 +* TYP: fix return class type in hookimpl by @fangchenli in https://github.com/nebari-dev/nebari/pull/1975 +* Allow users to specify Azure tags by @iameskild in https://github.com/nebari-dev/nebari/pull/1967 +* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/nebari-dev/nebari/pull/1979 +* Do not try and add argo envs when disabled by @iameskild in https://github.com/nebari-dev/nebari/pull/1926 +* Handle region with care, updates to test suite by @iameskild in https://github.com/nebari-dev/nebari/pull/1930 +* remove custom auth from config schema by @sblair-metrostar in https://github.com/nebari-dev/nebari/pull/1994 +* CLI: handle removed dns options in deploy command by @fangchenli in https://github.com/nebari-dev/nebari/pull/1992 +* Add API docs by @kcpevey in https://github.com/nebari-dev/nebari/pull/1634 +* Upgrade images for jupyterhub-ssh, kbatch by @iameskild in https://github.com/nebari-dev/nebari/pull/1997 +* Add permissions to generate_cli_docs workflow by @iameskild in https://github.com/nebari-dev/nebari/pull/2005 +* standardize regex and messaging for names by @kenafoster in https://github.com/nebari-dev/nebari/pull/2003 +* ENH: specify required fields when retrieving available gcp projects by @fangchenli in https://github.com/nebari-dev/nebari/pull/2008 +* Modify JupyterHub networkPolicy to match existing policy by @iameskild in https://github.com/nebari-dev/nebari/pull/1991 +* Update package dependencies by @iameskild in https://github.com/nebari-dev/nebari/pull/1986 +* CI: Add AWS integration test workflow, clean up by @iameskild in https://github.com/nebari-dev/nebari/pull/1977 +* BUG: fix unboundlocalerror in integration test by @fangchenli in https://github.com/nebari-dev/nebari/pull/1999 +* Auth0/Github auth-provider config validation fix by @sblair-metrostar in https://github.com/nebari-dev/nebari/pull/2009 +* terraform upgrade to 1.5.7 by @sblair-metrostar in https://github.com/nebari-dev/nebari/pull/1998 +* cli init repo auto provision fix by @sblair-metrostar in https://github.com/nebari-dev/nebari/pull/2012 +* Add gcp_cleanup, minor changes by @iameskild in https://github.com/nebari-dev/nebari/pull/2010 +* Fix #2024 by @dcmcand in https://github.com/nebari-dev/nebari/pull/2025 +* Upgrade conda-store to 2023.9.2 by @iameskild in https://github.com/nebari-dev/nebari/pull/2028 +* Add upgrade steps, instructions for 2023.9.1 by @iameskild in https://github.com/nebari-dev/nebari/pull/2029 +* CI: add gcp integration test by @fangchenli in https://github.com/nebari-dev/nebari/pull/2049 +* CLN: remove flake8 from dependencies by @fangchenli in https://github.com/nebari-dev/nebari/pull/2044 +* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/nebari-dev/nebari/pull/2047 +* fix typo in guided init for Digital Ocean by @dcmcand in https://github.com/nebari-dev/nebari/pull/2059 +* CI: add do integration by @fangchenli in https://github.com/nebari-dev/nebari/pull/2060 +* TYP: make all subfolders under kubernetes_services/template non-module by @fangchenli in https://github.com/nebari-dev/nebari/pull/2043 +* TYP: fix most typing errors in provider by @fangchenli in https://github.com/nebari-dev/nebari/pull/2038 +* Fix link to documentation on Nebari Deployment home page by @aktech in https://github.com/nebari-dev/nebari/pull/2063 +* TST: enable timeout config in playwright notebook test by @fangchenli in https://github.com/nebari-dev/nebari/pull/1996 +* DEPS: sync supported python version by @fangchenli in https://github.com/nebari-dev/nebari/pull/2065 +* Test support for Python 3.12 by @aktech in https://github.com/nebari-dev/nebari/pull/2046 +* BUG: fix validation error related to `provider` #2054 by @fangchenli in https://github.com/nebari-dev/nebari/pull/2056 +* CI: improve unit test workflow in CI, revert #2046 by @fangchenli in https://github.com/nebari-dev/nebari/pull/2071 +* TST: enable exact_match config in playwright notebook test by @fangchenli in https://github.com/nebari-dev/nebari/pull/2027 +* CI: move conda build test to separate job by @fangchenli in https://github.com/nebari-dev/nebari/pull/2073 +* Revert conda-store to v0.4.14, #2028 by @iameskild in https://github.com/nebari-dev/nebari/pull/2074 +* ENH/CI: add mypy config, and CI workflow by @fangchenli in https://github.com/nebari-dev/nebari/pull/2066 +* Update upgrade for 2023.10.1 by @kenfoster in https://github.com/nebari-dev/nebari/pull/2080 +* Update RELEASE notes, minor fixes by @iameskild in https://github.com/nebari-dev/nebari/pull/2039 ### New Contributors - -- @kalpanachinnappan made their first contribution in https://github.com/nebari-dev/nebari/pull/1893 -- @fangchenli made their first contribution in https://github.com/nebari-dev/nebari/pull/1920 -- @teoliphant made their first contribution in https://github.com/nebari-dev/nebari/pull/1925 -- @kenafoster made their first contribution in https://github.com/nebari-dev/nebari/pull/1933 -- @dcmcand made their first contribution in https://github.com/nebari-dev/nebari/pull/2025 +* @kalpanachinnappan made their first contribution in https://github.com/nebari-dev/nebari/pull/1893 +* @fangchenli made their first contribution in https://github.com/nebari-dev/nebari/pull/1920 +* @teoliphant made their first contribution in https://github.com/nebari-dev/nebari/pull/1925 +* @kenafoster made their first contribution in https://github.com/nebari-dev/nebari/pull/1933 +* @dcmcand made their first contribution in https://github.com/nebari-dev/nebari/pull/2025 **Full Changelog**: https://github.com/nebari-dev/nebari/compare/2023.7.2...2023.10.1 + ## Release 2023.7.2 - August 3, 2023 This is a hot-fix release that resolves an issue whereby users in the `analyst` group are unable to launch their JupyterLab server because the name of the viewer-specific `ARGO_TOKEN` was mislabeled; see [PR 1881](https://github.com/nebari-dev/nebari/pull/1881) for more details. ### What's Changed +* Fix argo-viewer service account reference by @iameskild in https://github.com/nebari-dev/nebari/pull/1881 +* Add release notes for 2023.7.2, update release notes for 2023.7.1 by @iameskild in https://github.com/nebari-dev/nebari/pull/1886 -- Fix argo-viewer service account reference by @iameskild in https://github.com/nebari-dev/nebari/pull/1881 -- Add release notes for 2023.7.2, update release notes for 2023.7.1 by @iameskild in https://github.com/nebari-dev/nebari/pull/1886 ## Release 2023.7.1 - July 21, 2023 @@ -406,205 +454,204 @@ This is a hot-fix release that resolves an issue whereby users in the `analyst` ### Feature changes and enhancements -- Addition of Nebari-Workflow-Controller in [PR 1741](https://github.com/nebari-dev/nebari/pull/1741) -- Addition of Argo-Jupyter-Scheduler in [PR 1832](https://github.com/nebari-dev/nebari/pull/1832) -- Make most of the API private +* Addition of Nebari-Workflow-Controller in [PR 1741](https://github.com/nebari-dev/nebari/pull/1741) +* Addition of Argo-Jupyter-Scheduler in [PR 1832](https://github.com/nebari-dev/nebari/pull/1832) +* Make most of the API private ### Breaking Changes -- As mentioned in the above WARNING, clusters running on AWS should perform a [manual backup](https://www.nebari.dev/docs/how-tos/manual-backup) before running the upgrade to the latest version as changes to the AWS VPC will cause the cluster to be destroyed and redeployed. +* As mentioned in the above WARNING, clusters running on AWS should perform a [manual backup](https://www.nebari.dev/docs/how-tos/manual-backup) before running the upgrade to the latest version as changes to the AWS VPC will cause the cluster to be destroyed and redeployed. -### What's Changed -- use conda forge explicitly in conda build test by @pmeier in https://github.com/nebari-dev/nebari/pull/1771 -- document that the upgrade command is for all nebari upgrades by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/1794 -- don't fail CI matrices fast by @pmeier in https://github.com/nebari-dev/nebari/pull/1804 -- unvendor keycloak_metrics_spi by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/1810 -- Dedent fail-fast by @iameskild in https://github.com/nebari-dev/nebari/pull/1815 -- support deploying on existing vpc on aws by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/1807 -- purge most danlging qhub references by @pmeier in https://github.com/nebari-dev/nebari/pull/1802 -- Add Argo Workflow Admission controller by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/1741 -- purge infracost CLI command / CI jobs by @pmeier in https://github.com/nebari-dev/nebari/pull/1820 -- remove unused function parameters and CLI flags by @pmeier in https://github.com/nebari-dev/nebari/pull/1725 -- purge docs and nox by @pmeier in https://github.com/nebari-dev/nebari/pull/1801 -- Add Helm chart lint tool by @viniciusdc in https://github.com/nebari-dev/nebari/pull/1679 -- don't set /etc/hosts in CI by @pmeier in https://github.com/nebari-dev/nebari/pull/1729 -- remove execute permissions on templates by @pmeier in https://github.com/nebari-dev/nebari/pull/1798 -- fix deprecated file deletion by @pmeier in https://github.com/nebari-dev/nebari/pull/1799 -- make nebari API private by @pmeier in https://github.com/nebari-dev/nebari/pull/1778 -- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/nebari-dev/nebari/pull/1831 -- Simplify CI by @iameskild in https://github.com/nebari-dev/nebari/pull/1819 -- Fix edge-case where k8s_version is equal to HIGHEST_SUPPORTED_K8S_VER… by @iameskild in https://github.com/nebari-dev/nebari/pull/1842 -- add more configuration to enable private clusters on AWS by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/1841 -- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/nebari-dev/nebari/pull/1851 -- AWS gov cloud support by @sblair-metrostar in https://github.com/nebari-dev/nebari/pull/1857 -- Pathlib everywhere by @pmeier in https://github.com/nebari-dev/nebari/pull/1773 -- Initial playwright setup by @kcpevey in https://github.com/nebari-dev/nebari/pull/1665 -- Changes required for Jupyter-Scheduler integration by @iameskild in https://github.com/nebari-dev/nebari/pull/1832 -- Update upgrade command in preparation for release by @iameskild in https://github.com/nebari-dev/nebari/pull/1868 -- Add release notes by @iameskild in https://github.com/nebari-dev/nebari/issues/1869 +### What's Changed +* use conda forge explicitly in conda build test by @pmeier in https://github.com/nebari-dev/nebari/pull/1771 +* document that the upgrade command is for all nebari upgrades by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/1794 +* don't fail CI matrices fast by @pmeier in https://github.com/nebari-dev/nebari/pull/1804 +* unvendor keycloak_metrics_spi by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/1810 +* Dedent fail-fast by @iameskild in https://github.com/nebari-dev/nebari/pull/1815 +* support deploying on existing vpc on aws by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/1807 +* purge most danlging qhub references by @pmeier in https://github.com/nebari-dev/nebari/pull/1802 +* Add Argo Workflow Admission controller by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/1741 +* purge infracost CLI command / CI jobs by @pmeier in https://github.com/nebari-dev/nebari/pull/1820 +* remove unused function parameters and CLI flags by @pmeier in https://github.com/nebari-dev/nebari/pull/1725 +* purge docs and nox by @pmeier in https://github.com/nebari-dev/nebari/pull/1801 +* Add Helm chart lint tool by @viniciusdc in https://github.com/nebari-dev/nebari/pull/1679 +* don't set /etc/hosts in CI by @pmeier in https://github.com/nebari-dev/nebari/pull/1729 +* remove execute permissions on templates by @pmeier in https://github.com/nebari-dev/nebari/pull/1798 +* fix deprecated file deletion by @pmeier in https://github.com/nebari-dev/nebari/pull/1799 +* make nebari API private by @pmeier in https://github.com/nebari-dev/nebari/pull/1778 +* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/nebari-dev/nebari/pull/1831 +* Simplify CI by @iameskild in https://github.com/nebari-dev/nebari/pull/1819 +* Fix edge-case where k8s_version is equal to HIGHEST_SUPPORTED_K8S_VER… by @iameskild in https://github.com/nebari-dev/nebari/pull/1842 +* add more configuration to enable private clusters on AWS by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/1841 +* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/nebari-dev/nebari/pull/1851 +* AWS gov cloud support by @sblair-metrostar in https://github.com/nebari-dev/nebari/pull/1857 +* Pathlib everywhere by @pmeier in https://github.com/nebari-dev/nebari/pull/1773 +* Initial playwright setup by @kcpevey in https://github.com/nebari-dev/nebari/pull/1665 +* Changes required for Jupyter-Scheduler integration by @iameskild in https://github.com/nebari-dev/nebari/pull/1832 +* Update upgrade command in preparation for release by @iameskild in https://github.com/nebari-dev/nebari/pull/1868 +* Add release notes by @iameskild in https://github.com/nebari-dev/nebari/issues/1869 ### New Contributors - -- @sblair-metrostar made their first contribution in https://github.com/nebari-dev/nebari/pull/1857 +* @sblair-metrostar made their first contribution in https://github.com/nebari-dev/nebari/pull/1857 **Full Changelog**: https://github.com/nebari-dev/nebari/compare/2023.5.1...2023.7.1 + ### Release 2023.5.1 - May 5, 2023 ### Feature changes and enhancements -- Upgrade Argo-Workflows to version 3.4.4 +* Upgrade Argo-Workflows to version 3.4.4 ### Breaking Changes -- The Argo-Workflows version upgrade will result in a breaking change if the existing Kubernetes CRDs are not deleted (see the NOTE below for more details). -- There is a minor breaking change for the Nebari CLI version shorthand, previously it `nebari -v` and now to align with Python convention, it will be `nebari -V`. +* The Argo-Workflows version upgrade will result in a breaking change if the existing Kubernetes CRDs are not deleted (see the NOTE below for more details). +* There is a minor breaking change for the Nebari CLI version shorthand, previously it `nebari -v` and now to align with Python convention, it will be `nebari -V`. > NOTE: After installing the Nebari version `2023.5.1`, please run `nebari upgrade -c nebari-config.yaml` to upgrade > the `nebari-config.yaml`. This command will also prompt you to delete a few Kubernetes resources (specifically > the Argo-Workflows CRDS and service accounts) before you can upgrade. ### What's Changed - -- Use --quiet flag for conda install in CI by @pmeier in https://github.com/nebari-dev/nebari/pull/1699 -- improve CLI tests by @pmeier in https://github.com/nebari-dev/nebari/pull/1710 -- Fix Existing dashboards by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/1723 -- Fix dashboards by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/1727 -- Typo in the conda_store key by @costrouc in https://github.com/nebari-dev/nebari/pull/1740 -- use -V (upper case) for --version short form by @pmeier in https://github.com/nebari-dev/nebari/pull/1720 -- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/nebari-dev/nebari/pull/1692 -- improve pytest configuration by @pmeier in https://github.com/nebari-dev/nebari/pull/1700 -- fix upgrade command to look for nebari_version instead of qhub_version by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/1693 -- remove lazy import by @pmeier in https://github.com/nebari-dev/nebari/pull/1721 -- fix nebari invocation through python by @pmeier in https://github.com/nebari-dev/nebari/pull/1711 -- Update Argo Workflows to latest version by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/1639 -- Update secret token in release-notes-sync action by @pavithraes in https://github.com/nebari-dev/nebari/pull/1753 -- Typo fix in release-notes-sync action by @pavithraes in https://github.com/nebari-dev/nebari/pull/1756 -- πŸ”„ Synced file(s) with nebari-dev/.github by @nebari-sensei in https://github.com/nebari-dev/nebari/pull/1758 -- Update path in release-notes-sync action by @pavithraes in https://github.com/nebari-dev/nebari/pull/1757 -- Updating heading format in release notes by @pavithraes in https://github.com/nebari-dev/nebari/pull/1761 -- Update vault url by @costrouc in https://github.com/nebari-dev/nebari/pull/1752 -- Fix? contributor test trigger by @pmeier in https://github.com/nebari-dev/nebari/pull/1734 -- Consistent user Experience with y/N. by @AM-O7 in https://github.com/nebari-dev/nebari/pull/1747 -- Fix contributor trigger by @pmeier in https://github.com/nebari-dev/nebari/pull/1765 -- add more debug output to contributor test trigger by @pmeier in https://github.com/nebari-dev/nebari/pull/1766 -- fix copy-paste error by @pmeier in https://github.com/nebari-dev/nebari/pull/1767 -- add instructions insufficient permissions of contributor trigger by @pmeier in https://github.com/nebari-dev/nebari/pull/1772 -- fix invalid escape sequence by @pmeier in https://github.com/nebari-dev/nebari/pull/1770 -- Update AMI in `.cirun.yml` for nebari-dev-ci AWS account by @aktech in https://github.com/nebari-dev/nebari/pull/1776 -- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/nebari-dev/nebari/pull/1768 -- turn warnings into errors with pytest by @pmeier in https://github.com/nebari-dev/nebari/pull/1774 -- purge setup.cfg by @pmeier in https://github.com/nebari-dev/nebari/pull/1781 -- improve pre-commit run on GHA by @pmeier in https://github.com/nebari-dev/nebari/pull/1782 -- Upgrade to k8s 1.24 by @iameskild in https://github.com/nebari-dev/nebari/pull/1760 -- Overloaded dask gateway fix by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/1777 -- Add option to specify GKE release channel by @iameskild in https://github.com/nebari-dev/nebari/pull/1648 -- Update upgrade command, add RELEASE notes by @iameskild in https://github.com/nebari-dev/nebari/pull/1789 +* Use --quiet flag for conda install in CI by @pmeier in https://github.com/nebari-dev/nebari/pull/1699 +* improve CLI tests by @pmeier in https://github.com/nebari-dev/nebari/pull/1710 +* Fix Existing dashboards by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/1723 +* Fix dashboards by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/1727 +* Typo in the conda-store <-> conda_store key by @costrouc in https://github.com/nebari-dev/nebari/pull/1740 +* use -V (upper case) for --version short form by @pmeier in https://github.com/nebari-dev/nebari/pull/1720 +* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/nebari-dev/nebari/pull/1692 +* improve pytest configuration by @pmeier in https://github.com/nebari-dev/nebari/pull/1700 +* fix upgrade command to look for nebari_version instead of qhub_version by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/1693 +* remove lazy import by @pmeier in https://github.com/nebari-dev/nebari/pull/1721 +* fix nebari invocation through python by @pmeier in https://github.com/nebari-dev/nebari/pull/1711 +* Update Argo Workflows to latest version by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/1639 +* Update secret token in release-notes-sync action by @pavithraes in https://github.com/nebari-dev/nebari/pull/1753 +* Typo fix in release-notes-sync action by @pavithraes in https://github.com/nebari-dev/nebari/pull/1756 +* πŸ”„ Synced file(s) with nebari-dev/.github by @nebari-sensei in https://github.com/nebari-dev/nebari/pull/1758 +* Update path in release-notes-sync action by @pavithraes in https://github.com/nebari-dev/nebari/pull/1757 +* Updating heading format in release notes by @pavithraes in https://github.com/nebari-dev/nebari/pull/1761 +* Update vault url by @costrouc in https://github.com/nebari-dev/nebari/pull/1752 +* Fix? contributor test trigger by @pmeier in https://github.com/nebari-dev/nebari/pull/1734 +* Consistent user Experience with y/N. by @AM-O7 in https://github.com/nebari-dev/nebari/pull/1747 +* Fix contributor trigger by @pmeier in https://github.com/nebari-dev/nebari/pull/1765 +* add more debug output to contributor test trigger by @pmeier in https://github.com/nebari-dev/nebari/pull/1766 +* fix copy-paste error by @pmeier in https://github.com/nebari-dev/nebari/pull/1767 +* add instructions insufficient permissions of contributor trigger by @pmeier in https://github.com/nebari-dev/nebari/pull/1772 +* fix invalid escape sequence by @pmeier in https://github.com/nebari-dev/nebari/pull/1770 +* Update AMI in `.cirun.yml` for nebari-dev-ci AWS account by @aktech in https://github.com/nebari-dev/nebari/pull/1776 +* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/nebari-dev/nebari/pull/1768 +* turn warnings into errors with pytest by @pmeier in https://github.com/nebari-dev/nebari/pull/1774 +* purge setup.cfg by @pmeier in https://github.com/nebari-dev/nebari/pull/1781 +* improve pre-commit run on GHA by @pmeier in https://github.com/nebari-dev/nebari/pull/1782 +* Upgrade to k8s 1.24 by @iameskild in https://github.com/nebari-dev/nebari/pull/1760 +* Overloaded dask gateway fix by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/1777 +* Add option to specify GKE release channel by @iameskild in https://github.com/nebari-dev/nebari/pull/1648 +* Update upgrade command, add RELEASE notes by @iameskild in https://github.com/nebari-dev/nebari/pull/1789 ### New Contributors - -- @pmeier made their first contribution in https://github.com/nebari-dev/nebari/pull/1699 -- @AM-O7 made their first contribution in https://github.com/nebari-dev/nebari/pull/1747 +* @pmeier made their first contribution in https://github.com/nebari-dev/nebari/pull/1699 +* @AM-O7 made their first contribution in https://github.com/nebari-dev/nebari/pull/1747 **Full Changelog**: https://github.com/nebari-dev/nebari/compare/2023.4.1...2023.5.1 + ## Release 2023.4.1 - April 12, 2023 > NOTE: Nebari requires Kubernetes version 1.23 and Digital Ocean now requires new clusters to run Kubernetes version 1.24. This means that if you are currently running on Digital Ocean, you should be fine but deploying on a new cluster on Digital Ocean is not possible until we upgrade Kubernetes version (see [issue 1622](https://github.com/nebari-dev/nebari/issues/1622) for more details). + ### Feature changes and enhancements -- Upgrades and improvements to conda-store including a new user-interface and greater administrator capabilities. -- Idle-culler settings can now be configured directly from the `nebari-config.yaml`. +* Upgrades and improvements to conda-store including a new user-interface and greater administrator capabilities. +* Idle-culler settings can now be configured directly from the `nebari-config.yaml`. -### What's Changed -- PR: Raise timeout for jupyter session by @ppwadhwa in https://github.com/nebari-dev/nebari/pull/1646 -- PR lower dashboard launch timeout by @ppwadhwa in https://github.com/nebari-dev/nebari/pull/1647 -- PR: Update dashboard environment by @ppwadhwa in https://github.com/nebari-dev/nebari/pull/1655 -- Fix doc link in README.md by @tkoyama010 in https://github.com/nebari-dev/nebari/pull/1660 -- PR: Update dask environment by @ppwadhwa in https://github.com/nebari-dev/nebari/pull/1654 -- Feature remove jupyterlab news by @costrouc in https://github.com/nebari-dev/nebari/pull/1641 -- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/nebari-dev/nebari/pull/1644 -- Feat GitHub actions before_script and after_script steps by @costrouc in https://github.com/nebari-dev/nebari/pull/1672 -- Remove examples folder by @ppwadhwa in https://github.com/nebari-dev/nebari/pull/1664 -- Fix GH action typos by @kcpevey in https://github.com/nebari-dev/nebari/pull/1677 -- Github Actions CI needs id-token write permissions by @costrouc in https://github.com/nebari-dev/nebari/pull/1682 -- Update AWS force destroy script, include lingering volumes by @iameskild in https://github.com/nebari-dev/nebari/pull/1681 -- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/nebari-dev/nebari/pull/1673 -- Make idle culler settings configurable from the `nebari-config.yaml` by @iameskild in https://github.com/nebari-dev/nebari/pull/1689 -- Update pyproject dependencies and add test to ensure it builds on conda-forge by @iameskild in https://github.com/nebari-dev/nebari/pull/1662 -- Retrieve secrets from Vault, fix test-provider CI by @iameskild in https://github.com/nebari-dev/nebari/pull/1676 -- Pull PyPI secrets from Vault by @iameskild in https://github.com/nebari-dev/nebari/pull/1696 -- Adding newest conda-store 0.4.14 along with superadmin credentials by @costrouc in https://github.com/nebari-dev/nebari/pull/1701 -- Update release notes for 2023.4.1 by @iameskild in https://github.com/nebari-dev/nebari/pull/1722 +### What's Changed +* PR: Raise timeout for jupyter session by @ppwadhwa in https://github.com/nebari-dev/nebari/pull/1646 +* PR lower dashboard launch timeout by @ppwadhwa in https://github.com/nebari-dev/nebari/pull/1647 +* PR: Update dashboard environment by @ppwadhwa in https://github.com/nebari-dev/nebari/pull/1655 +* Fix doc link in README.md by @tkoyama010 in https://github.com/nebari-dev/nebari/pull/1660 +* PR: Update dask environment by @ppwadhwa in https://github.com/nebari-dev/nebari/pull/1654 +* Feature remove jupyterlab news by @costrouc in https://github.com/nebari-dev/nebari/pull/1641 +* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/nebari-dev/nebari/pull/1644 +* Feat GitHub actions before_script and after_script steps by @costrouc in https://github.com/nebari-dev/nebari/pull/1672 +* Remove examples folder by @ppwadhwa in https://github.com/nebari-dev/nebari/pull/1664 +* Fix GH action typos by @kcpevey in https://github.com/nebari-dev/nebari/pull/1677 +* Github Actions CI needs id-token write permissions by @costrouc in https://github.com/nebari-dev/nebari/pull/1682 +* Update AWS force destroy script, include lingering volumes by @iameskild in https://github.com/nebari-dev/nebari/pull/1681 +* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/nebari-dev/nebari/pull/1673 +* Make idle culler settings configurable from the `nebari-config.yaml` by @iameskild in https://github.com/nebari-dev/nebari/pull/1689 +* Update pyproject dependencies and add test to ensure it builds on conda-forge by @iameskild in https://github.com/nebari-dev/nebari/pull/1662 +* Retrieve secrets from Vault, fix test-provider CI by @iameskild in https://github.com/nebari-dev/nebari/pull/1676 +* Pull PyPI secrets from Vault by @iameskild in https://github.com/nebari-dev/nebari/pull/1696 +* Adding newest conda-store 0.4.14 along with superadmin credentials by @costrouc in https://github.com/nebari-dev/nebari/pull/1701 +* Update release notes for 2023.4.1 by @iameskild in https://github.com/nebari-dev/nebari/pull/1722 ### New Contributors - -- @ppwadhwa made their first contribution in https://github.com/nebari-dev/nebari/pull/1646 -- @tkoyama010 made their first contribution in https://github.com/nebari-dev/nebari/pull/1660 +* @ppwadhwa made their first contribution in https://github.com/nebari-dev/nebari/pull/1646 +* @tkoyama010 made their first contribution in https://github.com/nebari-dev/nebari/pull/1660 **Full Changelog**: https://github.com/nebari-dev/nebari/compare/2023.1.1...2023.4.1 ## Release 2023.1.1 - January 30, 2023 ### What's Changed - -- πŸ”„ Synced file(s) with nebari-dev/.github by @nebari-sensei in https://github.com/nebari-dev/nebari/pull/1588 -- Make conda-store file system read-only by default by @alimanfoo in https://github.com/nebari-dev/nebari/pull/1595 -- ENH - Switch to ruff and pre-commit.ci by @trallard in https://github.com/nebari-dev/nebari/pull/1602 -- Migrate to hatch by @iameskild in https://github.com/nebari-dev/nebari/pull/1545 -- Add check_repository_cred function to CLI by @iameskild in https://github.com/nebari-dev/nebari/pull/1605 -- Adding jupyterlab-conda-store extension support to Nebari by @costrouc in https://github.com/nebari-dev/nebari/pull/1564 -- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/nebari-dev/nebari/pull/1613 -- Ensure Argo-Workflow controller containerRuntimeExecutor is set to emissary by @iameskild in https://github.com/nebari-dev/nebari/pull/1614 -- Pass `secret_name` to TF scripts when certificate type = existing by @iameskild in https://github.com/nebari-dev/nebari/pull/1621 -- Pin Nebari dependencies, set k8s version for GKE by @iameskild in https://github.com/nebari-dev/nebari/pull/1624 -- Create aws-force-destroy bash script by @iameskild in https://github.com/nebari-dev/nebari/pull/1611 -- Add option for AWS node-groups to run in a single subnet/AZ by @iameskild in https://github.com/nebari-dev/nebari/pull/1428 -- Add export-users to keycloak CLI command, add dev CLI command by @iameskild in https://github.com/nebari-dev/nebari/pull/1610 -- Unpin packages in default dashboard env by @iameskild in https://github.com/nebari-dev/pull/1628 -- Add release notes for 2023.1.1 by @iameskild in https://github.com/nebari-dev/nebari/pull/1629 -- Set GKE release_channel to unspecified to prevent auto k8s updates by @iameskild in https://github.com/nebari-dev/nebari/pull/1630 -- Update default nebari-dask, nebari image tags by @iameskild in https://github.com/nebari-dev/nebari/pull/1636 +* πŸ”„ Synced file(s) with nebari-dev/.github by @nebari-sensei in https://github.com/nebari-dev/nebari/pull/1588 +* Make conda-store file system read-only by default by @alimanfoo in https://github.com/nebari-dev/nebari/pull/1595 +* ENH - Switch to ruff and pre-commit.ci by @trallard in https://github.com/nebari-dev/nebari/pull/1602 +* Migrate to hatch by @iameskild in https://github.com/nebari-dev/nebari/pull/1545 +* Add check_repository_cred function to CLI by @iameskild in https://github.com/nebari-dev/nebari/pull/1605 +* Adding jupyterlab-conda-store extension support to Nebari by @costrouc in https://github.com/nebari-dev/nebari/pull/1564 +* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/nebari-dev/nebari/pull/1613 +* Ensure Argo-Workflow controller containerRuntimeExecutor is set to emissary by @iameskild in https://github.com/nebari-dev/nebari/pull/1614 +* Pass `secret_name` to TF scripts when certificate type = existing by @iameskild in https://github.com/nebari-dev/nebari/pull/1621 +* Pin Nebari dependencies, set k8s version for GKE by @iameskild in https://github.com/nebari-dev/nebari/pull/1624 +* Create aws-force-destroy bash script by @iameskild in https://github.com/nebari-dev/nebari/pull/1611 +* Add option for AWS node-groups to run in a single subnet/AZ by @iameskild in https://github.com/nebari-dev/nebari/pull/1428 +* Add export-users to keycloak CLI command, add dev CLI command by @iameskild in https://github.com/nebari-dev/nebari/pull/1610 +* Unpin packages in default dashboard env by @iameskild in https://github.com/nebari-dev/pull/1628 +* Add release notes for 2023.1.1 by @iameskild in https://github.com/nebari-dev/nebari/pull/1629 +* Set GKE release_channel to unspecified to prevent auto k8s updates by @iameskild in https://github.com/nebari-dev/nebari/pull/1630 +* Update default nebari-dask, nebari image tags by @iameskild in https://github.com/nebari-dev/nebari/pull/1636 ### New Contributors +* @pre-commit-ci made their first contribution in https://github.com/nebari-dev/nebari/pull/1613 -- @pre-commit-ci made their first contribution in https://github.com/nebari-dev/nebari/pull/1613 ## Release 2022.11.1 - December 1, 2022 ### What's Changed -- cherry-pick Update README logo (#1514) by @aktech in https://github.com/nebari-dev/nebari/pull/1517 -- Release/2022.10.1 by @iameskild in https://github.com/nebari-dev/nebari/pull/1527 -- Add Note about QHub->Nebari rename in old docs by @pavithraes in https://github.com/nebari-dev/nebari/pull/1543 -- πŸ”„ Synced file(s) with nebari-dev/.github by @nebari-sensei in https://github.com/nebari-dev/nebari/pull/1550 -- πŸ”„ Synced file(s) with nebari-dev/.github by @nebari-sensei in https://github.com/nebari-dev/nebari/pull/1551 -- πŸ”„ Synced file(s) with nebari-dev/.github by @nebari-sensei in https://github.com/nebari-dev/nebari/pull/1555 -- πŸ”„ Synced file(s) with nebari-dev/.github by @nebari-sensei in https://github.com/nebari-dev/nebari/pull/1560 -- Small CLI fixes by @iameskild in https://github.com/nebari-dev/nebari/pull/1529 -- πŸ”„ Synced file(s) with nebari-dev/.github by @nebari-sensei in https://github.com/nebari-dev/nebari/pull/1561 -- Render github actions configurations as yaml by @aktech in https://github.com/nebari-dev/nebari/pull/1528 -- Update "QHub" to "Nebari" in example notebooks by @pavithraes in https://github.com/nebari-dev/nebari/pull/1556 -- Update links to Nebari docs in guided init by @pavithraes in https://github.com/nebari-dev/nebari/pull/1557 -- CI: Spinup unique cirun runners for each job by @aktech in https://github.com/nebari-dev/nebari/pull/1563 -- Issue-1417: Improve Dask workers placement on AWS | fixing a minor typo by @limacarvalho in https://github.com/nebari-dev/nebari/pull/1487 -- Update `setup-node` version by @iameskild in https://github.com/nebari-dev/nebari/pull/1570 -- Facilitate CI run for contributor PR by @aktech in https://github.com/nebari-dev/nebari/pull/1568 -- Action to sync release notes with nebari-docs by @pavithraes in https://github.com/nebari-dev/nebari/pull/1554 -- Restore how the dask worker node group is selected by default by @iameskild in https://github.com/nebari-dev/nebari/pull/1577 -- Fix skip check for workflows by @aktech in https://github.com/nebari-dev/nebari/pull/1578 -- πŸ“ Update readme by @trallard in https://github.com/nebari-dev/nebari/pull/1579 -- MAINT - Miscellaneous maintenance tasks by @trallard in https://github.com/nebari-dev/nebari/pull/1580 -- Wait for Test PyPI to upload test release by @iameskild in https://github.com/nebari-dev/nebari/pull/1583 -- Add release notes for 2022.11.1 by @iameskild in https://github.com/nebari-dev/nebari/pull/1584 +* cherry-pick Update README logo (#1514) by @aktech in https://github.com/nebari-dev/nebari/pull/1517 +* Release/2022.10.1 by @iameskild in https://github.com/nebari-dev/nebari/pull/1527 +* Add Note about QHub->Nebari rename in old docs by @pavithraes in https://github.com/nebari-dev/nebari/pull/1543 +* πŸ”„ Synced file(s) with nebari-dev/.github by @nebari-sensei in https://github.com/nebari-dev/nebari/pull/1550 +* πŸ”„ Synced file(s) with nebari-dev/.github by @nebari-sensei in https://github.com/nebari-dev/nebari/pull/1551 +* πŸ”„ Synced file(s) with nebari-dev/.github by @nebari-sensei in https://github.com/nebari-dev/nebari/pull/1555 +* πŸ”„ Synced file(s) with nebari-dev/.github by @nebari-sensei in https://github.com/nebari-dev/nebari/pull/1560 +* Small CLI fixes by @iameskild in https://github.com/nebari-dev/nebari/pull/1529 +* πŸ”„ Synced file(s) with nebari-dev/.github by @nebari-sensei in https://github.com/nebari-dev/nebari/pull/1561 +* Render github actions configurations as yaml by @aktech in https://github.com/nebari-dev/nebari/pull/1528 +* Update "QHub" to "Nebari" in example notebooks by @pavithraes in https://github.com/nebari-dev/nebari/pull/1556 +* Update links to Nebari docs in guided init by @pavithraes in https://github.com/nebari-dev/nebari/pull/1557 +* CI: Spinup unique cirun runners for each job by @aktech in https://github.com/nebari-dev/nebari/pull/1563 +* Issue-1417: Improve Dask workers placement on AWS | fixing a minor typo by @limacarvalho in https://github.com/nebari-dev/nebari/pull/1487 +* Update `setup-node` version by @iameskild in https://github.com/nebari-dev/nebari/pull/1570 +* Facilitate CI run for contributor PR by @aktech in https://github.com/nebari-dev/nebari/pull/1568 +* Action to sync release notes with nebari-docs by @pavithraes in https://github.com/nebari-dev/nebari/pull/1554 +* Restore how the dask worker node group is selected by default by @iameskild in https://github.com/nebari-dev/nebari/pull/1577 +* Fix skip check for workflows by @aktech in https://github.com/nebari-dev/nebari/pull/1578 +* πŸ“ Update readme by @trallard in https://github.com/nebari-dev/nebari/pull/1579 +* MAINT - Miscellaneous maintenance tasks by @trallard in https://github.com/nebari-dev/nebari/pull/1580 +* Wait for Test PyPI to upload test release by @iameskild in https://github.com/nebari-dev/nebari/pull/1583 +* Add release notes for 2022.11.1 by @iameskild in https://github.com/nebari-dev/nebari/pull/1584 + ### New Contributors +* @nebari-sensei made their first contribution in https://github.com/nebari-dev/nebari/pull/1550 +* @limacarvalho made their first contribution in https://github.com/nebari-dev/nebari/pull/1487 -- @nebari-sensei made their first contribution in https://github.com/nebari-dev/nebari/pull/1550 -- @limacarvalho made their first contribution in https://github.com/nebari-dev/nebari/pull/1487 ## Release 2022.10.1 - October 28, 2022 @@ -612,34 +659,33 @@ This is a hot-fix release that resolves an issue whereby users in the `analyst` > The project has recently been renamed from QHub to Nebari. If your deployment is is still managed by `qhub`, performing an inplace upgrade will **IRREVOCABLY BREAK** your deployment. This will cause you to lose any data stored on the platform, including but not limited to, NFS (filesystem) data, conda-store environments, Keycloak users and groups, etc. Please [backup](https://www.nebari.dev/docs/how-tos/manual-backup) your data before attempting an upgrade. + ### Feature changes and enhancements We are happy to announce the first official release of Nebari (formly QHub)! This release lays the groundwork for many exciting new features and improvements to come. This release introduces several important changes which include: - - a major project name change from QHub to Nebari - [PR 1508](https://github.com/nebari-dev/nebari/pull/1508) - a switch from the SemVer to CalVer versioning format - [PR 1501](https://github.com/nebari-dev/nebari/pull/1501) - a new, Typer-based CLI for improved user experience - [PR 1443](https://github.com/Quansight/qhub/pull/1443) + [PR 1519](https://github.com/nebari-dev/nebari/pull/1519) Although breaking changes are never fun, the Nebari development team believes these changes are important for the immediate and future success of the project. If you experience any issues or have any questions about these changes, feel free to open an [issue on our Github repo](https://github.com/nebari-dev/nebari/issues). -### What's Changed -- Switch to CalVer by @iameskild in https://github.com/nebari-dev/nebari/pull/1501 -- Update theme welcome messages to use Nebari by @pavithraes in https://github.com/nebari-dev/nebari/pull/1503 -- Name change QHub --> Nebari by @iameskild in https://github.com/nebari-dev/nebari/pull/1508 -- qhub/initialize: lazy load attributes that require remote information by @FFY00 in https://github.com/nebari-dev/nebari/pull/1509 -- Update README logo reference by @viniciusdc in https://github.com/nebari-dev/nebari/pull/1514 -- Add fix, enhancements and pytests for CLI by @iameskild in https://github.com/nebari-dev/nebari/pull/1498 -- Remove old CLI + cleanup by @iameskild in https://github.com/nebari-dev/nebari/pull/1519 -- Update `skip_remote_state_provision` default value by @viniciusdc in https://github.com/nebari-dev/nebari/pull/1521 -- Add release notes for 2022.10.1 in https://github.com/nebari-dev/nebari/pull/1523 +### What's Changed +* Switch to CalVer by @iameskild in https://github.com/nebari-dev/nebari/pull/1501 +* Update theme welcome messages to use Nebari by @pavithraes in https://github.com/nebari-dev/nebari/pull/1503 +* Name change QHub --> Nebari by @iameskild in https://github.com/nebari-dev/nebari/pull/1508 +* qhub/initialize: lazy load attributes that require remote information by @FFY00 in https://github.com/nebari-dev/nebari/pull/1509 +* Update README logo reference by @viniciusdc in https://github.com/nebari-dev/nebari/pull/1514 +* Add fix, enhancements and pytests for CLI by @iameskild in https://github.com/nebari-dev/nebari/pull/1498 +* Remove old CLI + cleanup by @iameskild in https://github.com/nebari-dev/nebari/pull/1519 +* Update `skip_remote_state_provision` default value by @viniciusdc in https://github.com/nebari-dev/nebari/pull/1521 +* Add release notes for 2022.10.1 in https://github.com/nebari-dev/nebari/pull/1523 ### New Contributors - -- @pavithraes made their first contribution in https://github.com/nebari-dev/nebari/pull/1503 -- @FFY00 made their first contribution in https://github.com/nebari-dev/nebari/pull/1509 +* @pavithraes made their first contribution in https://github.com/nebari-dev/nebari/pull/1503 +* @FFY00 made their first contribution in https://github.com/nebari-dev/nebari/pull/1509 **Note: The following releases (v0.4.5 and lower) were made under the name `Quansight/qhub`.** @@ -655,19 +701,17 @@ Enhancements for this release include: - Updated Traefik version to support the latest Kubernetes API ### What's Changed - -- Update azurerm version by @tjcrone in https://github.com/Quansight/qhub/pull/1471 -- Make CDSDashboards.conda_envs dynamically update from function by @costrouc in https://github.com/Quansight/qhub/pull/1358 -- Fix get_latest_repo_tag fn by @iameskild in https://github.com/Quansight/qhub/pull/1485 -- Nebari Typer CLI by @asmijafar20 in https://github.com/Quansight/qhub/pull/1443 -- Pass AWS `region`, `kubernetes_version` to terraform scripts by @iameskild in https://github.com/Quansight/qhub/pull/1493 -- Enable ebs-csi driver on AWS, add region + kubernetes_version vars by @iameskild in https://github.com/Quansight/qhub/pull/1494 -- Update traefik version + CRD by @iameskild in https://github.com/Quansight/qhub/pull/1489 -- [ENH] Switch default and filesystem name envs by @viniciusdc in https://github.com/Quansight/qhub/pull/1357 +* Update azurerm version by @tjcrone in https://github.com/Quansight/qhub/pull/1471 +* Make CDSDashboards.conda_envs dynamically update from function by @costrouc in https://github.com/Quansight/qhub/pull/1358 +* Fix get_latest_repo_tag fn by @iameskild in https://github.com/Quansight/qhub/pull/1485 +* Nebari Typer CLI by @asmijafar20 in https://github.com/Quansight/qhub/pull/1443 +* Pass AWS `region`, `kubernetes_version` to terraform scripts by @iameskild in https://github.com/Quansight/qhub/pull/1493 +* Enable ebs-csi driver on AWS, add region + kubernetes_version vars by @iameskild in https://github.com/Quansight/qhub/pull/1494 +* Update traefik version + CRD by @iameskild in https://github.com/Quansight/qhub/pull/1489 +* [ENH] Switch default and filesystem name envs by @viniciusdc in https://github.com/Quansight/qhub/pull/1357 ### New Contributors - -- @tjcrone made their first contribution in https://github.com/Quansight/qhub/pull/1471 +* @tjcrone made their first contribution in https://github.com/Quansight/qhub/pull/1471 ### Migration note @@ -679,7 +723,6 @@ to be compatible with the new Nebari version. This is a one-time migration step ### Feature changes and enhancements Enhancements for this release include: - - Bump `conda-store` version to `v0.4.11` and enable overrides - Fully decouple the JupyterLab, JupyterHub and Dask-Worker images from the main codebase - See https://github.com/nebari-dev/nebari-docker-images for images @@ -689,98 +732,95 @@ Enhancements for this release include: - Add support for Kubernetes Kind (local) ### What's Changed - -- Add support for terraform binary download for M1 by @aktech in https://github.com/Quansight/qhub/pull/1370 -- Improvements in the QHub Cost estimate tool by @HarshCasper in https://github.com/Quansight/qhub/pull/1365 -- Add Python-3.10 by @HarshCasper in https://github.com/Quansight/qhub/pull/1352 -- Add backwards compatibility item to test checklist by @viniciusdc in https://github.com/Quansight/qhub/pull/1381 -- add code server version to fix build by @HarshCasper in https://github.com/Quansight/qhub/pull/1383 -- Update Cirun.io config to use labels by @aktech in https://github.com/Quansight/qhub/pull/1379 -- Decouple docker images by @iameskild in https://github.com/Quansight/qhub/pull/1371 -- Set LATEST_SUPPORTED_PYTHON_VERSION as str by @iameskild in https://github.com/Quansight/qhub/pull/1387 -- Integrate kind into local deployment to no longer require minikube for development by @costrouc in https://github.com/Quansight/qhub/pull/1171 -- Upgrade conda-store to 0.4.7 allow for customization by @costrouc in https://github.com/Quansight/qhub/pull/1385 -- [ENH] Bump conda-store to v0.4.9 by @viniciusdc in https://github.com/Quansight/qhub/pull/1392 -- [ENH] Add `pyarrow` and `s3fs` by @viniciusdc in https://github.com/Quansight/qhub/pull/1393 -- Fixing bug in authentication method in Conda-Store authentication by @costrouc in https://github.com/Quansight/qhub/pull/1396 -- CI: Merge test and release to PyPi workflows into one by @HarshCasper in https://github.com/Quansight/qhub/pull/1386 -- Update packages in the dashboard env by @iameskild in https://github.com/Quansight/qhub/pull/1402 -- BUG: Setting behind proxy setting in conda-store to be aware of http vs. https by @costrouc in https://github.com/Quansight/qhub/pull/1404 -- Minor update to release workflow by @iameskild in https://github.com/Quansight/qhub/pull/1406 -- Clean up release workflow by @iameskild in https://github.com/Quansight/qhub/pull/1407 -- Add release notes for v0.4.4 by @iameskild in https://github.com/Quansight/qhub/pull/1408 -- Update Ingress overrides behaviour by @viniciusdc in https://github.com/Quansight/qhub/pull/1420 -- Preserve conda-store image permissions by @iameskild in https://github.com/Quansight/qhub/pull/1419 -- Add project name to jhub helm chart release name by @iameskild in https://github.com/Quansight/qhub/pull/1422 -- Fix for helm extension overrides data type issue by @konkapv in https://github.com/Quansight/qhub/pull/1424 -- Add option to disable tls certificate by @iameskild in https://github.com/Quansight/qhub/pull/1421 -- Fixing provider=existing for local/existing by @costrouc in https://github.com/Quansight/qhub/pull/1425 -- Update release, testing checklist by @iameskild in https://github.com/Quansight/qhub/pull/1397 -- Add `--disable-checks` flag to deploy by @iameskild in https://github.com/Quansight/qhub/pull/1429 -- Adding option to supply additional arguments to ingress via `ingress.terraform_overrides.additional-arguments` by @costrouc in https://github.com/Quansight/qhub/pull/1431 -- Add properties to middleware crd headers by @iameskild in https://github.com/Quansight/qhub/pull/1434 -- Restart conda-store worker when new conda env is added to config.yaml by @iameskild in https://github.com/Quansight/qhub/pull/1437 -- Pin dask ipywidgets version to `7.7.1` by @viniciusdc in https://github.com/Quansight/qhub/pull/1442 -- Set qhub-dask version to 0.4.4 by @iameskild in https://github.com/Quansight/qhub/pull/1470 +* Add support for terraform binary download for M1 by @aktech in https://github.com/Quansight/qhub/pull/1370 +* Improvements in the QHub Cost estimate tool by @HarshCasper in https://github.com/Quansight/qhub/pull/1365 +* Add Python-3.10 by @HarshCasper in https://github.com/Quansight/qhub/pull/1352 +* Add backwards compatibility item to test checklist by @viniciusdc in https://github.com/Quansight/qhub/pull/1381 +* add code server version to fix build by @HarshCasper in https://github.com/Quansight/qhub/pull/1383 +* Update Cirun.io config to use labels by @aktech in https://github.com/Quansight/qhub/pull/1379 +* Decouple docker images by @iameskild in https://github.com/Quansight/qhub/pull/1371 +* Set LATEST_SUPPORTED_PYTHON_VERSION as str by @iameskild in https://github.com/Quansight/qhub/pull/1387 +* Integrate kind into local deployment to no longer require minikube for development by @costrouc in https://github.com/Quansight/qhub/pull/1171 +* Upgrade conda-store to 0.4.7 allow for customization by @costrouc in https://github.com/Quansight/qhub/pull/1385 +* [ENH] Bump conda-store to v0.4.9 by @viniciusdc in https://github.com/Quansight/qhub/pull/1392 +* [ENH] Add `pyarrow` and `s3fs` by @viniciusdc in https://github.com/Quansight/qhub/pull/1393 +* Fixing bug in authentication method in Conda-Store authentication by @costrouc in https://github.com/Quansight/qhub/pull/1396 +* CI: Merge test and release to PyPi workflows into one by @HarshCasper in https://github.com/Quansight/qhub/pull/1386 +* Update packages in the dashboard env by @iameskild in https://github.com/Quansight/qhub/pull/1402 +* BUG: Setting behind proxy setting in conda-store to be aware of http vs. https by @costrouc in https://github.com/Quansight/qhub/pull/1404 +* Minor update to release workflow by @iameskild in https://github.com/Quansight/qhub/pull/1406 +* Clean up release workflow by @iameskild in https://github.com/Quansight/qhub/pull/1407 +* Add release notes for v0.4.4 by @iameskild in https://github.com/Quansight/qhub/pull/1408 +* Update Ingress overrides behaviour by @viniciusdc in https://github.com/Quansight/qhub/pull/1420 +* Preserve conda-store image permissions by @iameskild in https://github.com/Quansight/qhub/pull/1419 +* Add project name to jhub helm chart release name by @iameskild in https://github.com/Quansight/qhub/pull/1422 +* Fix for helm extension overrides data type issue by @konkapv in https://github.com/Quansight/qhub/pull/1424 +* Add option to disable tls certificate by @iameskild in https://github.com/Quansight/qhub/pull/1421 +* Fixing provider=existing for local/existing by @costrouc in https://github.com/Quansight/qhub/pull/1425 +* Update release, testing checklist by @iameskild in https://github.com/Quansight/qhub/pull/1397 +* Add `--disable-checks` flag to deploy by @iameskild in https://github.com/Quansight/qhub/pull/1429 +* Adding option to supply additional arguments to ingress via `ingress.terraform_overrides.additional-arguments` by @costrouc in https://github.com/Quansight/qhub/pull/1431 +* Add properties to middleware crd headers by @iameskild in https://github.com/Quansight/qhub/pull/1434 +* Restart conda-store worker when new conda env is added to config.yaml by @iameskild in https://github.com/Quansight/qhub/pull/1437 +* Pin dask ipywidgets version to `7.7.1` by @viniciusdc in https://github.com/Quansight/qhub/pull/1442 +* Set qhub-dask version to 0.4.4 by @iameskild in https://github.com/Quansight/qhub/pull/1470 ### New Contributors - -- @konkapv made their first contribution in https://github.com/Quansight/qhub/pull/1424 +* @konkapv made their first contribution in https://github.com/Quansight/qhub/pull/1424 ## Release v0.4.3 - July 7, 2022 ### Feature changes and enhancements Enhancements for this release include: - - Integrating Argo Workflow - Integrating kbatch - Adding `cost-estimate` CLI subcommand (Infracost) - Add `panel-serve` as a CDS dashboard option - Add option to use RetroLab instead of default JupyterLab -### What's Changed -- Update the login/Keycloak docs page by @gabalafou in https://github.com/Quansight/qhub/pull/1289 -- Add configuration option so myst parser generates anchors for heading… by @costrouc in https://github.com/Quansight/qhub/pull/1299 -- Image scanning by @HarshCasper in https://github.com/Quansight/qhub/pull/1291 -- Fix display version behavior by @viniciusdc in https://github.com/Quansight/qhub/pull/1275 -- [Docs] Add docs about custom Identity providers for Authentication by @viniciusdc in https://github.com/Quansight/qhub/pull/1273 -- Add prefect token var to CI when needed by @viniciusdc in https://github.com/Quansight/qhub/pull/1279 -- ci: prevent image scans on main image builds by @HarshCasper in https://github.com/Quansight/qhub/pull/1300 -- Integrate `kbatch` by @iameskild in https://github.com/Quansight/qhub/pull/1258 -- add `retrolab` to the base jupyter image by @tonyfast in https://github.com/Quansight/qhub/pull/1222 -- Update pre-commit, remove vale by @iameskild in https://github.com/Quansight/qhub/pull/1282 -- Argo Workflows by @Adam-D-Lewis in https://github.com/Quansight/qhub/pull/1252 -- Update minio, postgresql chart repo location by @iameskild in https://github.com/Quansight/qhub/pull/1308 -- Fix broken AWS, set minimum desired size to 1, enable 0 scaling by @tylerpotts in https://github.com/Quansight/qhub/pull/1304 -- v0.4.2 release notes by @iameskild in https://github.com/Quansight/qhub/pull/1323 -- install dask lab ext from main by @iameskild in https://github.com/Quansight/qhub/pull/1321 -- Overrides default value for dask-labextension by @viniciusdc in https://github.com/Quansight/qhub/pull/1327 -- CI: Add Infracost to GHA CI for infra cost tracking by @HarshCasper in https://github.com/Quansight/qhub/pull/1316 -- Add check for highest supported k8s version by @aktech in https://github.com/Quansight/qhub/pull/1336 -- Increase the default instance sizes by @peytondmurray in https://github.com/Quansight/qhub/pull/1338 -- Add panel-serve as a CDS dashboard option by @iameskild in https://github.com/Quansight/qhub/pull/1070 -- Generate QHub Costs via `infracost` by @HarshCasper in https://github.com/Quansight/qhub/pull/1340 -- Add release-checklist issue template by @iameskild in https://github.com/Quansight/qhub/pull/1314 -- Fix missing import: `rich` : broken qhub init with cloud by @aktech in https://github.com/Quansight/qhub/pull/1353 -- Bump qhub-dask version to 0.4.3 by @peytondmurray in https://github.com/Quansight/qhub/pull/1341 -- Remove the need for AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY to be set with Digital Ocean deployment by @costrouc in https://github.com/Quansight/qhub/pull/1344 -- Revert "Remove the need for AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY to be set with Digital Ocean deployment" by @viniciusdc in https://github.com/Quansight/qhub/pull/1355 -- Upgrade kbatch version by @iameskild in https://github.com/Quansight/qhub/pull/1335 -- Drop support for python 3.7 in dask environment by @peytondmurray in https://github.com/Quansight/qhub/pull/1354 -- Add useful terminal utils to jlab image by @dharhas in https://github.com/Quansight/qhub/pull/1361 -- Tweak bashrc by @dharhas in https://github.com/Quansight/qhub/pull/1363 -- Fix bug where vscode extensions are not installing by @viniciusdc in https://github.com/Quansight/qhub/pull/1360 +### What's Changed +* Update the login/Keycloak docs page by @gabalafou in https://github.com/Quansight/qhub/pull/1289 +* Add configuration option so myst parser generates anchors for heading… by @costrouc in https://github.com/Quansight/qhub/pull/1299 +* Image scanning by @HarshCasper in https://github.com/Quansight/qhub/pull/1291 +* Fix display version behavior by @viniciusdc in https://github.com/Quansight/qhub/pull/1275 +* [Docs] Add docs about custom Identity providers for Authentication by @viniciusdc in https://github.com/Quansight/qhub/pull/1273 +* Add prefect token var to CI when needed by @viniciusdc in https://github.com/Quansight/qhub/pull/1279 +* ci: prevent image scans on main image builds by @HarshCasper in https://github.com/Quansight/qhub/pull/1300 +* Integrate `kbatch` by @iameskild in https://github.com/Quansight/qhub/pull/1258 +* add `retrolab` to the base jupyter image by @tonyfast in https://github.com/Quansight/qhub/pull/1222 +* Update pre-commit, remove vale by @iameskild in https://github.com/Quansight/qhub/pull/1282 +* Argo Workflows by @Adam-D-Lewis in https://github.com/Quansight/qhub/pull/1252 +* Update minio, postgresql chart repo location by @iameskild in https://github.com/Quansight/qhub/pull/1308 +* Fix broken AWS, set minimum desired size to 1, enable 0 scaling by @tylerpotts in https://github.com/Quansight/qhub/pull/1304 +* v0.4.2 release notes by @iameskild in https://github.com/Quansight/qhub/pull/1323 +* install dask lab ext from main by @iameskild in https://github.com/Quansight/qhub/pull/1321 +* Overrides default value for dask-labextension by @viniciusdc in https://github.com/Quansight/qhub/pull/1327 +* CI: Add Infracost to GHA CI for infra cost tracking by @HarshCasper in https://github.com/Quansight/qhub/pull/1316 +* Add check for highest supported k8s version by @aktech in https://github.com/Quansight/qhub/pull/1336 +* Increase the default instance sizes by @peytondmurray in https://github.com/Quansight/qhub/pull/1338 +* Add panel-serve as a CDS dashboard option by @iameskild in https://github.com/Quansight/qhub/pull/1070 +* Generate QHub Costs via `infracost` by @HarshCasper in https://github.com/Quansight/qhub/pull/1340 +* Add release-checklist issue template by @iameskild in https://github.com/Quansight/qhub/pull/1314 +* Fix missing import: `rich` : broken qhub init with cloud by @aktech in https://github.com/Quansight/qhub/pull/1353 +* Bump qhub-dask version to 0.4.3 by @peytondmurray in https://github.com/Quansight/qhub/pull/1341 +* Remove the need for AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY to be set with Digital Ocean deployment by @costrouc in https://github.com/Quansight/qhub/pull/1344 +* Revert "Remove the need for AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY to be set with Digital Ocean deployment" by @viniciusdc in https://github.com/Quansight/qhub/pull/1355 +* Upgrade kbatch version by @iameskild in https://github.com/Quansight/qhub/pull/1335 +* Drop support for python 3.7 in dask environment by @peytondmurray in https://github.com/Quansight/qhub/pull/1354 +* Add useful terminal utils to jlab image by @dharhas in https://github.com/Quansight/qhub/pull/1361 +* Tweak bashrc by @dharhas in https://github.com/Quansight/qhub/pull/1363 +* Fix bug where vscode extensions are not installing by @viniciusdc in https://github.com/Quansight/qhub/pull/1360 ### New Contributors - -- @gabalafou made their first contribution in https://github.com/Quansight/qhub/pull/1289 -- @peytondmurray made their first contribution in https://github.com/Quansight/qhub/pull/1338 -- @dharhas made their first contribution in https://github.com/Quansight/qhub/pull/1361 +* @gabalafou made their first contribution in https://github.com/Quansight/qhub/pull/1289 +* @peytondmurray made their first contribution in https://github.com/Quansight/qhub/pull/1338 +* @dharhas made their first contribution in https://github.com/Quansight/qhub/pull/1361 **Full Changelog**: https://github.com/Quansight/qhub/compare/v0.4.1...v0.4.3 + ## Release v0.4.2 - June 8, 2022 ### Incident postmortem @@ -806,22 +846,21 @@ Given the impact and severity of this bug, the team has decided to quickly cut a ### Bug fixes This release is a hotfix for the issue summarized in the following: +* [issue 1319](https://github.com/Quansight/qhub/issues/1319) +* [issue 1306](https://github.com/Quansight/qhub/issues/1306) +* [issue 1302](https://github.com/Quansight/qhub/issues/1302) -- [issue 1319](https://github.com/Quansight/qhub/issues/1319) -- [issue 1306](https://github.com/Quansight/qhub/issues/1306) -- [issue 1302](https://github.com/Quansight/qhub/issues/1302) ### What's Changed +* Update minio, postgresql chart repo location by @iameskild in [PR 1308](https://github.com/Quansight/qhub/pull/1308) +* Fix broken AWS, set minimum desired size to 1, enable 0 scaling by @tylerpotts in [PR 1304](https://github.com/Quansight/qhub/issues/1304) -- Update minio, postgresql chart repo location by @iameskild in [PR 1308](https://github.com/Quansight/qhub/pull/1308) -- Fix broken AWS, set minimum desired size to 1, enable 0 scaling by @tylerpotts in [PR 1304](https://github.com/Quansight/qhub/issues/1304) ## Release v0.4.1 - May 10, 2022 ### Feature changes and enhancements Enhancements for this release include: - - Add support for pinning the IP address of the load balancer via terraform overrides - Upgrade to Conda-Store to `v0.3.15` - Add ability to limit JupyterHub profiles based on users/groups @@ -831,57 +870,55 @@ Enhancements for this release include: This release addresses several bugs with a slight emphasis on stabilizing the core services while also improving the end user experience. ### What's Changed - -- [BUG] Adding back feature of limiting profiles for users and groups by @costrouc in [PR 1169](https://github.com/Quansight/qhub/pull/1169) -- DOCS: Add release notes for v0.4.0 release by @HarshCasper in [PR 1170](https://github.com/Quansight/qhub/pull/1170) -- Move ipython config within jupyterlab to docker image with more robust jupyterlab ssh tests by @costrouc in [PR 1143](https://github.com/Quansight/qhub/pull/1143) -- Removing custom dask_gateway from qhub and idle_timeout for dask clusters to 30 min by @costrouc in [PR 1151](https://github.com/Quansight/qhub/pull/1151) -- Overrides.json now managed by qhub configmaps instead of inside docker image by @costrouc in [PR 1173](https://github.com/Quansight/qhub/pull/1173) -- Adding examples to QHub jupyterlab by @costrouc in [PR 1176](https://github.com/Quansight/qhub/pull/1176) -- Bump conda-store version to 0.3.12 by @costrouc in [PR 1179](https://github.com/Quansight/qhub/pull/1179) -- Fixing concurrency not being specified in configuration by @costrouc in [PR 1180](https://github.com/Quansight/qhub/pull/1180) -- Adding ipykernel as default to environment along with ensure conda-store restarted on config change by @costrouc in [PR 1181](https://github.com/Quansight/qhub/pull/1181) -- keycloak dev docs by @danlester in [PR 1184](https://github.com/Quansight/qhub/pull/1184) -- Keycloakdev2 by @danlester in [PR 1185](https://github.com/Quansight/qhub/pull/1185) -- Setting minio storage to by default be same as filesystem size for Conda-Store environments by @costrouc in [PR 1188](https://github.com/Quansight/qhub/pull/1188) -- Bump Conda-Store version in Qhub to 0.3.13 by @costrouc in [PR 1189](https://github.com/Quansight/qhub/pull/1189) -- Upgrade mrparkers to 3.7.0 by @danlester in [PR 1183](https://github.com/Quansight/qhub/pull/1183) -- Mdformat tables by @danlester in [PR 1186](https://github.com/Quansight/qhub/pull/1186) -- [ImgBot] Optimize images by @imgbot in [PR 1187](https://github.com/Quansight/qhub/pull/1187) -- Bump conda-store version to 0.3.14 by @costrouc in [PR 1192](https://github.com/Quansight/qhub/pull/1192) -- Allow terraform init to upgrade providers within version specification by @costrouc in [PR 1194](https://github.com/Quansight/qhub/pull/1194) -- Adding missing **init** files by @costrouc in [PR 1196](https://github.com/Quansight/qhub/pull/1196) -- Release 0.3.15 for Conda-Store by @costrouc in [PR 1205](https://github.com/Quansight/qhub/pull/1205) -- Profilegroups by @danlester in [PR 1203](https://github.com/Quansight/qhub/pull/1203) -- Render `.gitignore`, black py files by @iameskild in [PR 1206](https://github.com/Quansight/qhub/pull/1206) -- Update qhub-dask pinned version by @iameskild in [PR 1224](https://github.com/Quansight/qhub/pull/1224) -- Fix env doc links and add corresponding tests by @aktech in [PR 1216](https://github.com/Quansight/qhub/pull/1216) -- Update conda-store-environment variable `type` by @iameskild in [PR 1213](https://github.com/Quansight/qhub/pull/1213) -- Update release notes - justification for changes in `v0.4.0` by @iameskild in [PR 1178](https://github.com/Quansight/qhub/pull/1178) -- Support for pinning the IP address of the load balancer via terraform overrides by @aktech in [PR 1235](https://github.com/Quansight/qhub/pull/1235) -- Bump moment from 2.29.1 to 2.29.2 in /tests_e2e by @dependabot in [PR 1241](https://github.com/Quansight/qhub/pull/1241) -- Update cdsdashboards to 0.6.1, Voila to 0.3.5 by @danlester in [PR 1240](https://github.com/Quansight/qhub/pull/1240) -- Bump minimist from 1.2.5 to 1.2.6 in /tests_e2e by @dependabot in [PR 1208](https://github.com/Quansight/qhub/pull/1208) -- output check fix by @Adam-D-Lewis in [PR 1244](https://github.com/Quansight/qhub/pull/1244) -- Update panel version to fix jinja2 recent issue by @viniciusdc in [PR 1248](https://github.com/Quansight/qhub/pull/1248) -- Add support for terraform overrides in cloud and VPC deployment for Azure by @aktech in [PR 1253](https://github.com/Quansight/qhub/pull/1253) -- Add test-release workflow by @iameskild in [PR 1245](https://github.com/Quansight/qhub/pull/1245) -- Bump async from 3.2.0 to 3.2.3 in /tests_e2e by @dependabot in [PR 1260](https://github.com/Quansight/qhub/pull/1260) -- [WIP] Add support for VPC deployment for GCP via terraform overrides by @aktech in [PR 1259](https://github.com/Quansight/qhub/pull/1259) -- Update login instructions for training by @iameskild in [PR 1261](https://github.com/Quansight/qhub/pull/1261) -- Add docs for general node upgrade by @iameskild in [PR 1246](https://github.com/Quansight/qhub/pull/1246) -- [ImgBot] Optimize images by @imgbot in [PR 1264](https://github.com/Quansight/qhub/pull/1264) -- Fix project name and domain at None by @pierrotsmnrd in [PR 856](https://github.com/Quansight/qhub/pull/856) -- Adding name convention validator for QHub project name by @viniciusdc in [PR 761](https://github.com/Quansight/qhub/pull/761) -- Minor doc updates by @iameskild in [PR 1268](https://github.com/Quansight/qhub/pull/1268) -- Enable display of Qhub version by @viniciusdc in [PR 1256](https://github.com/Quansight/qhub/pull/1256) -- Fix missing region from AWS provider by @viniciusdc in [PR 1271](https://github.com/Quansight/qhub/pull/1271) -- Re-enable GPU profiles for GCP/AWS by @viniciusdc in [PR 1219](https://github.com/Quansight/qhub/pull/1219) -- Release notes for `v0.4.1` by @iameskild in [PR 1272](https://github.com/Quansight/qhub/pull/1272) +* [BUG] Adding back feature of limiting profiles for users and groups by @costrouc in [PR 1169](https://github.com/Quansight/qhub/pull/1169) +* DOCS: Add release notes for v0.4.0 release by @HarshCasper in [PR 1170](https://github.com/Quansight/qhub/pull/1170) +* Move ipython config within jupyterlab to docker image with more robust jupyterlab ssh tests by @costrouc in [PR 1143](https://github.com/Quansight/qhub/pull/1143) +* Removing custom dask_gateway from qhub and idle_timeout for dask clusters to 30 min by @costrouc in [PR 1151](https://github.com/Quansight/qhub/pull/1151) +* Overrides.json now managed by qhub configmaps instead of inside docker image by @costrouc in [PR 1173](https://github.com/Quansight/qhub/pull/1173) +* Adding examples to QHub jupyterlab by @costrouc in [PR 1176](https://github.com/Quansight/qhub/pull/1176) +* Bump conda-store version to 0.3.12 by @costrouc in [PR 1179](https://github.com/Quansight/qhub/pull/1179) +* Fixing concurrency not being specified in configuration by @costrouc in [PR 1180](https://github.com/Quansight/qhub/pull/1180) +* Adding ipykernel as default to environment along with ensure conda-store restarted on config change by @costrouc in [PR 1181](https://github.com/Quansight/qhub/pull/1181) +* keycloak dev docs by @danlester in [PR 1184](https://github.com/Quansight/qhub/pull/1184) +* Keycloakdev2 by @danlester in [PR 1185](https://github.com/Quansight/qhub/pull/1185) +* Setting minio storage to by default be same as filesystem size for Conda-Store environments by @costrouc in [PR 1188](https://github.com/Quansight/qhub/pull/1188) +* Bump Conda-Store version in Qhub to 0.3.13 by @costrouc in [PR 1189](https://github.com/Quansight/qhub/pull/1189) +* Upgrade mrparkers to 3.7.0 by @danlester in [PR 1183](https://github.com/Quansight/qhub/pull/1183) +* Mdformat tables by @danlester in [PR 1186](https://github.com/Quansight/qhub/pull/1186) +* [ImgBot] Optimize images by @imgbot in [PR 1187](https://github.com/Quansight/qhub/pull/1187) +* Bump conda-store version to 0.3.14 by @costrouc in [PR 1192](https://github.com/Quansight/qhub/pull/1192) +* Allow terraform init to upgrade providers within version specification by @costrouc in [PR 1194](https://github.com/Quansight/qhub/pull/1194) +* Adding missing __init__ files by @costrouc in [PR 1196](https://github.com/Quansight/qhub/pull/1196) +* Release 0.3.15 for Conda-Store by @costrouc in [PR 1205](https://github.com/Quansight/qhub/pull/1205) +* Profilegroups by @danlester in [PR 1203](https://github.com/Quansight/qhub/pull/1203) +* Render `.gitignore`, black py files by @iameskild in [PR 1206](https://github.com/Quansight/qhub/pull/1206) +* Update qhub-dask pinned version by @iameskild in [PR 1224](https://github.com/Quansight/qhub/pull/1224) +* Fix env doc links and add corresponding tests by @aktech in [PR 1216](https://github.com/Quansight/qhub/pull/1216) +* Update conda-store-environment variable `type` by @iameskild in [PR 1213](https://github.com/Quansight/qhub/pull/1213) +* Update release notes - justification for changes in `v0.4.0` by @iameskild in [PR 1178](https://github.com/Quansight/qhub/pull/1178) +* Support for pinning the IP address of the load balancer via terraform overrides by @aktech in [PR 1235](https://github.com/Quansight/qhub/pull/1235) +* Bump moment from 2.29.1 to 2.29.2 in /tests_e2e by @dependabot in [PR 1241](https://github.com/Quansight/qhub/pull/1241) +* Update cdsdashboards to 0.6.1, Voila to 0.3.5 by @danlester in [PR 1240](https://github.com/Quansight/qhub/pull/1240) +* Bump minimist from 1.2.5 to 1.2.6 in /tests_e2e by @dependabot in [PR 1208](https://github.com/Quansight/qhub/pull/1208) +* output check fix by @Adam-D-Lewis in [PR 1244](https://github.com/Quansight/qhub/pull/1244) +* Update panel version to fix jinja2 recent issue by @viniciusdc in [PR 1248](https://github.com/Quansight/qhub/pull/1248) +* Add support for terraform overrides in cloud and VPC deployment for Azure by @aktech in [PR 1253](https://github.com/Quansight/qhub/pull/1253) +* Add test-release workflow by @iameskild in [PR 1245](https://github.com/Quansight/qhub/pull/1245) +* Bump async from 3.2.0 to 3.2.3 in /tests_e2e by @dependabot in [PR 1260](https://github.com/Quansight/qhub/pull/1260) +* [WIP] Add support for VPC deployment for GCP via terraform overrides by @aktech in [PR 1259](https://github.com/Quansight/qhub/pull/1259) +* Update login instructions for training by @iameskild in [PR 1261](https://github.com/Quansight/qhub/pull/1261) +* Add docs for general node upgrade by @iameskild in [PR 1246](https://github.com/Quansight/qhub/pull/1246) +* [ImgBot] Optimize images by @imgbot in [PR 1264](https://github.com/Quansight/qhub/pull/1264) +* Fix project name and domain at None by @pierrotsmnrd in [PR 856](https://github.com/Quansight/qhub/pull/856) +* Adding name convention validator for QHub project name by @viniciusdc in [PR 761](https://github.com/Quansight/qhub/pull/761) +* Minor doc updates by @iameskild in [PR 1268](https://github.com/Quansight/qhub/pull/1268) +* Enable display of Qhub version by @viniciusdc in [PR 1256](https://github.com/Quansight/qhub/pull/1256) +* Fix missing region from AWS provider by @viniciusdc in [PR 1271](https://github.com/Quansight/qhub/pull/1271) +* Re-enable GPU profiles for GCP/AWS by @viniciusdc in [PR 1219](https://github.com/Quansight/qhub/pull/1219) +* Release notes for `v0.4.1` by @iameskild in [PR 1272](https://github.com/Quansight/qhub/pull/1272) ### New Contributors - -- @dependabot made their first contribution in [PR 1241](https://github.com/Quansight/qhub/pull/1241) +* @dependabot made their first contribution in [PR 1241](https://github.com/Quansight/qhub/pull/1241) [**Full Changelog**](https://github.com/Quansight/qhub/compare/v0.4.0...v0.4.1) @@ -899,7 +936,6 @@ There are no breaking changes or API changes. ## Release v0.4.0 - March 17, 2022 **WARNING** - > If you're looking for a stable version of QHub, please consider `v0.3.14`. The `v0.4.0` has many breaking changes and has rough edges that will be resolved in upcoming point releases. We are happy to announce the release of `v0.4.0`! This release lays the groundwork for many exciting new features and improvements in the future, stay tuned. @@ -915,13 +951,13 @@ These design changes were considered important enough that the development team and provide justification for them. - Replace Terraforms resource targeting with staged Terraform deployments. - - _Justification_: using Terraform resource targeting was never an ideal way of handing off outputs from stage to the next and Terraform explicitly warns its users that it's only + - *Justification*: using Terraform resource targeting was never an ideal way of handing off outputs from stage to the next and Terraform explicitly warns its users that it's only intended to be used "for exceptional situations such as recovering from errors or mistakes". - Fully remove `cookiecutter` as a templating mechanism. - - _Justification_: Although `cookiecutter` has its benefits, we were becoming overly reliant on it as a means of rendering various scripts needed for the deployment. Reading through + - *Justification*: Although `cookiecutter` has its benefits, we were becoming overly reliant on it as a means of rendering various scripts needed for the deployment. Reading through Terraform scripts with scattered `cookiecutter` statements was increasing troublesome and a bit intimidating. Our IDEs are also much happier about this change. - Removing users and groups from the `qhub-config.yaml` and replacing user management with Keycloak. - - _Justification_: Up until now, any change to QHub deployment needed to be made in the `qhub-config.yaml` which had the benefit of centralizing any configuration. However it + - *Justification*: Up until now, any change to QHub deployment needed to be made in the `qhub-config.yaml` which had the benefit of centralizing any configuration. However it also potentially limited the kinds of user management tasks while also causing the `qhub-config.yaml` to balloon in size. Another benefit of removing users and groups from the `qhub-config.yaml` that deserves highlighting is that user management no longer requires a full redeployment. @@ -1296,7 +1332,7 @@ Explicit user facing changes: in format `X.Y.Z` 5. Create a git tag pointing to the release branch once fully tested and version numbers are incremented `v` ---- +______________________________________________________________________ ## Release 0.2.3 - February 5, 2021 From f3c7c29a2b6571bf6cc577bb83d774faebe052ff Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 7 Oct 2024 22:50:20 +0000 Subject: [PATCH 6/9] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/pre-commit/pre-commit-hooks: v4.6.0 β†’ v5.0.0](https://github.com/pre-commit/pre-commit-hooks/compare/v4.6.0...v5.0.0) --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index caf60392..98bbd147 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -36,7 +36,7 @@ repos: # Misc... - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.6.0 + rev: v5.0.0 # ref: https://github.com/pre-commit/pre-commit-hooks#hooks-available hooks: # Autoformat: Makes sure files end in a newline and only a newline From e6db343e15de55a5e5ab5d0bb8ab4804eb49d6f0 Mon Sep 17 00:00:00 2001 From: Amit Kumar Date: Tue, 29 Oct 2024 23:21:52 +0530 Subject: [PATCH 7/9] Migrate nebari slurm docs (#535) Co-authored-by: Vinicius D. Cerutti <51954708+viniciusdc@users.noreply.github.com> --- docs/docs/references/RELEASE.md | 2 +- .../_static/images/architecture.png | Bin 0 -> 90186 bytes .../_static/images/qhub-dashboards-bug.png | Bin 0 -> 53306 bytes .../images/qhub-dask-gateway-cluster.png | Bin 0 -> 44504 bytes .../_static/images/qhub-dask-gateway.png | Bin 0 -> 31091 bytes .../images/qhub-grafana-node-exporter.png | Bin 0 -> 129027 bytes .../_static/images/qhub-grafana-slurm.png | Bin 0 -> 105875 bytes .../_static/images/qhub-grafana-traefik.png | Bin 0 -> 101155 bytes .../images/qhub-jupyterlab-profile.png | Bin 0 -> 24633 bytes .../_static/images/qhub-landing-page.png | Bin 0 -> 48998 bytes docs/nebari-slurm/benchmark.md | 99 +++++ docs/nebari-slurm/comparison.md | 79 ++++ docs/nebari-slurm/configuration.md | 413 ++++++++++++++++++ docs/nebari-slurm/development.md | 153 +++++++ docs/nebari-slurm/faq.md | 24 + docs/nebari-slurm/installation.md | 157 +++++++ docs/nebari-slurm/overview.mdx | 61 +++ docs/nebari-slurm/slurm.md | 151 +++++++ docs/sidebarsSlurm.js | 49 ++- 19 files changed, 1180 insertions(+), 8 deletions(-) create mode 100644 docs/nebari-slurm/_static/images/architecture.png create mode 100644 docs/nebari-slurm/_static/images/qhub-dashboards-bug.png create mode 100644 docs/nebari-slurm/_static/images/qhub-dask-gateway-cluster.png create mode 100644 docs/nebari-slurm/_static/images/qhub-dask-gateway.png create mode 100644 docs/nebari-slurm/_static/images/qhub-grafana-node-exporter.png create mode 100644 docs/nebari-slurm/_static/images/qhub-grafana-slurm.png create mode 100644 docs/nebari-slurm/_static/images/qhub-grafana-traefik.png create mode 100644 docs/nebari-slurm/_static/images/qhub-jupyterlab-profile.png create mode 100644 docs/nebari-slurm/_static/images/qhub-landing-page.png create mode 100644 docs/nebari-slurm/benchmark.md create mode 100644 docs/nebari-slurm/comparison.md create mode 100644 docs/nebari-slurm/configuration.md create mode 100644 docs/nebari-slurm/development.md create mode 100644 docs/nebari-slurm/faq.md create mode 100644 docs/nebari-slurm/installation.md create mode 100644 docs/nebari-slurm/slurm.md diff --git a/docs/docs/references/RELEASE.md b/docs/docs/references/RELEASE.md index e3343dd1..4bf6a0ac 100644 --- a/docs/docs/references/RELEASE.md +++ b/docs/docs/references/RELEASE.md @@ -1312,7 +1312,7 @@ Explicit user facing changes: - `qhub deploy -c qhub-config.yaml` no longer prompts unsupported argument for `load_config_file`. - Minor changes on the Step-by-Step walkthrough on the docs. -- Revamp of README.md to make it concise and highlight QHub HPC. +- Revamp of README.md to make it concise and highlight Nebari Slurm. ### Breaking changes diff --git a/docs/nebari-slurm/_static/images/architecture.png b/docs/nebari-slurm/_static/images/architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..d6cdf169f9277c2d04edd511467d0abe9f213d40 GIT binary patch literal 90186 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ȳ=O9K9WZbZ?bKFDNf z;)4T}yM6`%%!r&oC6o_{eL~hT?G^DBOQ>P_QT6UjCv7`Wze2q`SojV>Fs?#SJ)(fT z?pwfp#;>)Ui9bTT?+c~9=DGYRzOfD_c;at0e zx7ls5B&CnyP3#%<>2f86%(0vW+jv=d?j!VTq0Pj+r<|Q9CoPVAz80kjEB9$su{yMD zD*=1|9K`)I=qXZpp7t|#PT&E%2v|EVwst94+HLnr$(6njvUDYx%QS8*&W{_O4ARF< zbZnCXVK*Hb5zcP$rz$ulA0F@qHaxsne<{pCx}Sxa%5l|`TjDGX0Ao!NmhHOw?aKSF zljexqbeZ(`cEGACL?q-X^VI8iHsi+b8FF(eo(6U~oojUV+0V^ON)|eMpJ3udy^dB5=_Z^EMub~PZ_;j^}wZHXJ zl5YROA;34Ac;FFQ7<4o^GGeCxVE1_k&`>9)AS5%%DF0!@v%D4fSq0?wfFT9^=jX`V z_L5X98&q+1k*2aeOED;J#(;fu(1K0n>bUwgpE}R=<9Nh2a0~sWh@FVl^_kju>1}=o zQC!_$sdx9Y$fН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 CVS$$b literal 0 HcmV?d00001 diff --git a/docs/nebari-slurm/_static/images/qhub-dashboards-bug.png b/docs/nebari-slurm/_static/images/qhub-dashboards-bug.png new file mode 100644 index 0000000000000000000000000000000000000000..0d6fb3a463c2f349a6a38205fa1260aeed934d81 GIT binary patch literal 53306 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 literal 0 HcmV?d00001 diff --git a/docs/nebari-slurm/_static/images/qhub-dask-gateway-cluster.png b/docs/nebari-slurm/_static/images/qhub-dask-gateway-cluster.png new file mode 100644 index 0000000000000000000000000000000000000000..a2201edaf2261db2b423c4571df3e0384225c281 GIT binary patch literal 44504 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%0D2^!yZ~{ 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 W13i1;Mt|JQN>y1?sY2nw)BgoQBCDYQ literal 0 HcmV?d00001 diff --git a/docs/nebari-slurm/_static/images/qhub-grafana-node-exporter.png b/docs/nebari-slurm/_static/images/qhub-grafana-node-exporter.png new file mode 100644 index 0000000000000000000000000000000000000000..b649946e77befe3d5c78cc9b542f378b916a9185 GIT binary patch literal 129027 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 z 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 KYYFW9@BanpWX$sb literal 0 HcmV?d00001 diff --git a/docs/nebari-slurm/_static/images/qhub-jupyterlab-profile.png b/docs/nebari-slurm/_static/images/qhub-jupyterlab-profile.png new file mode 100644 index 0000000000000000000000000000000000000000..b4632337781fc95a10a1a7df6c2ccb61cea3a7d2 GIT binary patch literal 24633 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 O%h}U*mZjzwe*GWCf}Xtq literal 0 HcmV?d00001 diff --git a/docs/nebari-slurm/_static/images/qhub-landing-page.png b/docs/nebari-slurm/_static/images/qhub-landing-page.png new file mode 100644 index 0000000000000000000000000000000000000000..83b535a55a8335a0dfe312d0a737ed59c7cc1854 GIT binary patch literal 48998 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 with the filesystem that you want to +test. `df -h` can be a great way to see where each drive is +mounted. `fio` will need the ability to read/write in the given +directory. + +IOPs (input/output operations per second) + +### Maximum Write Throughput + +```shell +fio --ioengine=sync --direct=0 \ + --fsync_on_close=1 --randrepeat=0 --nrfiles=1 --name=seqwrite --rw=write \ + --bs=1m --size=20G --end_fsync=1 --fallocate=none --overwrite=0 --numjobs=1 \ + --directory= --loops=10 +``` + +### Maximum Write IOPs + +```shell +fio --ioengine=sync --direct=0 \ + --fsync_on_close=1 --randrepeat=0 --nrfiles=1 --name=randwrite --rw=randwrite \ + --bs=4K --size=1G --end_fsync=1 --fallocate=none --overwrite=0 --numjobs=80 \ + --sync=1 --directory= --loops=10 +``` + +### Maximum Read Throughput + +```shell +fio --ioengine=sync --direct=0 \ + --fsync_on_close=1 --randrepeat=0 --nrfiles=1 --name=seqread --rw=read \ + --bs=1m --size=240G --end_fsync=1 --fallocate=none --overwrite=0 --numjobs=1 \ + --directory= --invalidate=1 --loops=10 +``` + +### Maximum Read IOPs + +```shell +fio --ioengine=sync --direct=0 \ + --fsync_on_close=1 --randrepeat=0 --nrfiles=1 --name=randread --rw=randread \ + --bs=4K --size=1G --end_fsync=1 --fallocate=none --overwrite=0 --numjobs=20 \ + --sync=1 --invalidate=1 --directory= --loops=10 +``` + +## Network + +To test network latency and bandwidth there needs to be a source and +destination that you wish to test. It will expose a given port by +default `5201` with iperf. + +### Bandwidth + +Start a server on a given `` + +```shell +iperf3 -s +``` + +No on the `` machine run + +```shell +iperf3 -c +``` + +This will measure the bandwidth of the link between the nodes from +`` to ``. This means that if you are using a provider where +your Internet have very different upload vs. download speeds you will +see very different results in the direction. Add a `-R` flag to the +client to test the other direction. + +### Latency + +[ping](https://linux.die.net/man/8/ping) is a great way to watch the +latency between `` and ``. + +From the src machine run + +```shell +ping -4 -c 10 +``` + +Keep in mind that ping is the bi-directional (round trip) time. So +dividing by 2 is roughly the latency. diff --git a/docs/nebari-slurm/comparison.md b/docs/nebari-slurm/comparison.md new file mode 100644 index 00000000..de7ec399 --- /dev/null +++ b/docs/nebari-slurm/comparison.md @@ -0,0 +1,79 @@ +# Nebari and Nebari Slurm Comparison + +At a high level QHub is focused on a Kubernetes and container based +deployment of all of its components. Many of the advantages of a +container based deployment allow for better security, scalability of +components and compute nodes. + +QHub-HPC is focused on bringing many of the same features but within a +bare metal installation allowing users to fully take advantage of +their hardware for performance. Additionally these installations tend +to be easier to manage and debug when issues arise (traditional linux +sys-admin experience works well here). Due to this approach QHub-HPC +lacks containers but achieves workflows and scheduling of compute via +[Slurm](https://slurm.schedmd.com/documentation.html) and keeping +[services +available](https://www.freedesktop.org/wiki/Software/systemd/). + +Questions to help determine which solution may be best for you: + +1. Are you deploying to the cloud e.g. AWS, GCP, Azure, or Digital Ocean? + +QHub is likely your best option. The auto-scalability of QHub compute +allows for cost effective usage of the cloud while taking advantage of +a managed Kubernetes. + +2. Are you deploying to a bare metal cluster? + +QHub-HPC may be your best option since deployment does not require the +complexity of managing a kubernetes cluster. If you do have a devops +or IT team to help manage kubernetes on bare metal QHub could be a +great option. But be advised that managing Kubernetes comes with quite +a lot of complexity which the cloud providers handle for us. + +3. Are you concerned about absolute best performance? + +QHub-HPC is likely your best option. But note when we say absolute +performance we mean your software is able to fully take advantage of +your networks Infiniband hardware, uses MPI, and SIMD +instructions. Few users fall into this camp and should rarely be a +reason to chose QHub-HPC (unless you know why you are making this +choice). + +# Feature Matrix + +| Core | QHub | QHub-HPC | +| ------------------------------------------------ | ----------------------------------- | ----------------- | +| Scheduler | Kubernetes | SystemD and Slurm | +| User Isolation | Containers (cgroups and namespaces) | Slurm (cgroups) | +| Auto-scaling compute nodes | X | | +| Cost efficient compute support (Spot/Premptible) | X | | +| Static compute nodes | | X | + +| User Services | QHub | QHub-HPC | +| ---------------------------------- | ---- | -------- | +| Dask Gateway | X | X | +| JupyterHub | X | X | +| JupyterHub-ssh | X | X | +| CDSDashboards | X | X | +| Conda-Store environment management | X | X | +| ipyparallel | | X | +| Native MPI support | | X | + +| Core Services | QHub | QHub-HPC | +| ------------------------------------------------------------- | ---- | -------- | +| Monitoring via Grafana and Prometheus | X | X | +| Auth integration (OAuth2, OpenID, ldap, kerberos) | X | X | +| Role based authorization on JupyterHub, Grafana, Dask-Gateway | X | X | +| Configurable user groups | X | X | +| Shared folders for each user's group | X | X | +| Traefik proxy | X | X | +| Automated Let's Encrypt and manual TLS certificates | X | X | +| Forward authentication ensuring all endpoints authenticated | X | | +| Backups via Restic | | X | + +| Integrations | QHub | QHub-HPC | +| ------------ | ---- | -------- | +| ClearML | X | | +| Prefect | X | | +| Bodo | | X | diff --git a/docs/nebari-slurm/configuration.md b/docs/nebari-slurm/configuration.md new file mode 100644 index 00000000..88874808 --- /dev/null +++ b/docs/nebari-slurm/configuration.md @@ -0,0 +1,413 @@ +# Configuration + +## User and group management + +### Adding new user + +In order to add new users to Nebari-Slurm add to the `enabled_users` +variable. The format for each user is: + +```yaml +enabled_users: + ... + - username: + uid: + fullname: + email: + primary_group: + groups: [ + ... +``` + +### Adding new groups + +In order to add new groups to Nebari-Slurm add to the `enabled_groups` +variable. The format for each group is: + +```yaml +enabled_groups: + ... + - name: + gid: + ... +``` + +### Ensuring groups or users that do not exist + +Adding any username or group name to `disabled_users` or +`disabled_groups`. + +```yaml +disabled_groups: + ... + - + ... + +disalbed_users: + ... + - + ... +``` + +## Adding additional packages to nodes + +Setting the variable `installed_packages` will ensure that the given +Ubuntu packages are installed on the given node. + +```yaml +installed_packages: + ... + - git + ... +``` + +## NFS client mounts + +You may mount arbitrary nfs mounts via `nfs_client_mounts` +variable. The format for `nfs_client_mounts` is as follows: + +```yaml +nfs_client_mounts: + ... + - host: + path: + ... +``` + +## Samba/CIFS client mounts + +You may mount arbitrary cifs/samba or windows file shares with +`samba_client_mounts`. The `username`, `password`, `options`, and +`domain` fields are optional. + +```yaml +samba_client_mounts: + ... + - name: + host: + path: + options: + username: + password: + domain: + ... +``` + +## JupyterHub + +### Setting arbitrary traitlets in JupyterHub + +Setting a key, key, value in `jupyterhub_custom` is equivalent to +setting the traitlet `c.. = `. For +example to set the traitlet `c.Spawner.start_timeout = 60`. + +```yaml +jupyterhub_custom: + Spawner: + start_timeout: 60 +``` + +### Arbitrary additional files as configuration + +You may add additional files that are run at the end of JupyterHub's +configuration via Traitlets. + +```yaml +jupyterhub_additional_config: + ... + 01-myconfig: "{{ inventory_dir }}/.py + ... +``` + +The variable `inventory_dir` is a convenient variable that allows you +to reference files created within your inventory directory. + +### JupyterHub idle culler + +Adjusting the `idle_culler` settings or disabling the culler is +configurable. + +```yaml +idle_culler: + enabled: true + timeout: 86400 # 1 day + cull_every: 3600 # 1 hour +``` + +- `timeout` is the time that a user is inactive +- `cull_every` is the interval to delete inactive jupyterlab instances + +### Set default UI to classic jupyter notebooks + +As of JupyterHub 2.0, the default user interface is Jupyterlab. If the classic Jupyter notebook UI is preferred, this can be configured as shown below. + +```yaml +jupyterhub_custom: + QHubHPCSpawner: + default_url: '/tree' + Spawner: + environment: + JUPYTERHUB_SINGLEUSER_APP: notebook.notebookapp.NotebookApp +``` + +### Turn off resource selection user options form + +The resource selection options form allows users to choose the cpu, memory, and partition on which to run their user server. This feature is enabled by default, but can be disabled as shown below. This controls the option form for both the user and CDSDashboards. + +```yaml +jupyterhub_qhub_options_form: false +``` + +### Profiles (Slurm jobs resources) + +Profiles in Nebari-Slurm are defined within a YAML configuration file. Each profile specifies a set of resources that will be allocated to the JupyterHub session or job when selected by the user. Below is an example of how to define profiles in the configuration file: + +```yaml +jupyterhub_profiles: + - small: + display_name: Profile 1 [Small] (1CPU-2GB) + options: + req_memory: "2" + req_nprocs: "1" + - medium: + display_name: Profile 2 [Medium] (1CPU-4GB) + options: + req_memory: "4" + req_nprocs: "1" +``` + +In the example above, two profiles are defined: small and medium. Each profile has a display_name that describes the profile to users in a human-readable format, including the resources allocated by that profile (e.g., "Profile 1 [Small] (1CPU-2GB)"). The options section specifies the actual resources to be allocated: + +- **req_memory**: The amount of memory (in GB) to be allocated. +- **req_nprocs**: The number of CPU processors to be allocated. + +_Note_: All slurm related configuration needs to be passed down as a string. + +### Services + +Additional services can be added to the `jupyterhub_services` +variable. Currently this is only `: +`. You must keep the `dask_gateway` section. + +```yaml +jupyterhub_services: + ... + : + ... +``` + +### Theme + +The theme variables are using +[qhub-jupyterhub-theme](https://github.com/Quansight/qhub-jupyterhub-theme). All +variables are configurable. `logo` is a special variable where you +supply a url that the users web browser can access. + +```yaml +jupyterhub_theme: + template_vars: + hub_title: "This is Nebari Slurm" + hub_subtitle: "your scalable open source data science laboratory." + welcome: "have fun." + logo: "/hub/custom/images/jupyter_qhub_logo.svg" + primary_color: '#4f4173' + secondary_color: '#957da6' + accent_color: '#32C574' + text_color: "#111111" + h1_color: "#652e8e" + h2_color: "#652e8e" +``` + +## Copying Arbitrary Files onto Nodes + +Arbitrary files and folders can be copied from the ansible control +node onto the managed nodes as part of the ansible playbook deployment +by setting the following ansible variables to copy files onto all +nodes, all nodes in a particular group or only onto a particular node +respectively. + +- `copy_files_all` +- `copy_files_[ansible_group_name]` +- `copy_files_[ansible_ssh_host_name]` + +Copying two files/folders onto the hpc02-test node could be done by +setting the following ansible variable e.g. in the +host_vars/hpc02-test.yaml file. + +```yaml +... +copy_files_hpc02-test: + - src: /path/to/file/on/control/node + dest: /path/to/file/on/managed/node + owner: root + group: root + mode: 'u=rw,g=r,o=r' + directory_mode: '644' + - src: /path/to/other/file/on/control/node + dest: /path/to/other/file/on/managed/node + owner: vagrant + group: users + mode: '666' + directory_mode: 'ugo+rwx' +``` + +The owner, group, and mode fields are optional. See [copying modules](https://docs.ansible.com/ansible/latest/collections/ansible/builtin/copy_module.html#id2) for more detail about each field. + +Remember that the home directory of users is a network file system so +it would only be necessary to copy files in the user directories into +a single node. + +## Slurm + +Slurm configuration. Only a few slurm variables should be +configured. Sadly with how ansible works all variables must be copied +from the default. These two configuration settings allow additional +ini section and keys to be set. + +```yaml +slurm_config: + ... + +slurmdbd_config: + ... +``` + +## Traefik + +### Accessing Nebari Slurm from a Domain + +By default, a Nebari-Slurm deployment must be accessed using the ip +address of the hpc_master node. However, if a domain name has been +set up to point to the hpc_master node, then Nebari Slurm's router, +[Traefik](https://doc.traefik.io/traefik/), can be configured to work +with the domain by setting the `traefik_domain` ansible variable. + +For example, if you had the example.com domain set up to point to the +hpc_master node, then you could add the following to the all.yaml file +and redeploy, after which navigating to `https://example.com` in a web +browser would bring up your Nebari Slurm deployment sign in page. + +```yaml +traefik_domain: example.com +``` + +### Automated Lets-Encrypt Certificate + +Traefik can provision a tls certificate from Let's Encrypt assuming +that your master node ip is publicly accessible. Additionally the +`traefik_domain` and `traefik_letsencrypt_email` must be set. + +```yaml +traefik_tls_type: letsencrypt +traefik_letsencrypt_email: myemail@example.com +``` + +### Custom TLS Certificate + +By default, traefik will create and use a self signed TLS certificate +for user communication. If desired, a custom TLS Certificate can be +copied from ansible to the appropriate location for use by Traefik. +To do so, set the following settings in the all.yaml file. + +```yaml +traefik_tls_type: certificate +traefik_tls_certificate: /path/to/MyCertificate.crt +traefik_tls_key: /path/to/MyKey.key +``` + +For testing out this optional it is easy to generate your own +self-signed certificate. Substitute all of the values for values that +fit your use case. If you need to copy the certificate and/or key from a +location on the remote server (as opposed to a local file on the Ansible +host), you can also add `traefik_tls_certificate_remote_src: true` and +`traefik_tls_key_remote_src: true`, respectively. + +```shell +export QHUB_HPC_DOMAIN=example.com +openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -sha256 -days 365 \ + -subj "/C=US/ST=Oregon/L=Portland/O=Quansight/OU=Org/CN=$QHUB_HPC_DOMAIN" \ + -nodes +``` + +## Prometheus + +### Adding additional scrape configs + +If you want to add additional jobs/targets for Prometheus to scrape and ingest, you can +use the `prometheus_additional_scrape_configs` variable to define your own: + +```yaml +prometheus_additional_scrape_configs: + - job_name: my_job + static_configs: + - targets: + - 'example.com:9100' +``` + +## Grafana + +### Changing provisioned dashboards folder + +All provisioned dashboards in the `grafana_dashboards` variable will be added to the +"General" folder by default. "General" is a special folder where anyone can add +dashboards and can't be restricted so if you wish to separate provisioned dashboards you +can set `grafana_dashboards_folder`: + +```yaml +grafana_dashboards_folder: "Official" +``` + +### Specifying version + +The latest Grafana version will be installed by default but a specific or minimum +version can be specified with `grafana_version`: + +```yaml +grafana_version: "=9.0.0" # Pin to 9.0.0 +grafana_version: ">=9.0.0" # Install latest version only if current version is <9.0.0 +``` + +### Adding additional configuration + +You can add additional configuration to the `grafana.ini` file using +`grafana_additional_config`: + +```yaml +grafana_additional_config: | + [users] + viewers_can_edit = true # Allow Viewers to edit but not save dashboards +``` + +## Backups + +Backups are performed in Nebari Slurm via [restic](https://restic.net/) +an open source backup tool. It is extremely flexible on where backups +are performed as well as supporting encrypted, incremental backups. + +### Variables + +The following shows a daily backup on S3 for QHub. + +```yaml +backup_enabled: true +backup_on_calendar: "daily" +backup_randomized_delay: "3600" +backup_environment: + RESTIC_REPOSITORY: "s3:s3.amazonaws.com/bucket_name" + RESTIC_PASSWORD: "thisismyencryptionkey" + AWS_ACCESS_KEY_ID: accesskey + AWS_SECRET_ACCESS_KEY: mylongsecretaccesskey +``` + +- `backup_enabled` :: determines whether backups are enabled +- `backup_on_calendar` :: determines the frequency to perform backups. Consult [systemd timer](https://www.freedesktop.org/software/systemd/man/systemd.timer.html) documentation for syntax +- `backup_randomized_delay` :: is the random delay in seconds to apply to backups. Useful to prevent backups from all being performed at an exact time each day +- `backup_environment` :: are all the key value pairs used to configure restic. RESTIC_REPOSITORY and RESTIC_PASSWORD are required. The rest are environment variables for the specific [backup repository](https://restic.readthedocs.io/en/stable/030_preparing_a_new_repo.html). + +### Manual backup + +At any time you can trigger a manual backup. SSH into the master node. + +```shell +sudo systemctl start restic-backup.service +``` diff --git a/docs/nebari-slurm/development.md b/docs/nebari-slurm/development.md new file mode 100644 index 00000000..9035f78a --- /dev/null +++ b/docs/nebari-slurm/development.md @@ -0,0 +1,153 @@ +# Development Guide + +Welcome to the Nebari Slurm development guide! This guide will help you set up your development environment and tools for working with Nebari Slurm using Vagrant to orchestrated the virtual machines (VMs) and Ansible to provision the necessary infrastructure. + +## Prerequisites + +Before you begin, make sure you have the following prerequisites installed on your system: + +- Vagrant: Vagrant is a tool for building and managing virtual machine environments. Install the latest version for your operating system. + +- Virtualization Provider: Depending on your preference, choose either Libvirt or VirtualBox as your virtualization provider. + +- Git: Git is a version control system. You'll need it to clone the Nebari Slurm repository. + +Let's get started! + +## Additional Development Tasks + +It is recommended to use a personal environment for development. This will allow you to install additional packages and tools without affecting your system's global environment. We recommend using Conda to create a personal environment but you could use pipenv or virtualenv as well. Keep in mind that Ansible cannot run on a Windows host natively, though it can run under the Windows Subsystem for Linux (WSL). + +### Installing Ansible + +We recommend installing Ansible via Conda for a seamless development experience. First, you need to install Conda: + +```bash +conda create -n qhub-hpc -c conda-forge ansible +conda activate qhub-hpc +``` + +This creates a Conda environment named qhub-hpc and installs Ansible within it. You can activate this environment whenever you need to use Ansible for Nebari Slurm development tasks. + +If you prefer not to use Conda and want to install Ansible using other methods, please follow the official Ansible installation instructions for your specific platform. + +## Choose a Virtualization Provider + +Nebari Slurm supports two virtualization providers: Libvirt and QEMU. You can choose the one that suits your needs. If you're unsure, we recommend using Libvirt. + +### Providers + +Vagrant is a versatile tool that can manage different types of machines through various providers. While Vagrant ships with support for VirtualBox, Hyper-V, and Docker, it can work with other providers as well. Choosing the right provider can offer features that align with your specific use case. + +Alternate providers may offer advantages such as better stability and performance. For example, if you intend to use Vagrant for significant workloads, VMware providers are often recommended due to their robust support and reliability, surpassing VirtualBox in many scenarios. + +Before you can use a different provider, you must install it using the Vagrant plugin system. Once installed, using the provider is straightforward and aligns with Vagrant's user-friendly approach. + +For Nebari Slurm development, we provide instructions for two providers: Libvirt and virtualbox. Follow the relevant subsection for your chosen provider to set up your development environment. + +### Libvirt + +Libvirt is a toolkit for managing virtualization platforms. It provides a common API for different virtualization technologies, including QEMU, KVM, Xen, LXC, and VirtualBox. Libvirt is a popular choice for Linux-based systems and is the default provider for Vagrant on Linux. + +If you're using a Linux-based system, we recommend using Libvirt as your provider. It offers better performance and stability than VirtualBox and is the default provider for Vagrant on Linux. For installation documentation, please refer to the [Libvirt provider documentation](https://ubuntu.com/server/docs/virtualization-libvirt). + +Libvirt will also require you to install a an extension for Vagrant called `vagrant-libvirt`. You can install this extension by running the following command: + +```bash +vagrant plugin install vagrant-libvirt +``` + +Note: For more information you can refer to this opensource article on [Libvirt](https://opensource.com/article/21/10/vagrant-libvirt). + +### VirtualBox + +VirtualBox is a popular virtualization platform that supports a wide range of operating systems. It is a cross-platform solution that is available for Windows, macOS, and Linux. VirtualBox is the default provider for Vagrant on Windows and macOS. + +If you're using Windows or macOS, we recommend using VirtualBox as your provider. It is the default provider for Vagrant on these platforms and offers a stable and reliable experience. For installation documentation, please refer to the [VirtualBox community documentation](https://help.ubuntu.com/community/VirtualBox/Installation). + +## Create and Provision VMs + +Select one of the available test Vagrant files already present in this repository under the `/tests` directory. For example, if you want to test the `ubuntu1804` Vagrant file, run the following command: + +```bash +cd tests/ubuntu1804 +vagrant up --provider= +``` + +Before creating and provisioning the virtual machines (VMs), please be aware of potential naming conflicts if someone else has already used the same machine. To avoid conflicts, consider one of the following options: + +1. Choose a Different Ubuntu Version: + + - Instead of `ubuntu1804`, try using `ubuntu2004` if it's available. + +2. Add Your Own Prefix: + You can add a unique prefix to the VM names to avoid conflicts. Set an environment variable `HPC_VM_PREFIX` with your chosen prefix before running any Vagrant commands. For example: + + ```bash + export HPC_VM_PREFIX='-' + ``` + +This will prefix all VM names with the string you provide. For example, if you set `HPC_VM_PREFIX='-abc'`, the VM names will be `abc-ubuntu1804-master`, `abc-ubuntu1804-worker-1`, and so on. + +This should spin up the VMs and provision them using Ansible. If you encounter any errors, please refer to the [Troubleshooting] section. + +Now that your VMs are up and running, lets populate then with the QHub infrastrcture. To do so, copy the contents of `templates.inventory/*` over into the newly created `.vagrant/provisioners/ansible/inventory/` directory. For example considering that you are in the `tests/ubuntu1804` directory, run the following command: + +```bash +cp -r ../../templates.inventory/* .vagrant/provisioners/ansible/inventory/ +``` + +you should now be able to see two new folders being added `host_vars` and `group_vars` under the `.vagrant/provisioners/ansible/inventory/` directory. These folders contain the variables that are used by Ansible to provision the VMs. For more information on the variables, please refer to the [configuration](./configuration.md) page in this documentation. + +In the example above, the directory structure should be as follows: + +```bash +tests/ubuntu2004/.vagrant/provisioners/ansible/inventory/ +β”œβ”€β”€ group_vars +β”‚ β”œβ”€β”€ all.yaml +β”‚ β”œβ”€β”€ hpc_master.yaml +β”‚ └── hpc_worker.yaml +β”œβ”€β”€ host_vars +β”‚ └── hpc01-test.yaml +└── vagrant_ansible_inventory +``` + +Now to make the new changes to propagate, run the following command: + +```bash +vagrant provision +``` + +This should now populate the VMs with the QHub infrastructure. You can now access the JupyterHub instance by visiting `https:///` where `` is the ip address of your specific deployment. You will be prompted by the jupyterhub landing page. + +If you would like to set a DNS record for the master node, you can do so by adding the following line to your `/etc/hosts` file: + +```bash + +``` + +and make sure to replace `` with the ip address of your master node and `` with the domain name you would like to use. If using a service such as CloudFlare to manage your DNS records, you can also set up an A record to point to the master node ip address and the above step will not be required. + +Though, do update the contents of `group_vars/all.yaml` to include the extra field (at the end of the file): + +```yaml +traefik_domain: +``` + +This will ensure that the traefik reverse proxy is configured to use the domain name you have set. + +## Checking services + +For debugging purposes, you can inspect service status, logs or restart an individual service while connected to the master node. Below we give an example of how to do this for the JupyterHub and Slurm services. + +```bash +# Restart JupyterHub: +systemctl restart jupyterhub + +# Inspect logs: +journalctl -u jupyterhub -e +``` + +`SlurmSpawner` logs are stored in the worker nodes in the home folder of the user running JupyterLab, e.g., `/home/example-user/.jupyterhub_slurmspawner_9.log` + +## Troubleshooting diff --git a/docs/nebari-slurm/faq.md b/docs/nebari-slurm/faq.md new file mode 100644 index 00000000..04e0f247 --- /dev/null +++ b/docs/nebari-slurm/faq.md @@ -0,0 +1,24 @@ +# Frequently Asked Questions + +Q1: Can a user access another user's home directory in JupyterLab? + +No. Every user's home directory is private to themselves and they cannot access contents +of any other user's home directory. Example below shows the permissions of user directories +in `/home`. + +```bash +$ ls -ltrh /home + +total 36K +drwx------ 9 john-doe example-user 4.0K Apr 1 19:22 john-doe +drwx------ 9 alice-doe example-user 4.0K Apr 1 19:34 alice-doe +``` + +```bash +john-doe@worker-01:~$ pwd +/home/john-doe + +# The user john-doe unable to access contents of user alice-doe's home directory: +john-doer@worker-01:~$ ls /home/alice-doe/ +ls: cannot open directory '/home/alice-doe/': Permission denied +``` diff --git a/docs/nebari-slurm/installation.md b/docs/nebari-slurm/installation.md new file mode 100644 index 00000000..2e4b2371 --- /dev/null +++ b/docs/nebari-slurm/installation.md @@ -0,0 +1,157 @@ +# Installation + +## Requirements + +QHub-HPC currently requires ubuntu bare metal machines. There are +plans to support additional OSs such as RHEL. We actively test on the +latest stable Ubuntu release. We require: + +- 1 main node with at least 4 cpus and 16 GB of RAM +- 0-N worker nodes (main node can be a worker node but is not + recommended) with no significant requirements on resources + +Must be able to ssh into each node from the node you are running the +ansible commands and connect via root (not recommended) or user and +sudo with or without a password. + +## Dependencies + +We recommend installing ansible via conda. First you must [install +conda](https://docs.conda.io/projects/conda/en/latest/user-guide/install/index.html). + +```shell +conda create -n qhub-hpc -c conda-forge ansible +conda activate qhub-hpc +``` + +If you do not want to use conda follow the [Ansible installation +instructions](https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html). + +## Installation + +Prior to the `0.4` release each QHub-HPC deployment required +maintaining a fork and rebasing all the changes to QHub-HPC within the +`main` branch. Now we strive to maintain the variables within the +QHub-HPC roles. + +### Copy the template + +In this example we create our own deployment `my-deployment` and +create a managed git repository for our deployment. You will want to +substitute this name. + +```shell +git clone https://github.com/Quansight/qhub-hpc /tmp/qhub-hpc + +mkdir my-deployment +cd my-deployment +git init + +cp -r /tmp/qhub-hpc/inventory.template/* . +``` + +This will initialize the directory with: + +- `inventory` which is an [ansible inventory](https://docs.ansible.com/ansible/latest/user_guide/intro_inventory.html) +- `host_vars` is a collection of host specific variables within the hosts +- `group_vars` is a collection of group specific variables within the hosts + +Over time you may add additional directories and files to the +repository. + +## Modify the ansible inventory + +Below is an example ansible inventory file used for +`ansible-playbook`. There are [great docs on modifying the ansible inventory file](https://docs.ansible.com/ansible/latest/user_guide/intro_inventory.html). +The important keys to set: + +- `ansible_ssh_host` which is the DNS accessible name +- `ansible_port` default is `22` +- `ansible_user` which is the username to login into node by default is the user that the `ansible-playbook` command is run as +- `ansible_ssh_private_key_file` is the path to the ssh key to login to node + +Next you must configure the groups. In this case the `hpc_master` and +`hpc_worker` groups. There must only be one node in the `hpc_master` +group. `N` nodes can be in the `hpc_worker` section (including the +hpc_master node which is not recommended). + +``` +hpc02-test ansible_ssh_host=192.168.121.124 ansible_port=22 ansible_user='vagrant' ansible_ssh_private_key_file='/home/costrouc/.vagrant.d/insecure_private_key' +hpc03-test ansible_ssh_host=192.168.121.176 ansible_port=22 ansible_user='vagrant' ansible_ssh_private_key_file='/home/costrouc/.vagrant.d/insecure_private_key' +hpc04-test ansible_ssh_host=192.168.121.133 ansible_port=22 ansible_user='vagrant' ansible_ssh_private_key_file='/home/costrouc/.vagrant.d/insecure_private_key' +hpc01-test ansible_ssh_host=192.168.121.35 ansible_port=22 ansible_user='vagrant' ansible_ssh_private_key_file='/home/costrouc/.vagrant.d/insecure_private_key' + +[hpc_master] +hpc01-test + +[hpc_worker] +hpc02-test +hpc03-test +hpc04-test + +[partition_example] +hpc02-test +hpc04-test +``` + +Arbitrary additional groups with name `partition_` may be added +to create additional slurm partition groups of name ``. This can +be useful if you want a Slurm partition for on the gpu or high memory +nodes. + +# host_vars + +If you would like to set specific variables for a given host you must +create a file in `host_vars/.yaml`. Currently we only +recommend a few variables be set on the host_vars. This is the slurm +resources for each node. E.g. the following. + +```yaml +slurm_memory: 16000 +slurm_cpus: 4 +slurm_sockets_per_board: 4 +``` + +This however is difficult to correctly set see the section +"Configuring and adding node information" in [slurm.md](./slurm.md). A +hosts file should be created for each node in the `hpc_worker` +group. In the inventory example above the following files would exist: + +- `host_vars/hpc02-test.md` +- `host_vars/hpc03-test.md` +- `host_vars/hpc04-test.md` + +It is okay to get the memory and cpus wrong. This can later be +corrected on a re-deployment. + +# group_vars + +Most if not all configuration will be done in the `group_vars` +directory. Within that directory there are three groups: + +- `all.yaml` which are variables set for all nodes +- `hpc_master.yaml` which are variables set for the hpc master node +- `hpc_worker.yaml` which are variables set for the hpc worker nodes + +Detailed information on customizing the configuration should see the +[configuration](./configuration.md). + +# Deployment + +After any modifications to the `host_vars/*`, `group_vars/*`, or +`inventory` an Ansible deployment should be performed. QHub-HPC has +intentionally followed a normal Ansible deployment pattern to allow +for reusing the amazing tutorials and documentation currently in place +around Ansible. + +```shell +cd my-deployment +ansible-playbook -i inventory /tmp/qhub-hpc/playbook.yaml +``` + +# Checking the status of the deployment + +Upon successful deployment you should be able to visit the +`https:///` where `` is the ip address or dns +name of your specific deployment. You will be prompted by the +jupyterhub landing page. diff --git a/docs/nebari-slurm/overview.mdx b/docs/nebari-slurm/overview.mdx index 6f3d1a4d..988a2a1f 100644 --- a/docs/nebari-slurm/overview.mdx +++ b/docs/nebari-slurm/overview.mdx @@ -8,3 +8,64 @@ The high level goal of this distribution is to form a cohesive set of tools that * monitoring of compute infrastructure and services * scalable and efficient compute via jupyterlab and dask * deployment of jupyterhub on prem without requiring deep devops knowledge of the Slurm/HPC and jupyter ecosystem +:::important +Nebari-Slurm was previously called Qhub-HPC, the documentation pages are being migrated, so there are a few mentions of the original name. +::: + +# Overview + +Nebari Slurm is a High-Performance Computing (HPC) deployment using [JupyterHub](https://jupyterhub.readthedocs.io/en/stable/). In this document, we will discuss the services that run within this architecture and how they are interconnected. The setup follows a standard HPC configuration with a master/login node and 'N' worker nodes. + +The master node serves as the central control and coordination hub for the entire cluster. It plays a pivotal role in managing and optimizing cluster resources and ensuring secure, efficient, and reliable operations. In contrast, worker nodes primarily focus on executing computational tasks and rely on instructions from the master node for job execution. + +At a high level, the architecture comprises several key services: monitoring, the job scheduler ([Slurm](https://slurm.schedmd.com/overview.html)), and JupyterHub along with related Python services. + +Important URLs: + +- `https:///`: JupyterHub server +- `https:///monitoring/`: Grafana server +- `https:///auth/`: Keycloak server +- `https:///gateway/`: Dask-Gateway server for remote connections +- `ssh -p 8022`: SSH into a JupyterLab session for users (requires a JupyterHub token) + +## Services (All Nodes) + +- [node_exporter](https://github.com/prometheus/node_exporter): Collects node metrics (default port 9100) + +## Master Node + +### Services + +#### Authentication + +- [Keycloak](https://www.keycloak.org/): Provides enterprise-grade open-source authentication + +#### Control and Coordination + +- [Slurm](https://slurm.schedmd.com/overview.html): Manages job scheduling, resource allocation, and cluster control +- [slurmctld](https://slurm.schedmd.com/slurmctld.html): Manages the Slurm central management daemon +- [slurmdbd](https://slurm.schedmd.com/slurmdbd.html): Handles Slurm accounting +- [MySQL](https://www.mysql.com/): Acts as the database for Slurm accounting + +#### Reverse Proxy and Routing + +- [Traefik](https://traefik.io/): Serves as an open-source network proxy, routing network traffic efficiently + +#### Monitoring and Metrics + +- [Grafana](https://grafana.com/): Acts as a central place to view monitoring information (default port 3000) +- [Prometheus](https://prometheus.io/docs/introduction/overview/): Scrapes metrics (default port 9090) +- [slurm_exporter](https://github.com/vpenso/prometheus-slurm-exporter): Provides Slurm metrics (default port 9341) +- [Traefik exported metrics](https://doc.traefik.io/traefik/observability/metrics/overview/) +- [JupyterHub exported metrics](https://jupyterhub.readthedocs.io/en/stable/reference/metrics.html) + +#### Python Ecosystem + +- [JupyterHub](https://jupyter.org/hub): Provides scalable interactive computing (default port 8000) +- [Dask-Gateway](https://gateway.dask.org/): Enables scalable distributed computing +- [NFS server](https://en.wikipedia.org/wiki/Network_File_System): Facilitates sharing Conda environments and home directories among all users +- [conda-store](https://conda.store/): Manages Conda environments within nodes + +## Worker Nodes + +Worker nodes primarily focus on executing computational tasks and have minimal dependencies, making them efficient for running parallel workloads. They rely on instructions from the master node for job execution and do not have the same level of control and coordination responsibilities as the master node. The master node's role is pivotal in orchestrating the overall cluster's functionality and ensuring efficient and secure operations. diff --git a/docs/nebari-slurm/slurm.md b/docs/nebari-slurm/slurm.md new file mode 100644 index 00000000..8c7dbcab --- /dev/null +++ b/docs/nebari-slurm/slurm.md @@ -0,0 +1,151 @@ +# Slurm + +For detailed slurm information please refer to the +[documentation](https://slurm.schedmd.com/overview.html). + +## Checking Health of Slurm Cluster + +[sinfo](https://slurm.schedmd.com/sinfo.html) is your bread and butter +and should be used to quickly check the health of the cluster. + +```shell +sinfo +``` + +```shell +PARTITION AVAIL TIMELIMIT NODES STATE NODELIST +general* up infinite 1 mix hpc02-test +general* up infinite 2 idle hpc03-test,hpc04-test +``` + +## Get current job queue including running jobs + +```shell +squeue +``` + +## Getting information about a job + +```shell +scontrol show job +``` + +```shell +JobId=37 JobName=spawner-jupyterhub + UserId=vagrant(1000) GroupId=vagrant(1000) MCS_label=N/A + Priority=4294901724 Nice=0 Account=(null) QOS=normal + JobState=RUNNING Reason=None Dependency=(null) + Requeue=1 Restarts=0 BatchFlag=1 Reboot=0 ExitCode=0:0 + RunTime=00:01:16 TimeLimit=UNLIMITED TimeMin=N/A + SubmitTime=2021-01-19T14:27:24 EligibleTime=2021-01-19T14:27:24 + AccrueTime=2021-01-19T14:27:24 + StartTime=2021-01-19T14:27:24 EndTime=Unknown Deadline=N/A + SuspendTime=None SecsPreSuspend=0 LastSchedEval=2021-01-19T14:27:24 + Partition=general AllocNode:Sid=localhost:135266 + ReqNodeList=(null) ExcNodeList=(null) + NodeList=hpc02-test + BatchHost=hpc02-test + NumNodes=1 NumCPUs=1 NumTasks=1 CPUs/Task=1 ReqB:S:C:T=0:0:*:* + TRES=cpu=1,mem=1G,node=1,billing=1 + Socks/Node=* NtasksPerN:B:S:C=0:0:*:* CoreSpec=* + MinCPUsNode=1 MinMemoryNode=1G MinTmpDiskNode=0 + Features=(null) DelayBoot=00:00:00 + OverSubscribe=OK Contiguous=0 Licenses=(null) Network=(null) + Command=(null) + WorkDir=/home/vagrant + StdErr=/home/vagrant/.jupyterhub_slurmspawner_37.log + StdIn=/dev/null + StdOut=/home/vagrant/.jupyterhub_slurmspawner_37.log + Power= +``` + +## Configuring and adding node information + +For each node create a `host_vars/.yaml` and omit any +fields if you want to use the default value. Suppose the following +configuration for `host_vars/hpc02-test.yaml`. + +```yaml +slurm_memory: 7976 # RealMemory (default 1024) +slurm_cpus: 4 # CPUs (default 1) +slurm_boards: 1 # Boards (default 1) +slurm_sockets_per_board: 4 # SocketsPerBoard (default 1) +slurm_cores_per_socket: 1 # CoresPerSocket (default 1) +slurm_threads_per_core: 1 # ThreadsPerCore (default 1) +``` + +Would result in the following slurm node configuration + +```init +# Nodes +NodeName=hpc02-test RealMemory=7976 CPUs=4 Boards=1 SocketsPerBoard=4 CoresPerSocket=1 ThreadsPerCore=1 State=UNKNOWN +``` + +You can get the detailed node specs via slurmd and can be used to +easily set the node configuration. The more accurately that you set +the node information for slurm the more accurately users can target +their programs on the hardware. + +```shell +slurmd -C +``` + +```shell +NodeName=hpc02-test CPUs=4 Boards=1 SocketsPerBoard=4 CoresPerSocket=1 ThreadsPerCore=1 RealMemory=7976 +UpTime=0-01:46:52 +``` + +If you have set an incorrect configuration, the nodes may enter a +DRAIN state with low cores*sockets*threads and memory error. You will +then need to modify the node state to IDLE once it is properly +configured. + +## Modifying Node State + +There are several common cases where one would need to manually change +the node state. All slurm management is done via the `sacct` and +`scontrol` command. In this case we need to use `scontrol` command. + +```shell +scontrol update nodename= state=IDLE +``` + +This is useful if you want to resume a node for operation. + +## Node States + +The full list of [node +states](https://slurm.schedmd.com/sinfo.html#lbAG). Here we outline +some of the common ones. + +- ALLOCATED :: node is completely consumed +- MIXED :: node is partially consumed +- IDLE :: node is idle and has no running jobs +- DRAIN :: node is unable to schedule new jobs but running jobs will finish + +## Adding Slurm Partitions + +Partitions in slurm can easily be created via ansible groups. Any +group start starts with `partition-`. For example + +```ini +[hpc_master] +hpc01-test + +[hpc_worker] +hpc02-test +hpc03-test +hpc04-test + +[partition_example] +hpc02-test +hpc04-test +``` + +Will create the following slurm partitions + +```ini +# Partitions +PartitionName=general Nodes=hpc02-test,hpc03-test,hpc04-test Default=YES MaxTime=INFINITE State=UP +PartitionName=example Nodes=hpc02-test,hpc04-test Default=NO MaxTime=INFINITE State=UP +``` diff --git a/docs/sidebarsSlurm.js b/docs/sidebarsSlurm.js index 9a6d1503..8c381d50 100644 --- a/docs/sidebarsSlurm.js +++ b/docs/sidebarsSlurm.js @@ -13,11 +13,46 @@ /** @type {import('@docusaurus/plugin-content-docs').SidebarsConfig} */ module.exports = { - sidebar: [ - { - label: "Overview", - type: "doc", - id: "overview", - }, + sidebar: [ + { + label: "Overview", + type: "doc", + id: "overview", + }, + { + label: "Installation", + type: "doc", + id: "installation", + }, + { + label: "Configuration", + type: "doc", + id: "configuration", + }, + { + label: "Benchmark", + type: "doc", + id: "benchmark" + }, + { + label: "Slurm", + type: "doc", + id: "slurm" + }, + { + label: "Development", + type: "doc", + id: "development" + }, + { + label: "Comparison with Nebari", + type: "doc", + id: "comparison" + }, + { + label: "FAQ", + type: "doc", + id: "faq" + }, ], - } +} From 078dfb006322c95903ade0989d4354f10ef355d3 Mon Sep 17 00:00:00 2001 From: Marcelo Villa Date: Tue, 29 Oct 2024 18:55:22 +0100 Subject: [PATCH 8/9] Run yarn run format --write --- docs/docs/references/RELEASE.md | 1183 ++++++++++++++++--------------- 1 file changed, 600 insertions(+), 583 deletions(-) diff --git a/docs/docs/references/RELEASE.md b/docs/docs/references/RELEASE.md index 2c3ba770..82282173 100644 --- a/docs/docs/references/RELEASE.md +++ b/docs/docs/references/RELEASE.md @@ -1,6 +1,6 @@ # Release notes -*Contains description of Nebari releases.* +_Contains description of Nebari releases._ > WARNING: This release changes how group directories are mounted in JupyterLab pods: only groups with specific permissions will have their directories mounted. If you rely on custom group mounts, we strongly recommend running `nebari upgrade` before updating. This will prompt you to confirm how Nebari should handle your groupsβ€”either keep them mounted or allow unmounting. **No data will be lost**, and you can reverse this anytime. ### What's Changed -* Fix: KeyValueDict error when deploying to existing infrastructure by @oftheaxe in https://github.com/nebari-dev/nebari/pull/2560 -* Remove unused AWS terraform modules by @marcelovilla in https://github.com/nebari-dev/nebari/pull/2623 -* Upgrade Hashicorp Vault action by @aktech in https://github.com/nebari-dev/nebari/pull/2616 -* Pass `oauth_no_confirm=True` to jhub-apps by @krassowski in https://github.com/nebari-dev/nebari/pull/2631 -* Use Rook Ceph for Jupyterhub and Conda Store drives by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2541 -* Fix typo in guided init by @marcelovilla in https://github.com/nebari-dev/nebari/pull/2635 -* Action var tests off by @BrianCashProf in https://github.com/nebari-dev/nebari/pull/2632 -* add a "moved" block to account for refactored terraform code without deleting/recreating NFS disks by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2639 -* Use Helm Chart for JupyterHub 5.1.0 by @krassowski in https://github.com/nebari-dev/nebari/pull/2661 -* Add a how to test section to PR template by @marcelovilla in https://github.com/nebari-dev/nebari/pull/2659 -* Support disallowed nebari config changes by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2660 -* Fix converted init command in guided init by @marcelovilla in https://github.com/nebari-dev/nebari/pull/2666 -* Add initial uptime metrics by @dcmcand in https://github.com/nebari-dev/nebari/pull/2609 -* Refactor and extend Playwright tests by @viniciusdc in https://github.com/nebari-dev/nebari/pull/2644 -* Remove Cypress remaining tests/files by @viniciusdc in https://github.com/nebari-dev/nebari/pull/2672 -* refactor jupyterhub user token retrieval within pytest by @viniciusdc in https://github.com/nebari-dev/nebari/pull/2645 -* add moved block to account for terraform changes on AWS only by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2673 -* Refactor shared group mounting using RBAC by @viniciusdc in https://github.com/nebari-dev/nebari/pull/2593 -* Dashboard fix usage report by @kenafoster in https://github.com/nebari-dev/nebari/pull/2671 -* only capture stdout not stdout+stderr when capture_output=True by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2704 -* revert breaking change to azure deployment test by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2706 -* Refactor GitOps approach prompt flow in guided init by @marcelovilla in https://github.com/nebari-dev/nebari/pull/2269 -* template the kustomization.yaml file by @dcmcand in https://github.com/nebari-dev/nebari/pull/2667 -* Fix auto-provisioned GitHub repo description after guided init by @marcelovilla in https://github.com/nebari-dev/nebari/pull/2708 -* Add amazon_web_services configuration option to specify EKS cluster api server endpoint access setting by @joneszc in https://github.com/nebari-dev/nebari/pull/2618 -* Use Google Auth and Cloud Python APIs instead of `gcloud` CLI by @swastik959 in https://github.com/nebari-dev/nebari/pull/2083 -* fix broken links in README.md, SECURITY.md, and CONTRIBUTING.md by @blakerosenthal in https://github.com/nebari-dev/nebari/pull/2720 -* add test for changing dicts and lists by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2724 -* 2024.9.1 upgrade notes by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2726 -* Add Support for AWS Launch Template Configuration by @viniciusdc in https://github.com/nebari-dev/nebari/pull/2668 -* Run terraform init before running terraform show by @marcelovilla in https://github.com/nebari-dev/nebari/pull/2734 -* Release Process Checklist Updates by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2727 -* Test implicit aiohttp's TCP to HTTP connector change by @viniciusdc in https://github.com/nebari-dev/nebari/pull/2741 -* remove comments by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2743 -* Deploy Rook Ceph Helm only when Ceph FS Needed by @kenafoster in https://github.com/nebari-dev/nebari/pull/2742 -* fix group mounting paths by @viniciusdc in https://github.com/nebari-dev/nebari/pull/2738 -* Add compatibility prompt and notes for shared group mounting by @viniciusdc in https://github.com/nebari-dev/nebari/pull/2739 + +- Fix: KeyValueDict error when deploying to existing infrastructure by @oftheaxe in https://github.com/nebari-dev/nebari/pull/2560 +- Remove unused AWS terraform modules by @marcelovilla in https://github.com/nebari-dev/nebari/pull/2623 +- Upgrade Hashicorp Vault action by @aktech in https://github.com/nebari-dev/nebari/pull/2616 +- Pass `oauth_no_confirm=True` to jhub-apps by @krassowski in https://github.com/nebari-dev/nebari/pull/2631 +- Use Rook Ceph for Jupyterhub and Conda Store drives by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2541 +- Fix typo in guided init by @marcelovilla in https://github.com/nebari-dev/nebari/pull/2635 +- Action var tests off by @BrianCashProf in https://github.com/nebari-dev/nebari/pull/2632 +- add a "moved" block to account for refactored terraform code without deleting/recreating NFS disks by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2639 +- Use Helm Chart for JupyterHub 5.1.0 by @krassowski in https://github.com/nebari-dev/nebari/pull/2661 +- Add a how to test section to PR template by @marcelovilla in https://github.com/nebari-dev/nebari/pull/2659 +- Support disallowed nebari config changes by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2660 +- Fix converted init command in guided init by @marcelovilla in https://github.com/nebari-dev/nebari/pull/2666 +- Add initial uptime metrics by @dcmcand in https://github.com/nebari-dev/nebari/pull/2609 +- Refactor and extend Playwright tests by @viniciusdc in https://github.com/nebari-dev/nebari/pull/2644 +- Remove Cypress remaining tests/files by @viniciusdc in https://github.com/nebari-dev/nebari/pull/2672 +- refactor jupyterhub user token retrieval within pytest by @viniciusdc in https://github.com/nebari-dev/nebari/pull/2645 +- add moved block to account for terraform changes on AWS only by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2673 +- Refactor shared group mounting using RBAC by @viniciusdc in https://github.com/nebari-dev/nebari/pull/2593 +- Dashboard fix usage report by @kenafoster in https://github.com/nebari-dev/nebari/pull/2671 +- only capture stdout not stdout+stderr when capture_output=True by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2704 +- revert breaking change to azure deployment test by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2706 +- Refactor GitOps approach prompt flow in guided init by @marcelovilla in https://github.com/nebari-dev/nebari/pull/2269 +- template the kustomization.yaml file by @dcmcand in https://github.com/nebari-dev/nebari/pull/2667 +- Fix auto-provisioned GitHub repo description after guided init by @marcelovilla in https://github.com/nebari-dev/nebari/pull/2708 +- Add amazon_web_services configuration option to specify EKS cluster api server endpoint access setting by @joneszc in https://github.com/nebari-dev/nebari/pull/2618 +- Use Google Auth and Cloud Python APIs instead of `gcloud` CLI by @swastik959 in https://github.com/nebari-dev/nebari/pull/2083 +- fix broken links in README.md, SECURITY.md, and CONTRIBUTING.md by @blakerosenthal in https://github.com/nebari-dev/nebari/pull/2720 +- add test for changing dicts and lists by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2724 +- 2024.9.1 upgrade notes by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2726 +- Add Support for AWS Launch Template Configuration by @viniciusdc in https://github.com/nebari-dev/nebari/pull/2668 +- Run terraform init before running terraform show by @marcelovilla in https://github.com/nebari-dev/nebari/pull/2734 +- Release Process Checklist Updates by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2727 +- Test implicit aiohttp's TCP to HTTP connector change by @viniciusdc in https://github.com/nebari-dev/nebari/pull/2741 +- remove comments by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2743 +- Deploy Rook Ceph Helm only when Ceph FS Needed by @kenafoster in https://github.com/nebari-dev/nebari/pull/2742 +- fix group mounting paths by @viniciusdc in https://github.com/nebari-dev/nebari/pull/2738 +- Add compatibility prompt and notes for shared group mounting by @viniciusdc in https://github.com/nebari-dev/nebari/pull/2739 ### New Contributors -* @oftheaxe made their first contribution in https://github.com/nebari-dev/nebari/pull/2560 -* @joneszc made their first contribution in https://github.com/nebari-dev/nebari/pull/2618 -* @swastik959 made their first contribution in https://github.com/nebari-dev/nebari/pull/2083 -* @blakerosenthal made their first contribution in https://github.com/nebari-dev/nebari/pull/2720 -**Full Changelog**: https://github.com/nebari-dev/nebari/compare/2024.7.1...2024.9.1 +- @oftheaxe made their first contribution in https://github.com/nebari-dev/nebari/pull/2560 +- @joneszc made their first contribution in https://github.com/nebari-dev/nebari/pull/2618 +- @swastik959 made their first contribution in https://github.com/nebari-dev/nebari/pull/2083 +- @blakerosenthal made their first contribution in https://github.com/nebari-dev/nebari/pull/2720 +**Full Changelog**: https://github.com/nebari-dev/nebari/compare/2024.7.1...2024.9.1 ## Release 2024.7.1 - August 8, 2024 > NOTE: Support for Digital Ocean deployments using CLI commands and related Terraform modules is being deprecated. Although Digital Ocean will no longer be directly supported in future releases, you can still deploy to Digital Ocean infrastructure using the current `existing` deployment option. ### What's Changed -* Enable authentication by default in jupyter-server by @krassowski in https://github.com/nebari-dev/nebari/pull/2288 -* remove dns sleep by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2550 -* Conda-store permissions v2 + load roles from keycloak by @aktech in https://github.com/nebari-dev/nebari/pull/2531 -* Restrict public access and add bucket encryption using cmk by @dcmcand in https://github.com/nebari-dev/nebari/pull/2525 -* Add overwrite to AWS coredns addon by @dcmcand in https://github.com/nebari-dev/nebari/pull/2538 -* Add a default roles at initialisation by @aktech in https://github.com/nebari-dev/nebari/pull/2546 -* Hide gallery section if no exhibits are configured by @krassowski in https://github.com/nebari-dev/nebari/pull/2549 -* Add note about ~/.bash_profile by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2575 -* Expose jupyterlab-gallery branch and depth options by @krassowski in https://github.com/nebari-dev/nebari/pull/2556 -* #2566 Upgrade Jupyterhub ssh image by @arjxn-py in https://github.com/nebari-dev/nebari/pull/2576 -* Stop copying unnecessary files into user home directory by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2578 -* Include deprecation notes for init/deploy subcommands by @viniciusdc in https://github.com/nebari-dev/nebari/pull/2582 -* Only download jar if file doesn't exist by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2588 -* Remove unnecessary experimental flag by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2606 -* Add typos spell checker to pre-commit by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2568 -* Enh 2451 skip conditionals by @BrianCashProf in https://github.com/nebari-dev/nebari/pull/2569 -* Improve codespell support: adjust and concentrate config to pyproject.toml and fix more typos by @yarikoptic in https://github.com/nebari-dev/nebari/pull/2583 -* Move codespell config to pyproject.toml only by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2611 -* Add `depends_on` for bucket encryption by @viniciusdc in https://github.com/nebari-dev/nebari/pull/2615 + +- Enable authentication by default in jupyter-server by @krassowski in https://github.com/nebari-dev/nebari/pull/2288 +- remove dns sleep by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2550 +- Conda-store permissions v2 + load roles from keycloak by @aktech in https://github.com/nebari-dev/nebari/pull/2531 +- Restrict public access and add bucket encryption using cmk by @dcmcand in https://github.com/nebari-dev/nebari/pull/2525 +- Add overwrite to AWS coredns addon by @dcmcand in https://github.com/nebari-dev/nebari/pull/2538 +- Add a default roles at initialisation by @aktech in https://github.com/nebari-dev/nebari/pull/2546 +- Hide gallery section if no exhibits are configured by @krassowski in https://github.com/nebari-dev/nebari/pull/2549 +- Add note about ~/.bash_profile by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2575 +- Expose jupyterlab-gallery branch and depth options by @krassowski in https://github.com/nebari-dev/nebari/pull/2556 +- #2566 Upgrade Jupyterhub ssh image by @arjxn-py in https://github.com/nebari-dev/nebari/pull/2576 +- Stop copying unnecessary files into user home directory by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2578 +- Include deprecation notes for init/deploy subcommands by @viniciusdc in https://github.com/nebari-dev/nebari/pull/2582 +- Only download jar if file doesn't exist by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2588 +- Remove unnecessary experimental flag by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2606 +- Add typos spell checker to pre-commit by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2568 +- Enh 2451 skip conditionals by @BrianCashProf in https://github.com/nebari-dev/nebari/pull/2569 +- Improve codespell support: adjust and concentrate config to pyproject.toml and fix more typos by @yarikoptic in https://github.com/nebari-dev/nebari/pull/2583 +- Move codespell config to pyproject.toml only by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2611 +- Add `depends_on` for bucket encryption by @viniciusdc in https://github.com/nebari-dev/nebari/pull/2615 ### New Contributors -* @BrianCashProf made their first contribution in https://github.com/nebari-dev/nebari/pull/2569 -* @yarikoptic made their first contribution in https://github.com/nebari-dev/nebari/pull/2583 +- @BrianCashProf made their first contribution in https://github.com/nebari-dev/nebari/pull/2569 +- @yarikoptic made their first contribution in https://github.com/nebari-dev/nebari/pull/2583 **Full Changelog**: https://github.com/nebari-dev/nebari/compare/2024.6.1...2024.7.1 - ## Release 2024.6.1 - June 26, 2024 > NOTE: This release includes an upgrade to the `kube-prometheus-stack` Helm chart, resulting in a newer version of Grafana. When upgrading your Nebari cluster, you will be prompted to have Nebari update some CRDs and delete a DaemonSet on your behalf. If you prefer, you can also run the commands yourself, which will be shown to you. If you have any custom dashboards, you'll also need to back them up by [exporting them as JSON](https://grafana.com/docs/grafana/latest/dashboards/share-dashboards-panels/#export-a-dashboard-as-json), so you can [import them](https://grafana.com/docs/grafana/latest/dashboards/build-dashboards/import-dashboards/#import-a-dashboard) after upgrading. ### What's Changed -* Fetch JupyterHub roles from Keycloak by @krassowski in https://github.com/nebari-dev/nebari/pull/2447 -* Update selector for Start server button to use button tag by @krassowski in https://github.com/nebari-dev/nebari/pull/2464 -* Reduce GCP Fixed Costs by 50% by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2453 -* Restore JupyterHub updates from PR-2427 by @viniciusdc in https://github.com/nebari-dev/nebari/pull/2465 -* Workload identity by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2460 -* Fix test using a non-specific selector by @krassowski in https://github.com/nebari-dev/nebari/pull/2475 -* add verify=false since we use self signed cert in tests by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2481 -* fix forward auth when using custom cert by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2479 -* Upgrade to JupyterHub 5.0.0b2 by @krassowski in https://github.com/nebari-dev/nebari/pull/2468 -* upgrade instructions for PR 2453 by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2466 -* Use Helm Chart for JupyterHub 5.0.0 final by @krassowski in https://github.com/nebari-dev/nebari/pull/2484 -* Parse and insert keycloak roles scopes into JupyterHub by @aktech in https://github.com/nebari-dev/nebari/pull/2471 -* Add CITATION file by @pavithraes in https://github.com/nebari-dev/nebari/pull/2455 -* CI: add azure integration by @fangchenli in https://github.com/nebari-dev/nebari/pull/2061 -* Create trivy.yml by @dcmcand in https://github.com/nebari-dev/nebari/pull/2458 -* don't run azure deployment on PRs, only on schedule and manual trigger by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2498 -* add cloud provider deployment status badges to README.md by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2407 -* Upgrade kube-prometheus-stack helm chart by @marcelovilla in https://github.com/nebari-dev/nebari/pull/2472 -* upgrade note by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2502 -* Remove VSCode from jhub_apps default services by @jbouder in https://github.com/nebari-dev/nebari/pull/2503 -* Explicit config by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2294 -* fix general node scaling bug for azure by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2517 -* Skip running cleanup on pull requests by @aktech in https://github.com/nebari-dev/nebari/pull/2488 -* 1792 Add docstrings to `upgrade.py` by @arjxn-py in https://github.com/nebari-dev/nebari/pull/2512 -* set's min TLS version for azure storage account to TLS 1.2 by @dcmcand in https://github.com/nebari-dev/nebari/pull/2522 -* Fix conda-store and Traefik Grafana Dashboards by @marcelovilla in https://github.com/nebari-dev/nebari/pull/2540 -* Implement support for jupyterlab-gallery config by @krassowski in https://github.com/nebari-dev/nebari/pull/2501 -* Add option to run CRDs updates and DaemonSet deletion on user's behalf. by @marcelovilla in https://github.com/nebari-dev/nebari/pull/2544 + +- Fetch JupyterHub roles from Keycloak by @krassowski in https://github.com/nebari-dev/nebari/pull/2447 +- Update selector for Start server button to use button tag by @krassowski in https://github.com/nebari-dev/nebari/pull/2464 +- Reduce GCP Fixed Costs by 50% by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2453 +- Restore JupyterHub updates from PR-2427 by @viniciusdc in https://github.com/nebari-dev/nebari/pull/2465 +- Workload identity by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2460 +- Fix test using a non-specific selector by @krassowski in https://github.com/nebari-dev/nebari/pull/2475 +- add verify=false since we use self signed cert in tests by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2481 +- fix forward auth when using custom cert by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2479 +- Upgrade to JupyterHub 5.0.0b2 by @krassowski in https://github.com/nebari-dev/nebari/pull/2468 +- upgrade instructions for PR 2453 by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2466 +- Use Helm Chart for JupyterHub 5.0.0 final by @krassowski in https://github.com/nebari-dev/nebari/pull/2484 +- Parse and insert keycloak roles scopes into JupyterHub by @aktech in https://github.com/nebari-dev/nebari/pull/2471 +- Add CITATION file by @pavithraes in https://github.com/nebari-dev/nebari/pull/2455 +- CI: add azure integration by @fangchenli in https://github.com/nebari-dev/nebari/pull/2061 +- Create trivy.yml by @dcmcand in https://github.com/nebari-dev/nebari/pull/2458 +- don't run azure deployment on PRs, only on schedule and manual trigger by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2498 +- add cloud provider deployment status badges to README.md by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2407 +- Upgrade kube-prometheus-stack helm chart by @marcelovilla in https://github.com/nebari-dev/nebari/pull/2472 +- upgrade note by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2502 +- Remove VSCode from jhub_apps default services by @jbouder in https://github.com/nebari-dev/nebari/pull/2503 +- Explicit config by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2294 +- fix general node scaling bug for azure by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2517 +- Skip running cleanup on pull requests by @aktech in https://github.com/nebari-dev/nebari/pull/2488 +- 1792 Add docstrings to `upgrade.py` by @arjxn-py in https://github.com/nebari-dev/nebari/pull/2512 +- set's min TLS version for azure storage account to TLS 1.2 by @dcmcand in https://github.com/nebari-dev/nebari/pull/2522 +- Fix conda-store and Traefik Grafana Dashboards by @marcelovilla in https://github.com/nebari-dev/nebari/pull/2540 +- Implement support for jupyterlab-gallery config by @krassowski in https://github.com/nebari-dev/nebari/pull/2501 +- Add option to run CRDs updates and DaemonSet deletion on user's behalf. by @marcelovilla in https://github.com/nebari-dev/nebari/pull/2544 ### New Contributors -* @arjxn-py made their first contribution in https://github.com/nebari-dev/nebari/pull/2512 + +- @arjxn-py made their first contribution in https://github.com/nebari-dev/nebari/pull/2512 **Full Changelog**: https://github.com/nebari-dev/nebari/compare/2024.5.1...2024.6.1 @@ -137,103 +140,106 @@ This file is copied to nebari-dev/nebari-docs using a GitHub Action. --> ### What's Changed -* make userscheduler run on general node group by @Adam-D-Lewis in -* Upgrade to Pydantic V2 by @Adam-D-Lewis in -* Pydantic2 PR fix by @Adam-D-Lewis in -* remove redundant pydantic class, fix bug by @Adam-D-Lewis in -* Update `python-keycloak` version pins constraints by @viniciusdc in -* add HERA_TOKEN env var to user pods by @Adam-D-Lewis in -* fix docs link by @Adam-D-Lewis in -* Update allowed admin groups by @aktech in +- make userscheduler run on general node group by @Adam-D-Lewis in +- Upgrade to Pydantic V2 by @Adam-D-Lewis in +- Pydantic2 PR fix by @Adam-D-Lewis in +- remove redundant pydantic class, fix bug by @Adam-D-Lewis in +- Update `python-keycloak` version pins constraints by @viniciusdc in +- add HERA_TOKEN env var to user pods by @Adam-D-Lewis in +- fix docs link by @Adam-D-Lewis in +- Update allowed admin groups by @aktech in **Full Changelog**: ## Release 2024.4.1 - April 20, 2024 ### What's Changed -* update azurerm version by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2370 -* Get JupyterHub `groups` from Keycloak, support `oauthenticator` 16.3+ by @krassowski in https://github.com/nebari-dev/nebari/pull/2361 -* add full names for cloud providers in guided init by @exitflynn in https://github.com/nebari-dev/nebari/pull/2375 -* Add middleware to prefix JupyterHub navbar items with /hub. by @marcelovilla in https://github.com/nebari-dev/nebari/pull/2360 -* CLN: split #1928, refactor render test by @fangchenli in https://github.com/nebari-dev/nebari/pull/2246 -* add trailing slash for jupyterhub proxy paths by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2387 -* remove references to deprecated cdsdashboards by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2390 -* add default node groups to config by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2398 -* Update concurrency settings for Integration tests by @viniciusdc in https://github.com/nebari-dev/nebari/pull/2393 -* Make CI/CD Cloud Provider Test Conditional by @tylergraff in https://github.com/nebari-dev/nebari/pull/2369 + +- update azurerm version by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2370 +- Get JupyterHub `groups` from Keycloak, support `oauthenticator` 16.3+ by @krassowski in https://github.com/nebari-dev/nebari/pull/2361 +- add full names for cloud providers in guided init by @exitflynn in https://github.com/nebari-dev/nebari/pull/2375 +- Add middleware to prefix JupyterHub navbar items with /hub. by @marcelovilla in https://github.com/nebari-dev/nebari/pull/2360 +- CLN: split #1928, refactor render test by @fangchenli in https://github.com/nebari-dev/nebari/pull/2246 +- add trailing slash for jupyterhub proxy paths by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2387 +- remove references to deprecated cdsdashboards by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2390 +- add default node groups to config by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2398 +- Update concurrency settings for Integration tests by @viniciusdc in https://github.com/nebari-dev/nebari/pull/2393 +- Make CI/CD Cloud Provider Test Conditional by @tylergraff in https://github.com/nebari-dev/nebari/pull/2369 ### New Contributors -* @exitflynn made their first contribution in https://github.com/nebari-dev/nebari/pull/2375 -**Full Changelog**: https://github.com/nebari-dev/nebari/compare/2024.3.3...2024.4.1 +- @exitflynn made their first contribution in https://github.com/nebari-dev/nebari/pull/2375 +**Full Changelog**: https://github.com/nebari-dev/nebari/compare/2024.3.3...2024.4.1 ## Release 2024.3.3 - March 27, 2024 ### What's Changed -* get default variable value when following a terraform variable by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2322 -* Upgrade Actions versions by @isumitjha in https://github.com/nebari-dev/nebari/pull/2291 -* Cleanup spawner logs by @krassowski in https://github.com/nebari-dev/nebari/pull/2328 -* Fix loki gateway url when deployed on non-dev namespace by @aktech in https://github.com/nebari-dev/nebari/pull/2327 -* Dmcandrew update ruamel.yaml by @dcmcand in https://github.com/nebari-dev/nebari/pull/2315 -* upgrade auth0-python version to ultimately resolve CVE-2024-26130 by @tylergraff in https://github.com/nebari-dev/nebari/pull/2314 -* remove deprecated code paths by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2349 -* Create SECURITY.md by @dcmcand in https://github.com/nebari-dev/nebari/pull/2354 -* Set node affinity for more pods to ensure they run on general node pool by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2353 -* Deduplicate conda-store in JupyterLab main menu by @krassowski in https://github.com/nebari-dev/nebari/pull/2347 -* Pass current namespace to argo via environment variable by @krassowski in https://github.com/nebari-dev/nebari/pull/2317 -* PVC for Traefik Ingress (prevent LetsEncrypt throttling) by @kenafoster in https://github.com/nebari-dev/nebari/pull/2352 + +- get default variable value when following a terraform variable by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2322 +- Upgrade Actions versions by @isumitjha in https://github.com/nebari-dev/nebari/pull/2291 +- Cleanup spawner logs by @krassowski in https://github.com/nebari-dev/nebari/pull/2328 +- Fix loki gateway url when deployed on non-dev namespace by @aktech in https://github.com/nebari-dev/nebari/pull/2327 +- Dmcandrew update ruamel.yaml by @dcmcand in https://github.com/nebari-dev/nebari/pull/2315 +- upgrade auth0-python version to ultimately resolve CVE-2024-26130 by @tylergraff in https://github.com/nebari-dev/nebari/pull/2314 +- remove deprecated code paths by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2349 +- Create SECURITY.md by @dcmcand in https://github.com/nebari-dev/nebari/pull/2354 +- Set node affinity for more pods to ensure they run on general node pool by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2353 +- Deduplicate conda-store in JupyterLab main menu by @krassowski in https://github.com/nebari-dev/nebari/pull/2347 +- Pass current namespace to argo via environment variable by @krassowski in https://github.com/nebari-dev/nebari/pull/2317 +- PVC for Traefik Ingress (prevent LetsEncrypt throttling) by @kenafoster in https://github.com/nebari-dev/nebari/pull/2352 ### New Contributors -* @isumitjha made their first contribution in https://github.com/nebari-dev/nebari/pull/2291 -* @tylergraff made their first contribution in https://github.com/nebari-dev/nebari/pull/2314 -**Full Changelog**: https://github.com/nebari-dev/nebari/compare/2024.3.2...2024.3.3 +- @isumitjha made their first contribution in https://github.com/nebari-dev/nebari/pull/2291 +- @tylergraff made their first contribution in https://github.com/nebari-dev/nebari/pull/2314 +**Full Changelog**: https://github.com/nebari-dev/nebari/compare/2024.3.2...2024.3.3 ## Release 2024.3.2 - March 14, 2024 ### What's Changed -* update max k8s versions and remove depreciated api usage in local deploy by @dcmcand in https://github.com/nebari-dev/nebari/pull/2276 -* update keycloak image repo by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2312 -* Generate random password for Grafana by @aktech in https://github.com/nebari-dev/nebari/pull/2289 -* update conda store to 2024.3.1 by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2316 -* Switch PyPI release workflow to use trusted publishing by @viniciusdc in https://github.com/nebari-dev/nebari/pull/2323 +- update max k8s versions and remove depreciated api usage in local deploy by @dcmcand in https://github.com/nebari-dev/nebari/pull/2276 +- update keycloak image repo by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2312 +- Generate random password for Grafana by @aktech in https://github.com/nebari-dev/nebari/pull/2289 +- update conda store to 2024.3.1 by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2316 +- Switch PyPI release workflow to use trusted publishing by @viniciusdc in https://github.com/nebari-dev/nebari/pull/2323 **Full Changelog**: https://github.com/nebari-dev/nebari/compare/2024.3.1...2024.3.2 ## Release 2024.3.1 - March 11, 2024 ### What's Changed -* Modify Playwright test to account for changes in JupyterLab UI. by @marcelovilla in https://github.com/nebari-dev/nebari/pull/2232 -* Add favicon to jupyterhub theme. by @jbouder in https://github.com/nebari-dev/nebari/pull/2222 -* Set min nodes to 0 for worker and user. by @pt247 in https://github.com/nebari-dev/nebari/pull/2168 -* Remove `jhub-client` from pyproject.toml by @pavithraes in https://github.com/nebari-dev/nebari/pull/2242 -* Include permission validation step to programmatically cloned repos by @viniciusdc in https://github.com/nebari-dev/nebari/pull/2258 -* Expose jupyter's preferred dir as a config option by @krassowski in https://github.com/nebari-dev/nebari/pull/2251 -* Allow to configure default settings for JupyterLab (`overrides.json`) by @krassowski in https://github.com/nebari-dev/nebari/pull/2249 -* Feature/jlab menu customization by @marcelovilla in https://github.com/nebari-dev/nebari/pull/2259 -* Add cloud provider to the dask config.json file by @marcelovilla in https://github.com/nebari-dev/nebari/pull/2266 -* Fix syntax error in jupyter-server-config Python file by @krassowski in https://github.com/nebari-dev/nebari/pull/2286 -* Add "Open VS Code" entry in services by @krassowski in https://github.com/nebari-dev/nebari/pull/2267 -* Add Grafana Loki integration by @aktech in https://github.com/nebari-dev/nebari/pull/2156 + +- Modify Playwright test to account for changes in JupyterLab UI. by @marcelovilla in https://github.com/nebari-dev/nebari/pull/2232 +- Add favicon to jupyterhub theme. by @jbouder in https://github.com/nebari-dev/nebari/pull/2222 +- Set min nodes to 0 for worker and user. by @pt247 in https://github.com/nebari-dev/nebari/pull/2168 +- Remove `jhub-client` from pyproject.toml by @pavithraes in https://github.com/nebari-dev/nebari/pull/2242 +- Include permission validation step to programmatically cloned repos by @viniciusdc in https://github.com/nebari-dev/nebari/pull/2258 +- Expose jupyter's preferred dir as a config option by @krassowski in https://github.com/nebari-dev/nebari/pull/2251 +- Allow to configure default settings for JupyterLab (`overrides.json`) by @krassowski in https://github.com/nebari-dev/nebari/pull/2249 +- Feature/jlab menu customization by @marcelovilla in https://github.com/nebari-dev/nebari/pull/2259 +- Add cloud provider to the dask config.json file by @marcelovilla in https://github.com/nebari-dev/nebari/pull/2266 +- Fix syntax error in jupyter-server-config Python file by @krassowski in https://github.com/nebari-dev/nebari/pull/2286 +- Add "Open VS Code" entry in services by @krassowski in https://github.com/nebari-dev/nebari/pull/2267 +- Add Grafana Loki integration by @aktech in https://github.com/nebari-dev/nebari/pull/2156 ### New Contributors -* @jbouder made their first contribution in https://github.com/nebari-dev/nebari/pull/2222 -* @krassowski made their first contribution in https://github.com/nebari-dev/nebari/pull/2251 -**Full Changelog**: https://github.com/nebari-dev/nebari/compare/2024.1.1...2024.3.1 +- @jbouder made their first contribution in https://github.com/nebari-dev/nebari/pull/2222 +- @krassowski made their first contribution in https://github.com/nebari-dev/nebari/pull/2251 +**Full Changelog**: https://github.com/nebari-dev/nebari/compare/2024.1.1...2024.3.1 ## Release 2024.1.1 - January 17, 2024 ### Feature changes and enhancements -* Upgrade conda-store to latest version 2024.1.1 -* Add Jhub-Apps -* Add Jupyterlab-pioneer -* Minor improvements and bug fixes +- Upgrade conda-store to latest version 2024.1.1 +- Add Jhub-Apps +- Add Jupyterlab-pioneer +- Minor improvements and bug fixes ### Breaking Changes @@ -241,27 +247,26 @@ This file is copied to nebari-dev/nebari-docs using a GitHub Action. --> ### What's Changed -* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/nebari-dev/nebari/pull/2176 -* Fix logic for dns lookup. by @pt247 in https://github.com/nebari-dev/nebari/pull/2166 -* Integrate JupyterHub App Launcher into Nebari by @aktech in https://github.com/nebari-dev/nebari/pull/2185 -* Pass in permissions boundary to k8s module by @aktech in https://github.com/nebari-dev/nebari/pull/2153 -* Add jupyterlab-pioneer by @aktech in https://github.com/nebari-dev/nebari/pull/2127 -* JHub Apps: Filter conda envs by user by @aktech in https://github.com/nebari-dev/nebari/pull/2187 -* update upgrade command by @dcmcand in https://github.com/nebari-dev/nebari/pull/2198 -* Remove JupyterLab from services list by @aktech in https://github.com/nebari-dev/nebari/pull/2189 -* Adding fields to ignore within keycloak_realm by @costrouc in https://github.com/nebari-dev/nebari/pull/2200 -* Add Nebari menu item configuration. by @marcelovilla in https://github.com/nebari-dev/nebari/pull/2196 -* Disable "Newer update available" popup as default setting by @viniciusdc in https://github.com/nebari-dev/nebari/pull/2192 -* Block usage of pip inside jupyterlab by @viniciusdc in https://github.com/nebari-dev/nebari/pull/2191 -* Return all environments instead of just those under the user's namespace for jhub-apps by @marcelovilla in https://github.com/nebari-dev/nebari/pull/2206 -* Adding a temporary writable directory for conda-store server /home/conda by @costrouc in https://github.com/nebari-dev/nebari/pull/2209 -* Add demo repositories mechanism to populate user's space by @viniciusdc in https://github.com/nebari-dev/nebari/pull/2207 -* update nebari_workflow_controller and conda_store tags to test rc by @dcmcand in https://github.com/nebari-dev/nebari/pull/2210 -* 2023.12.1 release notes by @dcmcand in https://github.com/nebari-dev/nebari/pull/2211 -* Make it so that jhub-apps default theme doesn't override by @costrouc in https://github.com/nebari-dev/nebari/pull/2213 -* Adding additional theme variables to jupyterhub theme config by @costrouc in https://github.com/nebari-dev/nebari/pull/2215 -* updates Current Release to 2024.1.1 by @dcmcand in https://github.com/nebari-dev/nebari/pull/2227 - +- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/nebari-dev/nebari/pull/2176 +- Fix logic for dns lookup. by @pt247 in https://github.com/nebari-dev/nebari/pull/2166 +- Integrate JupyterHub App Launcher into Nebari by @aktech in https://github.com/nebari-dev/nebari/pull/2185 +- Pass in permissions boundary to k8s module by @aktech in https://github.com/nebari-dev/nebari/pull/2153 +- Add jupyterlab-pioneer by @aktech in https://github.com/nebari-dev/nebari/pull/2127 +- JHub Apps: Filter conda envs by user by @aktech in https://github.com/nebari-dev/nebari/pull/2187 +- update upgrade command by @dcmcand in https://github.com/nebari-dev/nebari/pull/2198 +- Remove JupyterLab from services list by @aktech in https://github.com/nebari-dev/nebari/pull/2189 +- Adding fields to ignore within keycloak_realm by @costrouc in https://github.com/nebari-dev/nebari/pull/2200 +- Add Nebari menu item configuration. by @marcelovilla in https://github.com/nebari-dev/nebari/pull/2196 +- Disable "Newer update available" popup as default setting by @viniciusdc in https://github.com/nebari-dev/nebari/pull/2192 +- Block usage of pip inside jupyterlab by @viniciusdc in https://github.com/nebari-dev/nebari/pull/2191 +- Return all environments instead of just those under the user's namespace for jhub-apps by @marcelovilla in https://github.com/nebari-dev/nebari/pull/2206 +- Adding a temporary writable directory for conda-store server /home/conda by @costrouc in https://github.com/nebari-dev/nebari/pull/2209 +- Add demo repositories mechanism to populate user's space by @viniciusdc in https://github.com/nebari-dev/nebari/pull/2207 +- update nebari_workflow_controller and conda_store tags to test rc by @dcmcand in https://github.com/nebari-dev/nebari/pull/2210 +- 2023.12.1 release notes by @dcmcand in https://github.com/nebari-dev/nebari/pull/2211 +- Make it so that jhub-apps default theme doesn't override by @costrouc in https://github.com/nebari-dev/nebari/pull/2213 +- Adding additional theme variables to jupyterhub theme config by @costrouc in https://github.com/nebari-dev/nebari/pull/2215 +- updates Current Release to 2024.1.1 by @dcmcand in https://github.com/nebari-dev/nebari/pull/2227 **Full Changelog**: https://github.com/nebari-dev/nebari/compare/2023.12.1...2024.1.1 @@ -269,30 +274,30 @@ This file is copied to nebari-dev/nebari-docs using a GitHub Action. --> ### Feature changes and enhancements -* Upgrade conda-store to latest version 2023.10.1 -* Minor improvements and bug fixes +- Upgrade conda-store to latest version 2023.10.1 +- Minor improvements and bug fixes ### Breaking Changes > WARNING: Prefect, ClearML and kbatch were removed in this release and upgrading to this version will result in all of them being uninstalled. ### What's Changed -* BUG: fix incorrect config override #2086 by @fangchenli in https://github.com/nebari-dev/nebari/pull/2087 -* ENH: add AWS IAM permissions_boundary option #2078 by @fangchenli in https://github.com/nebari-dev/nebari/pull/2082 -* CI: cleanup local integration workflow by @fangchenli in https://github.com/nebari-dev/nebari/pull/2079 -* ENH: check missing GCP services by @fangchenli in https://github.com/nebari-dev/nebari/pull/2036 -* ENH: use packaging for version parsing, add unit tests by @fangchenli in https://github.com/nebari-dev/nebari/pull/2048 -* ENH: specify required field when retrieving available gcp regions by @fangchenli in https://github.com/nebari-dev/nebari/pull/2033 -* Upgrade conda-store to 2023.10.1 by @iameskild in https://github.com/nebari-dev/nebari/pull/2092 -* Add upgrade command for 2023.11.1 by @iameskild in https://github.com/nebari-dev/nebari/pull/2103 -* CLN: cleanup typing and typing import in init by @fangchenli in https://github.com/nebari-dev/nebari/pull/2107 -* Remove kbatch, prefect and clearml by @iameskild in https://github.com/nebari-dev/nebari/pull/2101 -* Fix integration tests, helm-validate script by @iameskild in https://github.com/nebari-dev/nebari/pull/2102 -* Re-enable AWS tags support by @iameskild in https://github.com/nebari-dev/nebari/pull/2096 -* Update upgrade instructions for 2023.11.1 by @iameskild in https://github.com/nebari-dev/nebari/pull/2112 -* Update nebari-git env pins by by @iameskild in https://github.com/nebari-dev/nebari/pull/2113 -* Update release notes for 2023.11.1 by @iameskild in https://github.com/nebari-dev/nebari/pull/2114 +- BUG: fix incorrect config override #2086 by @fangchenli in https://github.com/nebari-dev/nebari/pull/2087 +- ENH: add AWS IAM permissions_boundary option #2078 by @fangchenli in https://github.com/nebari-dev/nebari/pull/2082 +- CI: cleanup local integration workflow by @fangchenli in https://github.com/nebari-dev/nebari/pull/2079 +- ENH: check missing GCP services by @fangchenli in https://github.com/nebari-dev/nebari/pull/2036 +- ENH: use packaging for version parsing, add unit tests by @fangchenli in https://github.com/nebari-dev/nebari/pull/2048 +- ENH: specify required field when retrieving available gcp regions by @fangchenli in https://github.com/nebari-dev/nebari/pull/2033 +- Upgrade conda-store to 2023.10.1 by @iameskild in https://github.com/nebari-dev/nebari/pull/2092 +- Add upgrade command for 2023.11.1 by @iameskild in https://github.com/nebari-dev/nebari/pull/2103 +- CLN: cleanup typing and typing import in init by @fangchenli in https://github.com/nebari-dev/nebari/pull/2107 +- Remove kbatch, prefect and clearml by @iameskild in https://github.com/nebari-dev/nebari/pull/2101 +- Fix integration tests, helm-validate script by @iameskild in https://github.com/nebari-dev/nebari/pull/2102 +- Re-enable AWS tags support by @iameskild in https://github.com/nebari-dev/nebari/pull/2096 +- Update upgrade instructions for 2023.11.1 by @iameskild in https://github.com/nebari-dev/nebari/pull/2112 +- Update nebari-git env pins by by @iameskild in https://github.com/nebari-dev/nebari/pull/2113 +- Update release notes for 2023.11.1 by @iameskild in https://github.com/nebari-dev/nebari/pull/2114 **Full Changelog**: https://github.com/nebari-dev/nebari/compare/2023.11.1...2023.12.1 @@ -300,35 +305,34 @@ This file is copied to nebari-dev/nebari-docs using a GitHub Action. --> ### Feature changes and enhancements -* Upgrade conda-store to latest version 2023 .10.1 -* Minor improvements and bug fixes +- Upgrade conda-store to latest version 2023 .10.1 +- Minor improvements and bug fixes ### Breaking Changes > WARNING: Prefect, ClearML and kbatch were removed in this release and upgrading to this version will result in all of them being uninstalled. ### What's Changed -* BUG: fix incorrect config override #2086 by @fangchenli in https://github.com/nebari-dev/nebari/pull/2087 -* ENH: add AWS IAM permissions_boundary option #2078 by @fangchenli in https://github.com/nebari-dev/nebari/pull/2082 -* CI: cleanup local integration workflow by @fangchenli in https://github.com/nebari-dev/nebari/pull/2079 -* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/nebari-dev/nebari/pull/2099 -* ENH: check missing GCP services by @fangchenli in https://github.com/nebari-dev/nebari/pull/2036 -* ENH: use packaging for version parsing, add unit tests by @fangchenli in https://github.com/nebari-dev/nebari/pull/2048 -* ENH: specify required field when retrieving available gcp regions by @fangchenli in https://github.com/nebari-dev/nebari/pull/2033 -* Upgrade conda-store to 2023.10.1 by @iameskild in https://github.com/nebari-dev/nebari/pull/2092 -* Add upgrade command for 2023.11.1 by @iameskild in https://github.com/nebari-dev/nebari/pull/2103 -* CLN: cleanup typing and typing import in init by @fangchenli in https://github.com/nebari-dev/nebari/pull/2107 -* Remove kbatch, prefect and clearml by @iameskild in https://github.com/nebari-dev/nebari/pull/2101 -* Fix integration tests, helm-validate script by @iameskild in https://github.com/nebari-dev/nebari/pull/2102 -* Re-enable AWS tags support by @iameskild in https://github.com/nebari-dev/nebari/pull/2096 -* Update upgrade instructions for 2023.11.1 by @iameskild in https://github.com/nebari-dev/nebari/pull/2112 -* Update nebari-git env pins by by @iameskild in https://github.com/nebari-dev/nebari/pull/2113 -* Update release notes for 2023.11.1 by @iameskild in https://github.com/nebari-dev/nebari/pull/2114 +- BUG: fix incorrect config override #2086 by @fangchenli in https://github.com/nebari-dev/nebari/pull/2087 +- ENH: add AWS IAM permissions_boundary option #2078 by @fangchenli in https://github.com/nebari-dev/nebari/pull/2082 +- CI: cleanup local integration workflow by @fangchenli in https://github.com/nebari-dev/nebari/pull/2079 +- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/nebari-dev/nebari/pull/2099 +- ENH: check missing GCP services by @fangchenli in https://github.com/nebari-dev/nebari/pull/2036 +- ENH: use packaging for version parsing, add unit tests by @fangchenli in https://github.com/nebari-dev/nebari/pull/2048 +- ENH: specify required field when retrieving available gcp regions by @fangchenli in https://github.com/nebari-dev/nebari/pull/2033 +- Upgrade conda-store to 2023.10.1 by @iameskild in https://github.com/nebari-dev/nebari/pull/2092 +- Add upgrade command for 2023.11.1 by @iameskild in https://github.com/nebari-dev/nebari/pull/2103 +- CLN: cleanup typing and typing import in init by @fangchenli in https://github.com/nebari-dev/nebari/pull/2107 +- Remove kbatch, prefect and clearml by @iameskild in https://github.com/nebari-dev/nebari/pull/2101 +- Fix integration tests, helm-validate script by @iameskild in https://github.com/nebari-dev/nebari/pull/2102 +- Re-enable AWS tags support by @iameskild in https://github.com/nebari-dev/nebari/pull/2096 +- Update upgrade instructions for 2023.11.1 by @iameskild in https://github.com/nebari-dev/nebari/pull/2112 +- Update nebari-git env pins by by @iameskild in https://github.com/nebari-dev/nebari/pull/2113 +- Update release notes for 2023.11.1 by @iameskild in https://github.com/nebari-dev/nebari/pull/2114 **Full Changelog**: https://github.com/nebari-dev/nebari/compare/2023.10.1...2023.11.1 - ## Release 2023.10.1 - October 20, 2023 This release includes a major refactor which introduces a Pluggy-based extension mechanism which allow developers to build new stages. This is the initial implementation @@ -342,109 +346,110 @@ command and follow the instructions ### Feature changes and enhancements -* Extension Mechanism Implementation in [PR 1833](https://github.com/nebari-dev/nebari/pull/1833) - * This also includes much stricter schema validation. -* JupyterHub upgraded to 3.1 in [PR 1856](https://github.com/nebari-dev/nebari/pull/1856)' +- Extension Mechanism Implementation in [PR 1833](https://github.com/nebari-dev/nebari/pull/1833) + - This also includes much stricter schema validation. +- JupyterHub upgraded to 3.1 in [PR 1856](https://github.com/nebari-dev/nebari/pull/1856)' ### Breaking Changes -* While we have tried our best to avoid breaking changes when introducing the extension mechanism, the scope of the changes is too large for us to confidently say there won't be breaking changes. +- While we have tried our best to avoid breaking changes when introducing the extension mechanism, the scope of the changes is too large for us to confidently say there won't be breaking changes. > WARNING: CDS Dashboards was removed in this release and upgrading to this version will result in CDS Dashboards being uninstalled. A replacement dashboarding solution is currently in the work and will be integrated soon. > WARNING: We will be removing and ending support for ClearML, Prefect and kbatch in the next release. The kbatch has been functionally replaced by Argo-Jupyter-Scheduler. We have seen little interest in ClearML and Prefect in recent years, and removing makes sense at this point. However if you wish to continue using them with Nebari we encourage you to [write your own Nebari extension](https://www.nebari.dev/docs/how-tos/nebari-extension-system#developing-an-extension). ### What's Changed -* Spinup spot instance for CI with cirun by @aktech in https://github.com/nebari-dev/nebari/pull/1882 -* Fix argo-viewer service account reference by @iameskild in https://github.com/nebari-dev/nebari/pull/1881 -* Framework for Nebari deployment via pytest for extensive testing by @aktech in https://github.com/nebari-dev/nebari/pull/1867 -* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/nebari-dev/nebari/pull/1878 -* Test GCP/AWS Deployment with Pytest by @aktech in https://github.com/nebari-dev/nebari/pull/1871 -* Bump DigitalOcean provider to latest by @aktech in https://github.com/nebari-dev/nebari/pull/1891 -* Ensure path is Path object by @iameskild in https://github.com/nebari-dev/nebari/pull/1888 -* enabling viewing hidden files in jupyterlab file explorer by @kalpanachinnappan in https://github.com/nebari-dev/nebari/pull/1893 -* Extension Mechanism Implementation by @costrouc in https://github.com/nebari-dev/nebari/pull/1833 -* Fix import path in deployment tests & misc by @aktech in https://github.com/nebari-dev/nebari/pull/1908 -* pytest:ensure failure on warnings by @costrouc in https://github.com/nebari-dev/nebari/pull/1907 -* workaround for mixed string/posixpath error by @sblair-metrostar in https://github.com/nebari-dev/nebari/pull/1915 -* ENH: Remove aws cli, use boto3 by @fangchenli in https://github.com/nebari-dev/nebari/pull/1920 -* paginator for boto3 ec2 instance types by @sblair-metrostar in https://github.com/nebari-dev/nebari/pull/1923 -* Update README.md -- fix typo. by @teoliphant in https://github.com/nebari-dev/nebari/pull/1925 -* Add more unit tests, add cleanup step for Digital Ocean integration test by @iameskild in https://github.com/nebari-dev/nebari/pull/1910 -* Add cleanup step for AWS integration test, ensure disable_prompt is passed through by @iameskild in https://github.com/nebari-dev/nebari/pull/1921 -* K8s 1.25 + More Improvements by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/1856 -* adding lifecycle ignore to eks node group by @sblair-metrostar in https://github.com/nebari-dev/nebari/pull/1905 -* nebari init unit tests by @sblair-metrostar in https://github.com/nebari-dev/nebari/pull/1931 -* Bug fix - JH singleuser environment getting overwritten by @kenafoster in https://github.com/nebari-dev/nebari/pull/1933 -* Allow users to specify the Azure RG to deploy into by @iameskild in https://github.com/nebari-dev/nebari/pull/1927 -* nebari validate unit tests by @sblair-metrostar in https://github.com/nebari-dev/nebari/pull/1938 -* adding openid connect provider to enable irsa feature by @sblair-metrostar in https://github.com/nebari-dev/nebari/pull/1903 -* nebari upgrade CLI tests by @sblair-metrostar in https://github.com/nebari-dev/nebari/pull/1963 -* CI: Add test coverage by @fangchenli in https://github.com/nebari-dev/nebari/pull/1959 -* nebari cli environment variable handling, support, keycloak, dev tests by @sblair-metrostar in https://github.com/nebari-dev/nebari/pull/1968 -* CI: remove empty notebook to fix pre-commit json check by @fangchenli in https://github.com/nebari-dev/nebari/pull/1976 -* TYP: fix typing error in plugins by @fangchenli in https://github.com/nebari-dev/nebari/pull/1973 -* TYP: fix return class type in hookimpl by @fangchenli in https://github.com/nebari-dev/nebari/pull/1975 -* Allow users to specify Azure tags by @iameskild in https://github.com/nebari-dev/nebari/pull/1967 -* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/nebari-dev/nebari/pull/1979 -* Do not try and add argo envs when disabled by @iameskild in https://github.com/nebari-dev/nebari/pull/1926 -* Handle region with care, updates to test suite by @iameskild in https://github.com/nebari-dev/nebari/pull/1930 -* remove custom auth from config schema by @sblair-metrostar in https://github.com/nebari-dev/nebari/pull/1994 -* CLI: handle removed dns options in deploy command by @fangchenli in https://github.com/nebari-dev/nebari/pull/1992 -* Add API docs by @kcpevey in https://github.com/nebari-dev/nebari/pull/1634 -* Upgrade images for jupyterhub-ssh, kbatch by @iameskild in https://github.com/nebari-dev/nebari/pull/1997 -* Add permissions to generate_cli_docs workflow by @iameskild in https://github.com/nebari-dev/nebari/pull/2005 -* standardize regex and messaging for names by @kenafoster in https://github.com/nebari-dev/nebari/pull/2003 -* ENH: specify required fields when retrieving available gcp projects by @fangchenli in https://github.com/nebari-dev/nebari/pull/2008 -* Modify JupyterHub networkPolicy to match existing policy by @iameskild in https://github.com/nebari-dev/nebari/pull/1991 -* Update package dependencies by @iameskild in https://github.com/nebari-dev/nebari/pull/1986 -* CI: Add AWS integration test workflow, clean up by @iameskild in https://github.com/nebari-dev/nebari/pull/1977 -* BUG: fix unboundlocalerror in integration test by @fangchenli in https://github.com/nebari-dev/nebari/pull/1999 -* Auth0/Github auth-provider config validation fix by @sblair-metrostar in https://github.com/nebari-dev/nebari/pull/2009 -* terraform upgrade to 1.5.7 by @sblair-metrostar in https://github.com/nebari-dev/nebari/pull/1998 -* cli init repo auto provision fix by @sblair-metrostar in https://github.com/nebari-dev/nebari/pull/2012 -* Add gcp_cleanup, minor changes by @iameskild in https://github.com/nebari-dev/nebari/pull/2010 -* Fix #2024 by @dcmcand in https://github.com/nebari-dev/nebari/pull/2025 -* Upgrade conda-store to 2023.9.2 by @iameskild in https://github.com/nebari-dev/nebari/pull/2028 -* Add upgrade steps, instructions for 2023.9.1 by @iameskild in https://github.com/nebari-dev/nebari/pull/2029 -* CI: add gcp integration test by @fangchenli in https://github.com/nebari-dev/nebari/pull/2049 -* CLN: remove flake8 from dependencies by @fangchenli in https://github.com/nebari-dev/nebari/pull/2044 -* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/nebari-dev/nebari/pull/2047 -* fix typo in guided init for Digital Ocean by @dcmcand in https://github.com/nebari-dev/nebari/pull/2059 -* CI: add do integration by @fangchenli in https://github.com/nebari-dev/nebari/pull/2060 -* TYP: make all subfolders under kubernetes_services/template non-module by @fangchenli in https://github.com/nebari-dev/nebari/pull/2043 -* TYP: fix most typing errors in provider by @fangchenli in https://github.com/nebari-dev/nebari/pull/2038 -* Fix link to documentation on Nebari Deployment home page by @aktech in https://github.com/nebari-dev/nebari/pull/2063 -* TST: enable timeout config in playwright notebook test by @fangchenli in https://github.com/nebari-dev/nebari/pull/1996 -* DEPS: sync supported python version by @fangchenli in https://github.com/nebari-dev/nebari/pull/2065 -* Test support for Python 3.12 by @aktech in https://github.com/nebari-dev/nebari/pull/2046 -* BUG: fix validation error related to `provider` #2054 by @fangchenli in https://github.com/nebari-dev/nebari/pull/2056 -* CI: improve unit test workflow in CI, revert #2046 by @fangchenli in https://github.com/nebari-dev/nebari/pull/2071 -* TST: enable exact_match config in playwright notebook test by @fangchenli in https://github.com/nebari-dev/nebari/pull/2027 -* CI: move conda build test to separate job by @fangchenli in https://github.com/nebari-dev/nebari/pull/2073 -* Revert conda-store to v0.4.14, #2028 by @iameskild in https://github.com/nebari-dev/nebari/pull/2074 -* ENH/CI: add mypy config, and CI workflow by @fangchenli in https://github.com/nebari-dev/nebari/pull/2066 -* Update upgrade for 2023.10.1 by @kenfoster in https://github.com/nebari-dev/nebari/pull/2080 -* Update RELEASE notes, minor fixes by @iameskild in https://github.com/nebari-dev/nebari/pull/2039 + +- Spinup spot instance for CI with cirun by @aktech in https://github.com/nebari-dev/nebari/pull/1882 +- Fix argo-viewer service account reference by @iameskild in https://github.com/nebari-dev/nebari/pull/1881 +- Framework for Nebari deployment via pytest for extensive testing by @aktech in https://github.com/nebari-dev/nebari/pull/1867 +- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/nebari-dev/nebari/pull/1878 +- Test GCP/AWS Deployment with Pytest by @aktech in https://github.com/nebari-dev/nebari/pull/1871 +- Bump DigitalOcean provider to latest by @aktech in https://github.com/nebari-dev/nebari/pull/1891 +- Ensure path is Path object by @iameskild in https://github.com/nebari-dev/nebari/pull/1888 +- enabling viewing hidden files in jupyterlab file explorer by @kalpanachinnappan in https://github.com/nebari-dev/nebari/pull/1893 +- Extension Mechanism Implementation by @costrouc in https://github.com/nebari-dev/nebari/pull/1833 +- Fix import path in deployment tests & misc by @aktech in https://github.com/nebari-dev/nebari/pull/1908 +- pytest:ensure failure on warnings by @costrouc in https://github.com/nebari-dev/nebari/pull/1907 +- workaround for mixed string/posixpath error by @sblair-metrostar in https://github.com/nebari-dev/nebari/pull/1915 +- ENH: Remove aws cli, use boto3 by @fangchenli in https://github.com/nebari-dev/nebari/pull/1920 +- paginator for boto3 ec2 instance types by @sblair-metrostar in https://github.com/nebari-dev/nebari/pull/1923 +- Update README.md -- fix typo. by @teoliphant in https://github.com/nebari-dev/nebari/pull/1925 +- Add more unit tests, add cleanup step for Digital Ocean integration test by @iameskild in https://github.com/nebari-dev/nebari/pull/1910 +- Add cleanup step for AWS integration test, ensure disable_prompt is passed through by @iameskild in https://github.com/nebari-dev/nebari/pull/1921 +- K8s 1.25 + More Improvements by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/1856 +- adding lifecycle ignore to eks node group by @sblair-metrostar in https://github.com/nebari-dev/nebari/pull/1905 +- nebari init unit tests by @sblair-metrostar in https://github.com/nebari-dev/nebari/pull/1931 +- Bug fix - JH singleuser environment getting overwritten by @kenafoster in https://github.com/nebari-dev/nebari/pull/1933 +- Allow users to specify the Azure RG to deploy into by @iameskild in https://github.com/nebari-dev/nebari/pull/1927 +- nebari validate unit tests by @sblair-metrostar in https://github.com/nebari-dev/nebari/pull/1938 +- adding openid connect provider to enable irsa feature by @sblair-metrostar in https://github.com/nebari-dev/nebari/pull/1903 +- nebari upgrade CLI tests by @sblair-metrostar in https://github.com/nebari-dev/nebari/pull/1963 +- CI: Add test coverage by @fangchenli in https://github.com/nebari-dev/nebari/pull/1959 +- nebari cli environment variable handling, support, keycloak, dev tests by @sblair-metrostar in https://github.com/nebari-dev/nebari/pull/1968 +- CI: remove empty notebook to fix pre-commit json check by @fangchenli in https://github.com/nebari-dev/nebari/pull/1976 +- TYP: fix typing error in plugins by @fangchenli in https://github.com/nebari-dev/nebari/pull/1973 +- TYP: fix return class type in hookimpl by @fangchenli in https://github.com/nebari-dev/nebari/pull/1975 +- Allow users to specify Azure tags by @iameskild in https://github.com/nebari-dev/nebari/pull/1967 +- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/nebari-dev/nebari/pull/1979 +- Do not try and add argo envs when disabled by @iameskild in https://github.com/nebari-dev/nebari/pull/1926 +- Handle region with care, updates to test suite by @iameskild in https://github.com/nebari-dev/nebari/pull/1930 +- remove custom auth from config schema by @sblair-metrostar in https://github.com/nebari-dev/nebari/pull/1994 +- CLI: handle removed dns options in deploy command by @fangchenli in https://github.com/nebari-dev/nebari/pull/1992 +- Add API docs by @kcpevey in https://github.com/nebari-dev/nebari/pull/1634 +- Upgrade images for jupyterhub-ssh, kbatch by @iameskild in https://github.com/nebari-dev/nebari/pull/1997 +- Add permissions to generate_cli_docs workflow by @iameskild in https://github.com/nebari-dev/nebari/pull/2005 +- standardize regex and messaging for names by @kenafoster in https://github.com/nebari-dev/nebari/pull/2003 +- ENH: specify required fields when retrieving available gcp projects by @fangchenli in https://github.com/nebari-dev/nebari/pull/2008 +- Modify JupyterHub networkPolicy to match existing policy by @iameskild in https://github.com/nebari-dev/nebari/pull/1991 +- Update package dependencies by @iameskild in https://github.com/nebari-dev/nebari/pull/1986 +- CI: Add AWS integration test workflow, clean up by @iameskild in https://github.com/nebari-dev/nebari/pull/1977 +- BUG: fix unboundlocalerror in integration test by @fangchenli in https://github.com/nebari-dev/nebari/pull/1999 +- Auth0/Github auth-provider config validation fix by @sblair-metrostar in https://github.com/nebari-dev/nebari/pull/2009 +- terraform upgrade to 1.5.7 by @sblair-metrostar in https://github.com/nebari-dev/nebari/pull/1998 +- cli init repo auto provision fix by @sblair-metrostar in https://github.com/nebari-dev/nebari/pull/2012 +- Add gcp_cleanup, minor changes by @iameskild in https://github.com/nebari-dev/nebari/pull/2010 +- Fix #2024 by @dcmcand in https://github.com/nebari-dev/nebari/pull/2025 +- Upgrade conda-store to 2023.9.2 by @iameskild in https://github.com/nebari-dev/nebari/pull/2028 +- Add upgrade steps, instructions for 2023.9.1 by @iameskild in https://github.com/nebari-dev/nebari/pull/2029 +- CI: add gcp integration test by @fangchenli in https://github.com/nebari-dev/nebari/pull/2049 +- CLN: remove flake8 from dependencies by @fangchenli in https://github.com/nebari-dev/nebari/pull/2044 +- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/nebari-dev/nebari/pull/2047 +- fix typo in guided init for Digital Ocean by @dcmcand in https://github.com/nebari-dev/nebari/pull/2059 +- CI: add do integration by @fangchenli in https://github.com/nebari-dev/nebari/pull/2060 +- TYP: make all subfolders under kubernetes_services/template non-module by @fangchenli in https://github.com/nebari-dev/nebari/pull/2043 +- TYP: fix most typing errors in provider by @fangchenli in https://github.com/nebari-dev/nebari/pull/2038 +- Fix link to documentation on Nebari Deployment home page by @aktech in https://github.com/nebari-dev/nebari/pull/2063 +- TST: enable timeout config in playwright notebook test by @fangchenli in https://github.com/nebari-dev/nebari/pull/1996 +- DEPS: sync supported python version by @fangchenli in https://github.com/nebari-dev/nebari/pull/2065 +- Test support for Python 3.12 by @aktech in https://github.com/nebari-dev/nebari/pull/2046 +- BUG: fix validation error related to `provider` #2054 by @fangchenli in https://github.com/nebari-dev/nebari/pull/2056 +- CI: improve unit test workflow in CI, revert #2046 by @fangchenli in https://github.com/nebari-dev/nebari/pull/2071 +- TST: enable exact_match config in playwright notebook test by @fangchenli in https://github.com/nebari-dev/nebari/pull/2027 +- CI: move conda build test to separate job by @fangchenli in https://github.com/nebari-dev/nebari/pull/2073 +- Revert conda-store to v0.4.14, #2028 by @iameskild in https://github.com/nebari-dev/nebari/pull/2074 +- ENH/CI: add mypy config, and CI workflow by @fangchenli in https://github.com/nebari-dev/nebari/pull/2066 +- Update upgrade for 2023.10.1 by @kenfoster in https://github.com/nebari-dev/nebari/pull/2080 +- Update RELEASE notes, minor fixes by @iameskild in https://github.com/nebari-dev/nebari/pull/2039 ### New Contributors -* @kalpanachinnappan made their first contribution in https://github.com/nebari-dev/nebari/pull/1893 -* @fangchenli made their first contribution in https://github.com/nebari-dev/nebari/pull/1920 -* @teoliphant made their first contribution in https://github.com/nebari-dev/nebari/pull/1925 -* @kenafoster made their first contribution in https://github.com/nebari-dev/nebari/pull/1933 -* @dcmcand made their first contribution in https://github.com/nebari-dev/nebari/pull/2025 -**Full Changelog**: https://github.com/nebari-dev/nebari/compare/2023.7.2...2023.10.1 +- @kalpanachinnappan made their first contribution in https://github.com/nebari-dev/nebari/pull/1893 +- @fangchenli made their first contribution in https://github.com/nebari-dev/nebari/pull/1920 +- @teoliphant made their first contribution in https://github.com/nebari-dev/nebari/pull/1925 +- @kenafoster made their first contribution in https://github.com/nebari-dev/nebari/pull/1933 +- @dcmcand made their first contribution in https://github.com/nebari-dev/nebari/pull/2025 +**Full Changelog**: https://github.com/nebari-dev/nebari/compare/2023.7.2...2023.10.1 ## Release 2023.7.2 - August 3, 2023 This is a hot-fix release that resolves an issue whereby users in the `analyst` group are unable to launch their JupyterLab server because the name of the viewer-specific `ARGO_TOKEN` was mislabeled; see [PR 1881](https://github.com/nebari-dev/nebari/pull/1881) for more details. ### What's Changed -* Fix argo-viewer service account reference by @iameskild in https://github.com/nebari-dev/nebari/pull/1881 -* Add release notes for 2023.7.2, update release notes for 2023.7.1 by @iameskild in https://github.com/nebari-dev/nebari/pull/1886 +- Fix argo-viewer service account reference by @iameskild in https://github.com/nebari-dev/nebari/pull/1881 +- Add release notes for 2023.7.2, update release notes for 2023.7.1 by @iameskild in https://github.com/nebari-dev/nebari/pull/1886 ## Release 2023.7.1 - July 21, 2023 @@ -454,204 +459,205 @@ This is a hot-fix release that resolves an issue whereby users in the `analyst` ### Feature changes and enhancements -* Addition of Nebari-Workflow-Controller in [PR 1741](https://github.com/nebari-dev/nebari/pull/1741) -* Addition of Argo-Jupyter-Scheduler in [PR 1832](https://github.com/nebari-dev/nebari/pull/1832) -* Make most of the API private +- Addition of Nebari-Workflow-Controller in [PR 1741](https://github.com/nebari-dev/nebari/pull/1741) +- Addition of Argo-Jupyter-Scheduler in [PR 1832](https://github.com/nebari-dev/nebari/pull/1832) +- Make most of the API private ### Breaking Changes -* As mentioned in the above WARNING, clusters running on AWS should perform a [manual backup](https://www.nebari.dev/docs/how-tos/manual-backup) before running the upgrade to the latest version as changes to the AWS VPC will cause the cluster to be destroyed and redeployed. - +- As mentioned in the above WARNING, clusters running on AWS should perform a [manual backup](https://www.nebari.dev/docs/how-tos/manual-backup) before running the upgrade to the latest version as changes to the AWS VPC will cause the cluster to be destroyed and redeployed. ### What's Changed -* use conda forge explicitly in conda build test by @pmeier in https://github.com/nebari-dev/nebari/pull/1771 -* document that the upgrade command is for all nebari upgrades by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/1794 -* don't fail CI matrices fast by @pmeier in https://github.com/nebari-dev/nebari/pull/1804 -* unvendor keycloak_metrics_spi by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/1810 -* Dedent fail-fast by @iameskild in https://github.com/nebari-dev/nebari/pull/1815 -* support deploying on existing vpc on aws by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/1807 -* purge most danlging qhub references by @pmeier in https://github.com/nebari-dev/nebari/pull/1802 -* Add Argo Workflow Admission controller by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/1741 -* purge infracost CLI command / CI jobs by @pmeier in https://github.com/nebari-dev/nebari/pull/1820 -* remove unused function parameters and CLI flags by @pmeier in https://github.com/nebari-dev/nebari/pull/1725 -* purge docs and nox by @pmeier in https://github.com/nebari-dev/nebari/pull/1801 -* Add Helm chart lint tool by @viniciusdc in https://github.com/nebari-dev/nebari/pull/1679 -* don't set /etc/hosts in CI by @pmeier in https://github.com/nebari-dev/nebari/pull/1729 -* remove execute permissions on templates by @pmeier in https://github.com/nebari-dev/nebari/pull/1798 -* fix deprecated file deletion by @pmeier in https://github.com/nebari-dev/nebari/pull/1799 -* make nebari API private by @pmeier in https://github.com/nebari-dev/nebari/pull/1778 -* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/nebari-dev/nebari/pull/1831 -* Simplify CI by @iameskild in https://github.com/nebari-dev/nebari/pull/1819 -* Fix edge-case where k8s_version is equal to HIGHEST_SUPPORTED_K8S_VER… by @iameskild in https://github.com/nebari-dev/nebari/pull/1842 -* add more configuration to enable private clusters on AWS by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/1841 -* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/nebari-dev/nebari/pull/1851 -* AWS gov cloud support by @sblair-metrostar in https://github.com/nebari-dev/nebari/pull/1857 -* Pathlib everywhere by @pmeier in https://github.com/nebari-dev/nebari/pull/1773 -* Initial playwright setup by @kcpevey in https://github.com/nebari-dev/nebari/pull/1665 -* Changes required for Jupyter-Scheduler integration by @iameskild in https://github.com/nebari-dev/nebari/pull/1832 -* Update upgrade command in preparation for release by @iameskild in https://github.com/nebari-dev/nebari/pull/1868 -* Add release notes by @iameskild in https://github.com/nebari-dev/nebari/issues/1869 + +- use conda forge explicitly in conda build test by @pmeier in https://github.com/nebari-dev/nebari/pull/1771 +- document that the upgrade command is for all nebari upgrades by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/1794 +- don't fail CI matrices fast by @pmeier in https://github.com/nebari-dev/nebari/pull/1804 +- unvendor keycloak_metrics_spi by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/1810 +- Dedent fail-fast by @iameskild in https://github.com/nebari-dev/nebari/pull/1815 +- support deploying on existing vpc on aws by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/1807 +- purge most danlging qhub references by @pmeier in https://github.com/nebari-dev/nebari/pull/1802 +- Add Argo Workflow Admission controller by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/1741 +- purge infracost CLI command / CI jobs by @pmeier in https://github.com/nebari-dev/nebari/pull/1820 +- remove unused function parameters and CLI flags by @pmeier in https://github.com/nebari-dev/nebari/pull/1725 +- purge docs and nox by @pmeier in https://github.com/nebari-dev/nebari/pull/1801 +- Add Helm chart lint tool by @viniciusdc in https://github.com/nebari-dev/nebari/pull/1679 +- don't set /etc/hosts in CI by @pmeier in https://github.com/nebari-dev/nebari/pull/1729 +- remove execute permissions on templates by @pmeier in https://github.com/nebari-dev/nebari/pull/1798 +- fix deprecated file deletion by @pmeier in https://github.com/nebari-dev/nebari/pull/1799 +- make nebari API private by @pmeier in https://github.com/nebari-dev/nebari/pull/1778 +- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/nebari-dev/nebari/pull/1831 +- Simplify CI by @iameskild in https://github.com/nebari-dev/nebari/pull/1819 +- Fix edge-case where k8s_version is equal to HIGHEST_SUPPORTED_K8S_VER… by @iameskild in https://github.com/nebari-dev/nebari/pull/1842 +- add more configuration to enable private clusters on AWS by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/1841 +- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/nebari-dev/nebari/pull/1851 +- AWS gov cloud support by @sblair-metrostar in https://github.com/nebari-dev/nebari/pull/1857 +- Pathlib everywhere by @pmeier in https://github.com/nebari-dev/nebari/pull/1773 +- Initial playwright setup by @kcpevey in https://github.com/nebari-dev/nebari/pull/1665 +- Changes required for Jupyter-Scheduler integration by @iameskild in https://github.com/nebari-dev/nebari/pull/1832 +- Update upgrade command in preparation for release by @iameskild in https://github.com/nebari-dev/nebari/pull/1868 +- Add release notes by @iameskild in https://github.com/nebari-dev/nebari/issues/1869 ### New Contributors -* @sblair-metrostar made their first contribution in https://github.com/nebari-dev/nebari/pull/1857 -**Full Changelog**: https://github.com/nebari-dev/nebari/compare/2023.5.1...2023.7.1 +- @sblair-metrostar made their first contribution in https://github.com/nebari-dev/nebari/pull/1857 +**Full Changelog**: https://github.com/nebari-dev/nebari/compare/2023.5.1...2023.7.1 ### Release 2023.5.1 - May 5, 2023 ### Feature changes and enhancements -* Upgrade Argo-Workflows to version 3.4.4 +- Upgrade Argo-Workflows to version 3.4.4 ### Breaking Changes -* The Argo-Workflows version upgrade will result in a breaking change if the existing Kubernetes CRDs are not deleted (see the NOTE below for more details). -* There is a minor breaking change for the Nebari CLI version shorthand, previously it `nebari -v` and now to align with Python convention, it will be `nebari -V`. +- The Argo-Workflows version upgrade will result in a breaking change if the existing Kubernetes CRDs are not deleted (see the NOTE below for more details). +- There is a minor breaking change for the Nebari CLI version shorthand, previously it `nebari -v` and now to align with Python convention, it will be `nebari -V`. > NOTE: After installing the Nebari version `2023.5.1`, please run `nebari upgrade -c nebari-config.yaml` to upgrade > the `nebari-config.yaml`. This command will also prompt you to delete a few Kubernetes resources (specifically > the Argo-Workflows CRDS and service accounts) before you can upgrade. ### What's Changed -* Use --quiet flag for conda install in CI by @pmeier in https://github.com/nebari-dev/nebari/pull/1699 -* improve CLI tests by @pmeier in https://github.com/nebari-dev/nebari/pull/1710 -* Fix Existing dashboards by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/1723 -* Fix dashboards by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/1727 -* Typo in the conda-store <-> conda_store key by @costrouc in https://github.com/nebari-dev/nebari/pull/1740 -* use -V (upper case) for --version short form by @pmeier in https://github.com/nebari-dev/nebari/pull/1720 -* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/nebari-dev/nebari/pull/1692 -* improve pytest configuration by @pmeier in https://github.com/nebari-dev/nebari/pull/1700 -* fix upgrade command to look for nebari_version instead of qhub_version by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/1693 -* remove lazy import by @pmeier in https://github.com/nebari-dev/nebari/pull/1721 -* fix nebari invocation through python by @pmeier in https://github.com/nebari-dev/nebari/pull/1711 -* Update Argo Workflows to latest version by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/1639 -* Update secret token in release-notes-sync action by @pavithraes in https://github.com/nebari-dev/nebari/pull/1753 -* Typo fix in release-notes-sync action by @pavithraes in https://github.com/nebari-dev/nebari/pull/1756 -* πŸ”„ Synced file(s) with nebari-dev/.github by @nebari-sensei in https://github.com/nebari-dev/nebari/pull/1758 -* Update path in release-notes-sync action by @pavithraes in https://github.com/nebari-dev/nebari/pull/1757 -* Updating heading format in release notes by @pavithraes in https://github.com/nebari-dev/nebari/pull/1761 -* Update vault url by @costrouc in https://github.com/nebari-dev/nebari/pull/1752 -* Fix? contributor test trigger by @pmeier in https://github.com/nebari-dev/nebari/pull/1734 -* Consistent user Experience with y/N. by @AM-O7 in https://github.com/nebari-dev/nebari/pull/1747 -* Fix contributor trigger by @pmeier in https://github.com/nebari-dev/nebari/pull/1765 -* add more debug output to contributor test trigger by @pmeier in https://github.com/nebari-dev/nebari/pull/1766 -* fix copy-paste error by @pmeier in https://github.com/nebari-dev/nebari/pull/1767 -* add instructions insufficient permissions of contributor trigger by @pmeier in https://github.com/nebari-dev/nebari/pull/1772 -* fix invalid escape sequence by @pmeier in https://github.com/nebari-dev/nebari/pull/1770 -* Update AMI in `.cirun.yml` for nebari-dev-ci AWS account by @aktech in https://github.com/nebari-dev/nebari/pull/1776 -* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/nebari-dev/nebari/pull/1768 -* turn warnings into errors with pytest by @pmeier in https://github.com/nebari-dev/nebari/pull/1774 -* purge setup.cfg by @pmeier in https://github.com/nebari-dev/nebari/pull/1781 -* improve pre-commit run on GHA by @pmeier in https://github.com/nebari-dev/nebari/pull/1782 -* Upgrade to k8s 1.24 by @iameskild in https://github.com/nebari-dev/nebari/pull/1760 -* Overloaded dask gateway fix by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/1777 -* Add option to specify GKE release channel by @iameskild in https://github.com/nebari-dev/nebari/pull/1648 -* Update upgrade command, add RELEASE notes by @iameskild in https://github.com/nebari-dev/nebari/pull/1789 + +- Use --quiet flag for conda install in CI by @pmeier in https://github.com/nebari-dev/nebari/pull/1699 +- improve CLI tests by @pmeier in https://github.com/nebari-dev/nebari/pull/1710 +- Fix Existing dashboards by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/1723 +- Fix dashboards by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/1727 +- Typo in the conda-store <-> conda_store key by @costrouc in https://github.com/nebari-dev/nebari/pull/1740 +- use -V (upper case) for --version short form by @pmeier in https://github.com/nebari-dev/nebari/pull/1720 +- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/nebari-dev/nebari/pull/1692 +- improve pytest configuration by @pmeier in https://github.com/nebari-dev/nebari/pull/1700 +- fix upgrade command to look for nebari_version instead of qhub_version by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/1693 +- remove lazy import by @pmeier in https://github.com/nebari-dev/nebari/pull/1721 +- fix nebari invocation through python by @pmeier in https://github.com/nebari-dev/nebari/pull/1711 +- Update Argo Workflows to latest version by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/1639 +- Update secret token in release-notes-sync action by @pavithraes in https://github.com/nebari-dev/nebari/pull/1753 +- Typo fix in release-notes-sync action by @pavithraes in https://github.com/nebari-dev/nebari/pull/1756 +- πŸ”„ Synced file(s) with nebari-dev/.github by @nebari-sensei in https://github.com/nebari-dev/nebari/pull/1758 +- Update path in release-notes-sync action by @pavithraes in https://github.com/nebari-dev/nebari/pull/1757 +- Updating heading format in release notes by @pavithraes in https://github.com/nebari-dev/nebari/pull/1761 +- Update vault url by @costrouc in https://github.com/nebari-dev/nebari/pull/1752 +- Fix? contributor test trigger by @pmeier in https://github.com/nebari-dev/nebari/pull/1734 +- Consistent user Experience with y/N. by @AM-O7 in https://github.com/nebari-dev/nebari/pull/1747 +- Fix contributor trigger by @pmeier in https://github.com/nebari-dev/nebari/pull/1765 +- add more debug output to contributor test trigger by @pmeier in https://github.com/nebari-dev/nebari/pull/1766 +- fix copy-paste error by @pmeier in https://github.com/nebari-dev/nebari/pull/1767 +- add instructions insufficient permissions of contributor trigger by @pmeier in https://github.com/nebari-dev/nebari/pull/1772 +- fix invalid escape sequence by @pmeier in https://github.com/nebari-dev/nebari/pull/1770 +- Update AMI in `.cirun.yml` for nebari-dev-ci AWS account by @aktech in https://github.com/nebari-dev/nebari/pull/1776 +- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/nebari-dev/nebari/pull/1768 +- turn warnings into errors with pytest by @pmeier in https://github.com/nebari-dev/nebari/pull/1774 +- purge setup.cfg by @pmeier in https://github.com/nebari-dev/nebari/pull/1781 +- improve pre-commit run on GHA by @pmeier in https://github.com/nebari-dev/nebari/pull/1782 +- Upgrade to k8s 1.24 by @iameskild in https://github.com/nebari-dev/nebari/pull/1760 +- Overloaded dask gateway fix by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/1777 +- Add option to specify GKE release channel by @iameskild in https://github.com/nebari-dev/nebari/pull/1648 +- Update upgrade command, add RELEASE notes by @iameskild in https://github.com/nebari-dev/nebari/pull/1789 ### New Contributors -* @pmeier made their first contribution in https://github.com/nebari-dev/nebari/pull/1699 -* @AM-O7 made their first contribution in https://github.com/nebari-dev/nebari/pull/1747 -**Full Changelog**: https://github.com/nebari-dev/nebari/compare/2023.4.1...2023.5.1 +- @pmeier made their first contribution in https://github.com/nebari-dev/nebari/pull/1699 +- @AM-O7 made their first contribution in https://github.com/nebari-dev/nebari/pull/1747 +**Full Changelog**: https://github.com/nebari-dev/nebari/compare/2023.4.1...2023.5.1 ## Release 2023.4.1 - April 12, 2023 > NOTE: Nebari requires Kubernetes version 1.23 and Digital Ocean now requires new clusters to run Kubernetes version 1.24. This means that if you are currently running on Digital Ocean, you should be fine but deploying on a new cluster on Digital Ocean is not possible until we upgrade Kubernetes version (see [issue 1622](https://github.com/nebari-dev/nebari/issues/1622) for more details). - ### Feature changes and enhancements -* Upgrades and improvements to conda-store including a new user-interface and greater administrator capabilities. -* Idle-culler settings can now be configured directly from the `nebari-config.yaml`. - +- Upgrades and improvements to conda-store including a new user-interface and greater administrator capabilities. +- Idle-culler settings can now be configured directly from the `nebari-config.yaml`. ### What's Changed -* PR: Raise timeout for jupyter session by @ppwadhwa in https://github.com/nebari-dev/nebari/pull/1646 -* PR lower dashboard launch timeout by @ppwadhwa in https://github.com/nebari-dev/nebari/pull/1647 -* PR: Update dashboard environment by @ppwadhwa in https://github.com/nebari-dev/nebari/pull/1655 -* Fix doc link in README.md by @tkoyama010 in https://github.com/nebari-dev/nebari/pull/1660 -* PR: Update dask environment by @ppwadhwa in https://github.com/nebari-dev/nebari/pull/1654 -* Feature remove jupyterlab news by @costrouc in https://github.com/nebari-dev/nebari/pull/1641 -* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/nebari-dev/nebari/pull/1644 -* Feat GitHub actions before_script and after_script steps by @costrouc in https://github.com/nebari-dev/nebari/pull/1672 -* Remove examples folder by @ppwadhwa in https://github.com/nebari-dev/nebari/pull/1664 -* Fix GH action typos by @kcpevey in https://github.com/nebari-dev/nebari/pull/1677 -* Github Actions CI needs id-token write permissions by @costrouc in https://github.com/nebari-dev/nebari/pull/1682 -* Update AWS force destroy script, include lingering volumes by @iameskild in https://github.com/nebari-dev/nebari/pull/1681 -* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/nebari-dev/nebari/pull/1673 -* Make idle culler settings configurable from the `nebari-config.yaml` by @iameskild in https://github.com/nebari-dev/nebari/pull/1689 -* Update pyproject dependencies and add test to ensure it builds on conda-forge by @iameskild in https://github.com/nebari-dev/nebari/pull/1662 -* Retrieve secrets from Vault, fix test-provider CI by @iameskild in https://github.com/nebari-dev/nebari/pull/1676 -* Pull PyPI secrets from Vault by @iameskild in https://github.com/nebari-dev/nebari/pull/1696 -* Adding newest conda-store 0.4.14 along with superadmin credentials by @costrouc in https://github.com/nebari-dev/nebari/pull/1701 -* Update release notes for 2023.4.1 by @iameskild in https://github.com/nebari-dev/nebari/pull/1722 + +- PR: Raise timeout for jupyter session by @ppwadhwa in https://github.com/nebari-dev/nebari/pull/1646 +- PR lower dashboard launch timeout by @ppwadhwa in https://github.com/nebari-dev/nebari/pull/1647 +- PR: Update dashboard environment by @ppwadhwa in https://github.com/nebari-dev/nebari/pull/1655 +- Fix doc link in README.md by @tkoyama010 in https://github.com/nebari-dev/nebari/pull/1660 +- PR: Update dask environment by @ppwadhwa in https://github.com/nebari-dev/nebari/pull/1654 +- Feature remove jupyterlab news by @costrouc in https://github.com/nebari-dev/nebari/pull/1641 +- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/nebari-dev/nebari/pull/1644 +- Feat GitHub actions before_script and after_script steps by @costrouc in https://github.com/nebari-dev/nebari/pull/1672 +- Remove examples folder by @ppwadhwa in https://github.com/nebari-dev/nebari/pull/1664 +- Fix GH action typos by @kcpevey in https://github.com/nebari-dev/nebari/pull/1677 +- Github Actions CI needs id-token write permissions by @costrouc in https://github.com/nebari-dev/nebari/pull/1682 +- Update AWS force destroy script, include lingering volumes by @iameskild in https://github.com/nebari-dev/nebari/pull/1681 +- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/nebari-dev/nebari/pull/1673 +- Make idle culler settings configurable from the `nebari-config.yaml` by @iameskild in https://github.com/nebari-dev/nebari/pull/1689 +- Update pyproject dependencies and add test to ensure it builds on conda-forge by @iameskild in https://github.com/nebari-dev/nebari/pull/1662 +- Retrieve secrets from Vault, fix test-provider CI by @iameskild in https://github.com/nebari-dev/nebari/pull/1676 +- Pull PyPI secrets from Vault by @iameskild in https://github.com/nebari-dev/nebari/pull/1696 +- Adding newest conda-store 0.4.14 along with superadmin credentials by @costrouc in https://github.com/nebari-dev/nebari/pull/1701 +- Update release notes for 2023.4.1 by @iameskild in https://github.com/nebari-dev/nebari/pull/1722 ### New Contributors -* @ppwadhwa made their first contribution in https://github.com/nebari-dev/nebari/pull/1646 -* @tkoyama010 made their first contribution in https://github.com/nebari-dev/nebari/pull/1660 + +- @ppwadhwa made their first contribution in https://github.com/nebari-dev/nebari/pull/1646 +- @tkoyama010 made their first contribution in https://github.com/nebari-dev/nebari/pull/1660 **Full Changelog**: https://github.com/nebari-dev/nebari/compare/2023.1.1...2023.4.1 ## Release 2023.1.1 - January 30, 2023 ### What's Changed -* πŸ”„ Synced file(s) with nebari-dev/.github by @nebari-sensei in https://github.com/nebari-dev/nebari/pull/1588 -* Make conda-store file system read-only by default by @alimanfoo in https://github.com/nebari-dev/nebari/pull/1595 -* ENH - Switch to ruff and pre-commit.ci by @trallard in https://github.com/nebari-dev/nebari/pull/1602 -* Migrate to hatch by @iameskild in https://github.com/nebari-dev/nebari/pull/1545 -* Add check_repository_cred function to CLI by @iameskild in https://github.com/nebari-dev/nebari/pull/1605 -* Adding jupyterlab-conda-store extension support to Nebari by @costrouc in https://github.com/nebari-dev/nebari/pull/1564 -* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/nebari-dev/nebari/pull/1613 -* Ensure Argo-Workflow controller containerRuntimeExecutor is set to emissary by @iameskild in https://github.com/nebari-dev/nebari/pull/1614 -* Pass `secret_name` to TF scripts when certificate type = existing by @iameskild in https://github.com/nebari-dev/nebari/pull/1621 -* Pin Nebari dependencies, set k8s version for GKE by @iameskild in https://github.com/nebari-dev/nebari/pull/1624 -* Create aws-force-destroy bash script by @iameskild in https://github.com/nebari-dev/nebari/pull/1611 -* Add option for AWS node-groups to run in a single subnet/AZ by @iameskild in https://github.com/nebari-dev/nebari/pull/1428 -* Add export-users to keycloak CLI command, add dev CLI command by @iameskild in https://github.com/nebari-dev/nebari/pull/1610 -* Unpin packages in default dashboard env by @iameskild in https://github.com/nebari-dev/pull/1628 -* Add release notes for 2023.1.1 by @iameskild in https://github.com/nebari-dev/nebari/pull/1629 -* Set GKE release_channel to unspecified to prevent auto k8s updates by @iameskild in https://github.com/nebari-dev/nebari/pull/1630 -* Update default nebari-dask, nebari image tags by @iameskild in https://github.com/nebari-dev/nebari/pull/1636 + +- πŸ”„ Synced file(s) with nebari-dev/.github by @nebari-sensei in https://github.com/nebari-dev/nebari/pull/1588 +- Make conda-store file system read-only by default by @alimanfoo in https://github.com/nebari-dev/nebari/pull/1595 +- ENH - Switch to ruff and pre-commit.ci by @trallard in https://github.com/nebari-dev/nebari/pull/1602 +- Migrate to hatch by @iameskild in https://github.com/nebari-dev/nebari/pull/1545 +- Add check_repository_cred function to CLI by @iameskild in https://github.com/nebari-dev/nebari/pull/1605 +- Adding jupyterlab-conda-store extension support to Nebari by @costrouc in https://github.com/nebari-dev/nebari/pull/1564 +- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/nebari-dev/nebari/pull/1613 +- Ensure Argo-Workflow controller containerRuntimeExecutor is set to emissary by @iameskild in https://github.com/nebari-dev/nebari/pull/1614 +- Pass `secret_name` to TF scripts when certificate type = existing by @iameskild in https://github.com/nebari-dev/nebari/pull/1621 +- Pin Nebari dependencies, set k8s version for GKE by @iameskild in https://github.com/nebari-dev/nebari/pull/1624 +- Create aws-force-destroy bash script by @iameskild in https://github.com/nebari-dev/nebari/pull/1611 +- Add option for AWS node-groups to run in a single subnet/AZ by @iameskild in https://github.com/nebari-dev/nebari/pull/1428 +- Add export-users to keycloak CLI command, add dev CLI command by @iameskild in https://github.com/nebari-dev/nebari/pull/1610 +- Unpin packages in default dashboard env by @iameskild in https://github.com/nebari-dev/pull/1628 +- Add release notes for 2023.1.1 by @iameskild in https://github.com/nebari-dev/nebari/pull/1629 +- Set GKE release_channel to unspecified to prevent auto k8s updates by @iameskild in https://github.com/nebari-dev/nebari/pull/1630 +- Update default nebari-dask, nebari image tags by @iameskild in https://github.com/nebari-dev/nebari/pull/1636 ### New Contributors -* @pre-commit-ci made their first contribution in https://github.com/nebari-dev/nebari/pull/1613 +- @pre-commit-ci made their first contribution in https://github.com/nebari-dev/nebari/pull/1613 ## Release 2022.11.1 - December 1, 2022 ### What's Changed -* cherry-pick Update README logo (#1514) by @aktech in https://github.com/nebari-dev/nebari/pull/1517 -* Release/2022.10.1 by @iameskild in https://github.com/nebari-dev/nebari/pull/1527 -* Add Note about QHub->Nebari rename in old docs by @pavithraes in https://github.com/nebari-dev/nebari/pull/1543 -* πŸ”„ Synced file(s) with nebari-dev/.github by @nebari-sensei in https://github.com/nebari-dev/nebari/pull/1550 -* πŸ”„ Synced file(s) with nebari-dev/.github by @nebari-sensei in https://github.com/nebari-dev/nebari/pull/1551 -* πŸ”„ Synced file(s) with nebari-dev/.github by @nebari-sensei in https://github.com/nebari-dev/nebari/pull/1555 -* πŸ”„ Synced file(s) with nebari-dev/.github by @nebari-sensei in https://github.com/nebari-dev/nebari/pull/1560 -* Small CLI fixes by @iameskild in https://github.com/nebari-dev/nebari/pull/1529 -* πŸ”„ Synced file(s) with nebari-dev/.github by @nebari-sensei in https://github.com/nebari-dev/nebari/pull/1561 -* Render github actions configurations as yaml by @aktech in https://github.com/nebari-dev/nebari/pull/1528 -* Update "QHub" to "Nebari" in example notebooks by @pavithraes in https://github.com/nebari-dev/nebari/pull/1556 -* Update links to Nebari docs in guided init by @pavithraes in https://github.com/nebari-dev/nebari/pull/1557 -* CI: Spinup unique cirun runners for each job by @aktech in https://github.com/nebari-dev/nebari/pull/1563 -* Issue-1417: Improve Dask workers placement on AWS | fixing a minor typo by @limacarvalho in https://github.com/nebari-dev/nebari/pull/1487 -* Update `setup-node` version by @iameskild in https://github.com/nebari-dev/nebari/pull/1570 -* Facilitate CI run for contributor PR by @aktech in https://github.com/nebari-dev/nebari/pull/1568 -* Action to sync release notes with nebari-docs by @pavithraes in https://github.com/nebari-dev/nebari/pull/1554 -* Restore how the dask worker node group is selected by default by @iameskild in https://github.com/nebari-dev/nebari/pull/1577 -* Fix skip check for workflows by @aktech in https://github.com/nebari-dev/nebari/pull/1578 -* πŸ“ Update readme by @trallard in https://github.com/nebari-dev/nebari/pull/1579 -* MAINT - Miscellaneous maintenance tasks by @trallard in https://github.com/nebari-dev/nebari/pull/1580 -* Wait for Test PyPI to upload test release by @iameskild in https://github.com/nebari-dev/nebari/pull/1583 -* Add release notes for 2022.11.1 by @iameskild in https://github.com/nebari-dev/nebari/pull/1584 - +- cherry-pick Update README logo (#1514) by @aktech in https://github.com/nebari-dev/nebari/pull/1517 +- Release/2022.10.1 by @iameskild in https://github.com/nebari-dev/nebari/pull/1527 +- Add Note about QHub->Nebari rename in old docs by @pavithraes in https://github.com/nebari-dev/nebari/pull/1543 +- πŸ”„ Synced file(s) with nebari-dev/.github by @nebari-sensei in https://github.com/nebari-dev/nebari/pull/1550 +- πŸ”„ Synced file(s) with nebari-dev/.github by @nebari-sensei in https://github.com/nebari-dev/nebari/pull/1551 +- πŸ”„ Synced file(s) with nebari-dev/.github by @nebari-sensei in https://github.com/nebari-dev/nebari/pull/1555 +- πŸ”„ Synced file(s) with nebari-dev/.github by @nebari-sensei in https://github.com/nebari-dev/nebari/pull/1560 +- Small CLI fixes by @iameskild in https://github.com/nebari-dev/nebari/pull/1529 +- πŸ”„ Synced file(s) with nebari-dev/.github by @nebari-sensei in https://github.com/nebari-dev/nebari/pull/1561 +- Render github actions configurations as yaml by @aktech in https://github.com/nebari-dev/nebari/pull/1528 +- Update "QHub" to "Nebari" in example notebooks by @pavithraes in https://github.com/nebari-dev/nebari/pull/1556 +- Update links to Nebari docs in guided init by @pavithraes in https://github.com/nebari-dev/nebari/pull/1557 +- CI: Spinup unique cirun runners for each job by @aktech in https://github.com/nebari-dev/nebari/pull/1563 +- Issue-1417: Improve Dask workers placement on AWS | fixing a minor typo by @limacarvalho in https://github.com/nebari-dev/nebari/pull/1487 +- Update `setup-node` version by @iameskild in https://github.com/nebari-dev/nebari/pull/1570 +- Facilitate CI run for contributor PR by @aktech in https://github.com/nebari-dev/nebari/pull/1568 +- Action to sync release notes with nebari-docs by @pavithraes in https://github.com/nebari-dev/nebari/pull/1554 +- Restore how the dask worker node group is selected by default by @iameskild in https://github.com/nebari-dev/nebari/pull/1577 +- Fix skip check for workflows by @aktech in https://github.com/nebari-dev/nebari/pull/1578 +- πŸ“ Update readme by @trallard in https://github.com/nebari-dev/nebari/pull/1579 +- MAINT - Miscellaneous maintenance tasks by @trallard in https://github.com/nebari-dev/nebari/pull/1580 +- Wait for Test PyPI to upload test release by @iameskild in https://github.com/nebari-dev/nebari/pull/1583 +- Add release notes for 2022.11.1 by @iameskild in https://github.com/nebari-dev/nebari/pull/1584 ### New Contributors -* @nebari-sensei made their first contribution in https://github.com/nebari-dev/nebari/pull/1550 -* @limacarvalho made their first contribution in https://github.com/nebari-dev/nebari/pull/1487 +- @nebari-sensei made their first contribution in https://github.com/nebari-dev/nebari/pull/1550 +- @limacarvalho made their first contribution in https://github.com/nebari-dev/nebari/pull/1487 ## Release 2022.10.1 - October 28, 2022 @@ -659,33 +665,34 @@ This is a hot-fix release that resolves an issue whereby users in the `analyst` > The project has recently been renamed from QHub to Nebari. If your deployment is is still managed by `qhub`, performing an inplace upgrade will **IRREVOCABLY BREAK** your deployment. This will cause you to lose any data stored on the platform, including but not limited to, NFS (filesystem) data, conda-store environments, Keycloak users and groups, etc. Please [backup](https://www.nebari.dev/docs/how-tos/manual-backup) your data before attempting an upgrade. - ### Feature changes and enhancements We are happy to announce the first official release of Nebari (formly QHub)! This release lays the groundwork for many exciting new features and improvements to come. This release introduces several important changes which include: + - a major project name change from QHub to Nebari - [PR 1508](https://github.com/nebari-dev/nebari/pull/1508) - a switch from the SemVer to CalVer versioning format - [PR 1501](https://github.com/nebari-dev/nebari/pull/1501) - a new, Typer-based CLI for improved user experience - [PR 1443](https://github.com/Quansight/qhub/pull/1443) + [PR 1519](https://github.com/nebari-dev/nebari/pull/1519) Although breaking changes are never fun, the Nebari development team believes these changes are important for the immediate and future success of the project. If you experience any issues or have any questions about these changes, feel free to open an [issue on our Github repo](https://github.com/nebari-dev/nebari/issues). - ### What's Changed -* Switch to CalVer by @iameskild in https://github.com/nebari-dev/nebari/pull/1501 -* Update theme welcome messages to use Nebari by @pavithraes in https://github.com/nebari-dev/nebari/pull/1503 -* Name change QHub --> Nebari by @iameskild in https://github.com/nebari-dev/nebari/pull/1508 -* qhub/initialize: lazy load attributes that require remote information by @FFY00 in https://github.com/nebari-dev/nebari/pull/1509 -* Update README logo reference by @viniciusdc in https://github.com/nebari-dev/nebari/pull/1514 -* Add fix, enhancements and pytests for CLI by @iameskild in https://github.com/nebari-dev/nebari/pull/1498 -* Remove old CLI + cleanup by @iameskild in https://github.com/nebari-dev/nebari/pull/1519 -* Update `skip_remote_state_provision` default value by @viniciusdc in https://github.com/nebari-dev/nebari/pull/1521 -* Add release notes for 2022.10.1 in https://github.com/nebari-dev/nebari/pull/1523 + +- Switch to CalVer by @iameskild in https://github.com/nebari-dev/nebari/pull/1501 +- Update theme welcome messages to use Nebari by @pavithraes in https://github.com/nebari-dev/nebari/pull/1503 +- Name change QHub --> Nebari by @iameskild in https://github.com/nebari-dev/nebari/pull/1508 +- qhub/initialize: lazy load attributes that require remote information by @FFY00 in https://github.com/nebari-dev/nebari/pull/1509 +- Update README logo reference by @viniciusdc in https://github.com/nebari-dev/nebari/pull/1514 +- Add fix, enhancements and pytests for CLI by @iameskild in https://github.com/nebari-dev/nebari/pull/1498 +- Remove old CLI + cleanup by @iameskild in https://github.com/nebari-dev/nebari/pull/1519 +- Update `skip_remote_state_provision` default value by @viniciusdc in https://github.com/nebari-dev/nebari/pull/1521 +- Add release notes for 2022.10.1 in https://github.com/nebari-dev/nebari/pull/1523 ### New Contributors -* @pavithraes made their first contribution in https://github.com/nebari-dev/nebari/pull/1503 -* @FFY00 made their first contribution in https://github.com/nebari-dev/nebari/pull/1509 + +- @pavithraes made their first contribution in https://github.com/nebari-dev/nebari/pull/1503 +- @FFY00 made their first contribution in https://github.com/nebari-dev/nebari/pull/1509 **Note: The following releases (v0.4.5 and lower) were made under the name `Quansight/qhub`.** @@ -701,17 +708,19 @@ Enhancements for this release include: - Updated Traefik version to support the latest Kubernetes API ### What's Changed -* Update azurerm version by @tjcrone in https://github.com/Quansight/qhub/pull/1471 -* Make CDSDashboards.conda_envs dynamically update from function by @costrouc in https://github.com/Quansight/qhub/pull/1358 -* Fix get_latest_repo_tag fn by @iameskild in https://github.com/Quansight/qhub/pull/1485 -* Nebari Typer CLI by @asmijafar20 in https://github.com/Quansight/qhub/pull/1443 -* Pass AWS `region`, `kubernetes_version` to terraform scripts by @iameskild in https://github.com/Quansight/qhub/pull/1493 -* Enable ebs-csi driver on AWS, add region + kubernetes_version vars by @iameskild in https://github.com/Quansight/qhub/pull/1494 -* Update traefik version + CRD by @iameskild in https://github.com/Quansight/qhub/pull/1489 -* [ENH] Switch default and filesystem name envs by @viniciusdc in https://github.com/Quansight/qhub/pull/1357 + +- Update azurerm version by @tjcrone in https://github.com/Quansight/qhub/pull/1471 +- Make CDSDashboards.conda_envs dynamically update from function by @costrouc in https://github.com/Quansight/qhub/pull/1358 +- Fix get_latest_repo_tag fn by @iameskild in https://github.com/Quansight/qhub/pull/1485 +- Nebari Typer CLI by @asmijafar20 in https://github.com/Quansight/qhub/pull/1443 +- Pass AWS `region`, `kubernetes_version` to terraform scripts by @iameskild in https://github.com/Quansight/qhub/pull/1493 +- Enable ebs-csi driver on AWS, add region + kubernetes_version vars by @iameskild in https://github.com/Quansight/qhub/pull/1494 +- Update traefik version + CRD by @iameskild in https://github.com/Quansight/qhub/pull/1489 +- [ENH] Switch default and filesystem name envs by @viniciusdc in https://github.com/Quansight/qhub/pull/1357 ### New Contributors -* @tjcrone made their first contribution in https://github.com/Quansight/qhub/pull/1471 + +- @tjcrone made their first contribution in https://github.com/Quansight/qhub/pull/1471 ### Migration note @@ -723,6 +732,7 @@ to be compatible with the new Nebari version. This is a one-time migration step ### Feature changes and enhancements Enhancements for this release include: + - Bump `conda-store` version to `v0.4.11` and enable overrides - Fully decouple the JupyterLab, JupyterHub and Dask-Worker images from the main codebase - See https://github.com/nebari-dev/nebari-docker-images for images @@ -732,94 +742,97 @@ Enhancements for this release include: - Add support for Kubernetes Kind (local) ### What's Changed -* Add support for terraform binary download for M1 by @aktech in https://github.com/Quansight/qhub/pull/1370 -* Improvements in the QHub Cost estimate tool by @HarshCasper in https://github.com/Quansight/qhub/pull/1365 -* Add Python-3.10 by @HarshCasper in https://github.com/Quansight/qhub/pull/1352 -* Add backwards compatibility item to test checklist by @viniciusdc in https://github.com/Quansight/qhub/pull/1381 -* add code server version to fix build by @HarshCasper in https://github.com/Quansight/qhub/pull/1383 -* Update Cirun.io config to use labels by @aktech in https://github.com/Quansight/qhub/pull/1379 -* Decouple docker images by @iameskild in https://github.com/Quansight/qhub/pull/1371 -* Set LATEST_SUPPORTED_PYTHON_VERSION as str by @iameskild in https://github.com/Quansight/qhub/pull/1387 -* Integrate kind into local deployment to no longer require minikube for development by @costrouc in https://github.com/Quansight/qhub/pull/1171 -* Upgrade conda-store to 0.4.7 allow for customization by @costrouc in https://github.com/Quansight/qhub/pull/1385 -* [ENH] Bump conda-store to v0.4.9 by @viniciusdc in https://github.com/Quansight/qhub/pull/1392 -* [ENH] Add `pyarrow` and `s3fs` by @viniciusdc in https://github.com/Quansight/qhub/pull/1393 -* Fixing bug in authentication method in Conda-Store authentication by @costrouc in https://github.com/Quansight/qhub/pull/1396 -* CI: Merge test and release to PyPi workflows into one by @HarshCasper in https://github.com/Quansight/qhub/pull/1386 -* Update packages in the dashboard env by @iameskild in https://github.com/Quansight/qhub/pull/1402 -* BUG: Setting behind proxy setting in conda-store to be aware of http vs. https by @costrouc in https://github.com/Quansight/qhub/pull/1404 -* Minor update to release workflow by @iameskild in https://github.com/Quansight/qhub/pull/1406 -* Clean up release workflow by @iameskild in https://github.com/Quansight/qhub/pull/1407 -* Add release notes for v0.4.4 by @iameskild in https://github.com/Quansight/qhub/pull/1408 -* Update Ingress overrides behaviour by @viniciusdc in https://github.com/Quansight/qhub/pull/1420 -* Preserve conda-store image permissions by @iameskild in https://github.com/Quansight/qhub/pull/1419 -* Add project name to jhub helm chart release name by @iameskild in https://github.com/Quansight/qhub/pull/1422 -* Fix for helm extension overrides data type issue by @konkapv in https://github.com/Quansight/qhub/pull/1424 -* Add option to disable tls certificate by @iameskild in https://github.com/Quansight/qhub/pull/1421 -* Fixing provider=existing for local/existing by @costrouc in https://github.com/Quansight/qhub/pull/1425 -* Update release, testing checklist by @iameskild in https://github.com/Quansight/qhub/pull/1397 -* Add `--disable-checks` flag to deploy by @iameskild in https://github.com/Quansight/qhub/pull/1429 -* Adding option to supply additional arguments to ingress via `ingress.terraform_overrides.additional-arguments` by @costrouc in https://github.com/Quansight/qhub/pull/1431 -* Add properties to middleware crd headers by @iameskild in https://github.com/Quansight/qhub/pull/1434 -* Restart conda-store worker when new conda env is added to config.yaml by @iameskild in https://github.com/Quansight/qhub/pull/1437 -* Pin dask ipywidgets version to `7.7.1` by @viniciusdc in https://github.com/Quansight/qhub/pull/1442 -* Set qhub-dask version to 0.4.4 by @iameskild in https://github.com/Quansight/qhub/pull/1470 + +- Add support for terraform binary download for M1 by @aktech in https://github.com/Quansight/qhub/pull/1370 +- Improvements in the QHub Cost estimate tool by @HarshCasper in https://github.com/Quansight/qhub/pull/1365 +- Add Python-3.10 by @HarshCasper in https://github.com/Quansight/qhub/pull/1352 +- Add backwards compatibility item to test checklist by @viniciusdc in https://github.com/Quansight/qhub/pull/1381 +- add code server version to fix build by @HarshCasper in https://github.com/Quansight/qhub/pull/1383 +- Update Cirun.io config to use labels by @aktech in https://github.com/Quansight/qhub/pull/1379 +- Decouple docker images by @iameskild in https://github.com/Quansight/qhub/pull/1371 +- Set LATEST_SUPPORTED_PYTHON_VERSION as str by @iameskild in https://github.com/Quansight/qhub/pull/1387 +- Integrate kind into local deployment to no longer require minikube for development by @costrouc in https://github.com/Quansight/qhub/pull/1171 +- Upgrade conda-store to 0.4.7 allow for customization by @costrouc in https://github.com/Quansight/qhub/pull/1385 +- [ENH] Bump conda-store to v0.4.9 by @viniciusdc in https://github.com/Quansight/qhub/pull/1392 +- [ENH] Add `pyarrow` and `s3fs` by @viniciusdc in https://github.com/Quansight/qhub/pull/1393 +- Fixing bug in authentication method in Conda-Store authentication by @costrouc in https://github.com/Quansight/qhub/pull/1396 +- CI: Merge test and release to PyPi workflows into one by @HarshCasper in https://github.com/Quansight/qhub/pull/1386 +- Update packages in the dashboard env by @iameskild in https://github.com/Quansight/qhub/pull/1402 +- BUG: Setting behind proxy setting in conda-store to be aware of http vs. https by @costrouc in https://github.com/Quansight/qhub/pull/1404 +- Minor update to release workflow by @iameskild in https://github.com/Quansight/qhub/pull/1406 +- Clean up release workflow by @iameskild in https://github.com/Quansight/qhub/pull/1407 +- Add release notes for v0.4.4 by @iameskild in https://github.com/Quansight/qhub/pull/1408 +- Update Ingress overrides behaviour by @viniciusdc in https://github.com/Quansight/qhub/pull/1420 +- Preserve conda-store image permissions by @iameskild in https://github.com/Quansight/qhub/pull/1419 +- Add project name to jhub helm chart release name by @iameskild in https://github.com/Quansight/qhub/pull/1422 +- Fix for helm extension overrides data type issue by @konkapv in https://github.com/Quansight/qhub/pull/1424 +- Add option to disable tls certificate by @iameskild in https://github.com/Quansight/qhub/pull/1421 +- Fixing provider=existing for local/existing by @costrouc in https://github.com/Quansight/qhub/pull/1425 +- Update release, testing checklist by @iameskild in https://github.com/Quansight/qhub/pull/1397 +- Add `--disable-checks` flag to deploy by @iameskild in https://github.com/Quansight/qhub/pull/1429 +- Adding option to supply additional arguments to ingress via `ingress.terraform_overrides.additional-arguments` by @costrouc in https://github.com/Quansight/qhub/pull/1431 +- Add properties to middleware crd headers by @iameskild in https://github.com/Quansight/qhub/pull/1434 +- Restart conda-store worker when new conda env is added to config.yaml by @iameskild in https://github.com/Quansight/qhub/pull/1437 +- Pin dask ipywidgets version to `7.7.1` by @viniciusdc in https://github.com/Quansight/qhub/pull/1442 +- Set qhub-dask version to 0.4.4 by @iameskild in https://github.com/Quansight/qhub/pull/1470 ### New Contributors -* @konkapv made their first contribution in https://github.com/Quansight/qhub/pull/1424 + +- @konkapv made their first contribution in https://github.com/Quansight/qhub/pull/1424 ## Release v0.4.3 - July 7, 2022 ### Feature changes and enhancements Enhancements for this release include: + - Integrating Argo Workflow - Integrating kbatch - Adding `cost-estimate` CLI subcommand (Infracost) - Add `panel-serve` as a CDS dashboard option - Add option to use RetroLab instead of default JupyterLab - ### What's Changed -* Update the login/Keycloak docs page by @gabalafou in https://github.com/Quansight/qhub/pull/1289 -* Add configuration option so myst parser generates anchors for heading… by @costrouc in https://github.com/Quansight/qhub/pull/1299 -* Image scanning by @HarshCasper in https://github.com/Quansight/qhub/pull/1291 -* Fix display version behavior by @viniciusdc in https://github.com/Quansight/qhub/pull/1275 -* [Docs] Add docs about custom Identity providers for Authentication by @viniciusdc in https://github.com/Quansight/qhub/pull/1273 -* Add prefect token var to CI when needed by @viniciusdc in https://github.com/Quansight/qhub/pull/1279 -* ci: prevent image scans on main image builds by @HarshCasper in https://github.com/Quansight/qhub/pull/1300 -* Integrate `kbatch` by @iameskild in https://github.com/Quansight/qhub/pull/1258 -* add `retrolab` to the base jupyter image by @tonyfast in https://github.com/Quansight/qhub/pull/1222 -* Update pre-commit, remove vale by @iameskild in https://github.com/Quansight/qhub/pull/1282 -* Argo Workflows by @Adam-D-Lewis in https://github.com/Quansight/qhub/pull/1252 -* Update minio, postgresql chart repo location by @iameskild in https://github.com/Quansight/qhub/pull/1308 -* Fix broken AWS, set minimum desired size to 1, enable 0 scaling by @tylerpotts in https://github.com/Quansight/qhub/pull/1304 -* v0.4.2 release notes by @iameskild in https://github.com/Quansight/qhub/pull/1323 -* install dask lab ext from main by @iameskild in https://github.com/Quansight/qhub/pull/1321 -* Overrides default value for dask-labextension by @viniciusdc in https://github.com/Quansight/qhub/pull/1327 -* CI: Add Infracost to GHA CI for infra cost tracking by @HarshCasper in https://github.com/Quansight/qhub/pull/1316 -* Add check for highest supported k8s version by @aktech in https://github.com/Quansight/qhub/pull/1336 -* Increase the default instance sizes by @peytondmurray in https://github.com/Quansight/qhub/pull/1338 -* Add panel-serve as a CDS dashboard option by @iameskild in https://github.com/Quansight/qhub/pull/1070 -* Generate QHub Costs via `infracost` by @HarshCasper in https://github.com/Quansight/qhub/pull/1340 -* Add release-checklist issue template by @iameskild in https://github.com/Quansight/qhub/pull/1314 -* Fix missing import: `rich` : broken qhub init with cloud by @aktech in https://github.com/Quansight/qhub/pull/1353 -* Bump qhub-dask version to 0.4.3 by @peytondmurray in https://github.com/Quansight/qhub/pull/1341 -* Remove the need for AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY to be set with Digital Ocean deployment by @costrouc in https://github.com/Quansight/qhub/pull/1344 -* Revert "Remove the need for AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY to be set with Digital Ocean deployment" by @viniciusdc in https://github.com/Quansight/qhub/pull/1355 -* Upgrade kbatch version by @iameskild in https://github.com/Quansight/qhub/pull/1335 -* Drop support for python 3.7 in dask environment by @peytondmurray in https://github.com/Quansight/qhub/pull/1354 -* Add useful terminal utils to jlab image by @dharhas in https://github.com/Quansight/qhub/pull/1361 -* Tweak bashrc by @dharhas in https://github.com/Quansight/qhub/pull/1363 -* Fix bug where vscode extensions are not installing by @viniciusdc in https://github.com/Quansight/qhub/pull/1360 + +- Update the login/Keycloak docs page by @gabalafou in https://github.com/Quansight/qhub/pull/1289 +- Add configuration option so myst parser generates anchors for heading… by @costrouc in https://github.com/Quansight/qhub/pull/1299 +- Image scanning by @HarshCasper in https://github.com/Quansight/qhub/pull/1291 +- Fix display version behavior by @viniciusdc in https://github.com/Quansight/qhub/pull/1275 +- [Docs] Add docs about custom Identity providers for Authentication by @viniciusdc in https://github.com/Quansight/qhub/pull/1273 +- Add prefect token var to CI when needed by @viniciusdc in https://github.com/Quansight/qhub/pull/1279 +- ci: prevent image scans on main image builds by @HarshCasper in https://github.com/Quansight/qhub/pull/1300 +- Integrate `kbatch` by @iameskild in https://github.com/Quansight/qhub/pull/1258 +- add `retrolab` to the base jupyter image by @tonyfast in https://github.com/Quansight/qhub/pull/1222 +- Update pre-commit, remove vale by @iameskild in https://github.com/Quansight/qhub/pull/1282 +- Argo Workflows by @Adam-D-Lewis in https://github.com/Quansight/qhub/pull/1252 +- Update minio, postgresql chart repo location by @iameskild in https://github.com/Quansight/qhub/pull/1308 +- Fix broken AWS, set minimum desired size to 1, enable 0 scaling by @tylerpotts in https://github.com/Quansight/qhub/pull/1304 +- v0.4.2 release notes by @iameskild in https://github.com/Quansight/qhub/pull/1323 +- install dask lab ext from main by @iameskild in https://github.com/Quansight/qhub/pull/1321 +- Overrides default value for dask-labextension by @viniciusdc in https://github.com/Quansight/qhub/pull/1327 +- CI: Add Infracost to GHA CI for infra cost tracking by @HarshCasper in https://github.com/Quansight/qhub/pull/1316 +- Add check for highest supported k8s version by @aktech in https://github.com/Quansight/qhub/pull/1336 +- Increase the default instance sizes by @peytondmurray in https://github.com/Quansight/qhub/pull/1338 +- Add panel-serve as a CDS dashboard option by @iameskild in https://github.com/Quansight/qhub/pull/1070 +- Generate QHub Costs via `infracost` by @HarshCasper in https://github.com/Quansight/qhub/pull/1340 +- Add release-checklist issue template by @iameskild in https://github.com/Quansight/qhub/pull/1314 +- Fix missing import: `rich` : broken qhub init with cloud by @aktech in https://github.com/Quansight/qhub/pull/1353 +- Bump qhub-dask version to 0.4.3 by @peytondmurray in https://github.com/Quansight/qhub/pull/1341 +- Remove the need for AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY to be set with Digital Ocean deployment by @costrouc in https://github.com/Quansight/qhub/pull/1344 +- Revert "Remove the need for AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY to be set with Digital Ocean deployment" by @viniciusdc in https://github.com/Quansight/qhub/pull/1355 +- Upgrade kbatch version by @iameskild in https://github.com/Quansight/qhub/pull/1335 +- Drop support for python 3.7 in dask environment by @peytondmurray in https://github.com/Quansight/qhub/pull/1354 +- Add useful terminal utils to jlab image by @dharhas in https://github.com/Quansight/qhub/pull/1361 +- Tweak bashrc by @dharhas in https://github.com/Quansight/qhub/pull/1363 +- Fix bug where vscode extensions are not installing by @viniciusdc in https://github.com/Quansight/qhub/pull/1360 ### New Contributors -* @gabalafou made their first contribution in https://github.com/Quansight/qhub/pull/1289 -* @peytondmurray made their first contribution in https://github.com/Quansight/qhub/pull/1338 -* @dharhas made their first contribution in https://github.com/Quansight/qhub/pull/1361 -**Full Changelog**: https://github.com/Quansight/qhub/compare/v0.4.1...v0.4.3 +- @gabalafou made their first contribution in https://github.com/Quansight/qhub/pull/1289 +- @peytondmurray made their first contribution in https://github.com/Quansight/qhub/pull/1338 +- @dharhas made their first contribution in https://github.com/Quansight/qhub/pull/1361 +**Full Changelog**: https://github.com/Quansight/qhub/compare/v0.4.1...v0.4.3 ## Release v0.4.2 - June 8, 2022 @@ -846,21 +859,22 @@ Given the impact and severity of this bug, the team has decided to quickly cut a ### Bug fixes This release is a hotfix for the issue summarized in the following: -* [issue 1319](https://github.com/Quansight/qhub/issues/1319) -* [issue 1306](https://github.com/Quansight/qhub/issues/1306) -* [issue 1302](https://github.com/Quansight/qhub/issues/1302) +- [issue 1319](https://github.com/Quansight/qhub/issues/1319) +- [issue 1306](https://github.com/Quansight/qhub/issues/1306) +- [issue 1302](https://github.com/Quansight/qhub/issues/1302) ### What's Changed -* Update minio, postgresql chart repo location by @iameskild in [PR 1308](https://github.com/Quansight/qhub/pull/1308) -* Fix broken AWS, set minimum desired size to 1, enable 0 scaling by @tylerpotts in [PR 1304](https://github.com/Quansight/qhub/issues/1304) +- Update minio, postgresql chart repo location by @iameskild in [PR 1308](https://github.com/Quansight/qhub/pull/1308) +- Fix broken AWS, set minimum desired size to 1, enable 0 scaling by @tylerpotts in [PR 1304](https://github.com/Quansight/qhub/issues/1304) ## Release v0.4.1 - May 10, 2022 ### Feature changes and enhancements Enhancements for this release include: + - Add support for pinning the IP address of the load balancer via terraform overrides - Upgrade to Conda-Store to `v0.3.15` - Add ability to limit JupyterHub profiles based on users/groups @@ -870,55 +884,57 @@ Enhancements for this release include: This release addresses several bugs with a slight emphasis on stabilizing the core services while also improving the end user experience. ### What's Changed -* [BUG] Adding back feature of limiting profiles for users and groups by @costrouc in [PR 1169](https://github.com/Quansight/qhub/pull/1169) -* DOCS: Add release notes for v0.4.0 release by @HarshCasper in [PR 1170](https://github.com/Quansight/qhub/pull/1170) -* Move ipython config within jupyterlab to docker image with more robust jupyterlab ssh tests by @costrouc in [PR 1143](https://github.com/Quansight/qhub/pull/1143) -* Removing custom dask_gateway from qhub and idle_timeout for dask clusters to 30 min by @costrouc in [PR 1151](https://github.com/Quansight/qhub/pull/1151) -* Overrides.json now managed by qhub configmaps instead of inside docker image by @costrouc in [PR 1173](https://github.com/Quansight/qhub/pull/1173) -* Adding examples to QHub jupyterlab by @costrouc in [PR 1176](https://github.com/Quansight/qhub/pull/1176) -* Bump conda-store version to 0.3.12 by @costrouc in [PR 1179](https://github.com/Quansight/qhub/pull/1179) -* Fixing concurrency not being specified in configuration by @costrouc in [PR 1180](https://github.com/Quansight/qhub/pull/1180) -* Adding ipykernel as default to environment along with ensure conda-store restarted on config change by @costrouc in [PR 1181](https://github.com/Quansight/qhub/pull/1181) -* keycloak dev docs by @danlester in [PR 1184](https://github.com/Quansight/qhub/pull/1184) -* Keycloakdev2 by @danlester in [PR 1185](https://github.com/Quansight/qhub/pull/1185) -* Setting minio storage to by default be same as filesystem size for Conda-Store environments by @costrouc in [PR 1188](https://github.com/Quansight/qhub/pull/1188) -* Bump Conda-Store version in Qhub to 0.3.13 by @costrouc in [PR 1189](https://github.com/Quansight/qhub/pull/1189) -* Upgrade mrparkers to 3.7.0 by @danlester in [PR 1183](https://github.com/Quansight/qhub/pull/1183) -* Mdformat tables by @danlester in [PR 1186](https://github.com/Quansight/qhub/pull/1186) -* [ImgBot] Optimize images by @imgbot in [PR 1187](https://github.com/Quansight/qhub/pull/1187) -* Bump conda-store version to 0.3.14 by @costrouc in [PR 1192](https://github.com/Quansight/qhub/pull/1192) -* Allow terraform init to upgrade providers within version specification by @costrouc in [PR 1194](https://github.com/Quansight/qhub/pull/1194) -* Adding missing __init__ files by @costrouc in [PR 1196](https://github.com/Quansight/qhub/pull/1196) -* Release 0.3.15 for Conda-Store by @costrouc in [PR 1205](https://github.com/Quansight/qhub/pull/1205) -* Profilegroups by @danlester in [PR 1203](https://github.com/Quansight/qhub/pull/1203) -* Render `.gitignore`, black py files by @iameskild in [PR 1206](https://github.com/Quansight/qhub/pull/1206) -* Update qhub-dask pinned version by @iameskild in [PR 1224](https://github.com/Quansight/qhub/pull/1224) -* Fix env doc links and add corresponding tests by @aktech in [PR 1216](https://github.com/Quansight/qhub/pull/1216) -* Update conda-store-environment variable `type` by @iameskild in [PR 1213](https://github.com/Quansight/qhub/pull/1213) -* Update release notes - justification for changes in `v0.4.0` by @iameskild in [PR 1178](https://github.com/Quansight/qhub/pull/1178) -* Support for pinning the IP address of the load balancer via terraform overrides by @aktech in [PR 1235](https://github.com/Quansight/qhub/pull/1235) -* Bump moment from 2.29.1 to 2.29.2 in /tests_e2e by @dependabot in [PR 1241](https://github.com/Quansight/qhub/pull/1241) -* Update cdsdashboards to 0.6.1, Voila to 0.3.5 by @danlester in [PR 1240](https://github.com/Quansight/qhub/pull/1240) -* Bump minimist from 1.2.5 to 1.2.6 in /tests_e2e by @dependabot in [PR 1208](https://github.com/Quansight/qhub/pull/1208) -* output check fix by @Adam-D-Lewis in [PR 1244](https://github.com/Quansight/qhub/pull/1244) -* Update panel version to fix jinja2 recent issue by @viniciusdc in [PR 1248](https://github.com/Quansight/qhub/pull/1248) -* Add support for terraform overrides in cloud and VPC deployment for Azure by @aktech in [PR 1253](https://github.com/Quansight/qhub/pull/1253) -* Add test-release workflow by @iameskild in [PR 1245](https://github.com/Quansight/qhub/pull/1245) -* Bump async from 3.2.0 to 3.2.3 in /tests_e2e by @dependabot in [PR 1260](https://github.com/Quansight/qhub/pull/1260) -* [WIP] Add support for VPC deployment for GCP via terraform overrides by @aktech in [PR 1259](https://github.com/Quansight/qhub/pull/1259) -* Update login instructions for training by @iameskild in [PR 1261](https://github.com/Quansight/qhub/pull/1261) -* Add docs for general node upgrade by @iameskild in [PR 1246](https://github.com/Quansight/qhub/pull/1246) -* [ImgBot] Optimize images by @imgbot in [PR 1264](https://github.com/Quansight/qhub/pull/1264) -* Fix project name and domain at None by @pierrotsmnrd in [PR 856](https://github.com/Quansight/qhub/pull/856) -* Adding name convention validator for QHub project name by @viniciusdc in [PR 761](https://github.com/Quansight/qhub/pull/761) -* Minor doc updates by @iameskild in [PR 1268](https://github.com/Quansight/qhub/pull/1268) -* Enable display of Qhub version by @viniciusdc in [PR 1256](https://github.com/Quansight/qhub/pull/1256) -* Fix missing region from AWS provider by @viniciusdc in [PR 1271](https://github.com/Quansight/qhub/pull/1271) -* Re-enable GPU profiles for GCP/AWS by @viniciusdc in [PR 1219](https://github.com/Quansight/qhub/pull/1219) -* Release notes for `v0.4.1` by @iameskild in [PR 1272](https://github.com/Quansight/qhub/pull/1272) + +- [BUG] Adding back feature of limiting profiles for users and groups by @costrouc in [PR 1169](https://github.com/Quansight/qhub/pull/1169) +- DOCS: Add release notes for v0.4.0 release by @HarshCasper in [PR 1170](https://github.com/Quansight/qhub/pull/1170) +- Move ipython config within jupyterlab to docker image with more robust jupyterlab ssh tests by @costrouc in [PR 1143](https://github.com/Quansight/qhub/pull/1143) +- Removing custom dask_gateway from qhub and idle_timeout for dask clusters to 30 min by @costrouc in [PR 1151](https://github.com/Quansight/qhub/pull/1151) +- Overrides.json now managed by qhub configmaps instead of inside docker image by @costrouc in [PR 1173](https://github.com/Quansight/qhub/pull/1173) +- Adding examples to QHub jupyterlab by @costrouc in [PR 1176](https://github.com/Quansight/qhub/pull/1176) +- Bump conda-store version to 0.3.12 by @costrouc in [PR 1179](https://github.com/Quansight/qhub/pull/1179) +- Fixing concurrency not being specified in configuration by @costrouc in [PR 1180](https://github.com/Quansight/qhub/pull/1180) +- Adding ipykernel as default to environment along with ensure conda-store restarted on config change by @costrouc in [PR 1181](https://github.com/Quansight/qhub/pull/1181) +- keycloak dev docs by @danlester in [PR 1184](https://github.com/Quansight/qhub/pull/1184) +- Keycloakdev2 by @danlester in [PR 1185](https://github.com/Quansight/qhub/pull/1185) +- Setting minio storage to by default be same as filesystem size for Conda-Store environments by @costrouc in [PR 1188](https://github.com/Quansight/qhub/pull/1188) +- Bump Conda-Store version in Qhub to 0.3.13 by @costrouc in [PR 1189](https://github.com/Quansight/qhub/pull/1189) +- Upgrade mrparkers to 3.7.0 by @danlester in [PR 1183](https://github.com/Quansight/qhub/pull/1183) +- Mdformat tables by @danlester in [PR 1186](https://github.com/Quansight/qhub/pull/1186) +- [ImgBot] Optimize images by @imgbot in [PR 1187](https://github.com/Quansight/qhub/pull/1187) +- Bump conda-store version to 0.3.14 by @costrouc in [PR 1192](https://github.com/Quansight/qhub/pull/1192) +- Allow terraform init to upgrade providers within version specification by @costrouc in [PR 1194](https://github.com/Quansight/qhub/pull/1194) +- Adding missing **init** files by @costrouc in [PR 1196](https://github.com/Quansight/qhub/pull/1196) +- Release 0.3.15 for Conda-Store by @costrouc in [PR 1205](https://github.com/Quansight/qhub/pull/1205) +- Profilegroups by @danlester in [PR 1203](https://github.com/Quansight/qhub/pull/1203) +- Render `.gitignore`, black py files by @iameskild in [PR 1206](https://github.com/Quansight/qhub/pull/1206) +- Update qhub-dask pinned version by @iameskild in [PR 1224](https://github.com/Quansight/qhub/pull/1224) +- Fix env doc links and add corresponding tests by @aktech in [PR 1216](https://github.com/Quansight/qhub/pull/1216) +- Update conda-store-environment variable `type` by @iameskild in [PR 1213](https://github.com/Quansight/qhub/pull/1213) +- Update release notes - justification for changes in `v0.4.0` by @iameskild in [PR 1178](https://github.com/Quansight/qhub/pull/1178) +- Support for pinning the IP address of the load balancer via terraform overrides by @aktech in [PR 1235](https://github.com/Quansight/qhub/pull/1235) +- Bump moment from 2.29.1 to 2.29.2 in /tests_e2e by @dependabot in [PR 1241](https://github.com/Quansight/qhub/pull/1241) +- Update cdsdashboards to 0.6.1, Voila to 0.3.5 by @danlester in [PR 1240](https://github.com/Quansight/qhub/pull/1240) +- Bump minimist from 1.2.5 to 1.2.6 in /tests_e2e by @dependabot in [PR 1208](https://github.com/Quansight/qhub/pull/1208) +- output check fix by @Adam-D-Lewis in [PR 1244](https://github.com/Quansight/qhub/pull/1244) +- Update panel version to fix jinja2 recent issue by @viniciusdc in [PR 1248](https://github.com/Quansight/qhub/pull/1248) +- Add support for terraform overrides in cloud and VPC deployment for Azure by @aktech in [PR 1253](https://github.com/Quansight/qhub/pull/1253) +- Add test-release workflow by @iameskild in [PR 1245](https://github.com/Quansight/qhub/pull/1245) +- Bump async from 3.2.0 to 3.2.3 in /tests_e2e by @dependabot in [PR 1260](https://github.com/Quansight/qhub/pull/1260) +- [WIP] Add support for VPC deployment for GCP via terraform overrides by @aktech in [PR 1259](https://github.com/Quansight/qhub/pull/1259) +- Update login instructions for training by @iameskild in [PR 1261](https://github.com/Quansight/qhub/pull/1261) +- Add docs for general node upgrade by @iameskild in [PR 1246](https://github.com/Quansight/qhub/pull/1246) +- [ImgBot] Optimize images by @imgbot in [PR 1264](https://github.com/Quansight/qhub/pull/1264) +- Fix project name and domain at None by @pierrotsmnrd in [PR 856](https://github.com/Quansight/qhub/pull/856) +- Adding name convention validator for QHub project name by @viniciusdc in [PR 761](https://github.com/Quansight/qhub/pull/761) +- Minor doc updates by @iameskild in [PR 1268](https://github.com/Quansight/qhub/pull/1268) +- Enable display of Qhub version by @viniciusdc in [PR 1256](https://github.com/Quansight/qhub/pull/1256) +- Fix missing region from AWS provider by @viniciusdc in [PR 1271](https://github.com/Quansight/qhub/pull/1271) +- Re-enable GPU profiles for GCP/AWS by @viniciusdc in [PR 1219](https://github.com/Quansight/qhub/pull/1219) +- Release notes for `v0.4.1` by @iameskild in [PR 1272](https://github.com/Quansight/qhub/pull/1272) ### New Contributors -* @dependabot made their first contribution in [PR 1241](https://github.com/Quansight/qhub/pull/1241) + +- @dependabot made their first contribution in [PR 1241](https://github.com/Quansight/qhub/pull/1241) [**Full Changelog**](https://github.com/Quansight/qhub/compare/v0.4.0...v0.4.1) @@ -936,6 +952,7 @@ There are no breaking changes or API changes. ## Release v0.4.0 - March 17, 2022 **WARNING** + > If you're looking for a stable version of QHub, please consider `v0.3.14`. The `v0.4.0` has many breaking changes and has rough edges that will be resolved in upcoming point releases. We are happy to announce the release of `v0.4.0`! This release lays the groundwork for many exciting new features and improvements in the future, stay tuned. @@ -951,13 +968,13 @@ These design changes were considered important enough that the development team and provide justification for them. - Replace Terraforms resource targeting with staged Terraform deployments. - - *Justification*: using Terraform resource targeting was never an ideal way of handing off outputs from stage to the next and Terraform explicitly warns its users that it's only + - _Justification_: using Terraform resource targeting was never an ideal way of handing off outputs from stage to the next and Terraform explicitly warns its users that it's only intended to be used "for exceptional situations such as recovering from errors or mistakes". - Fully remove `cookiecutter` as a templating mechanism. - - *Justification*: Although `cookiecutter` has its benefits, we were becoming overly reliant on it as a means of rendering various scripts needed for the deployment. Reading through + - _Justification_: Although `cookiecutter` has its benefits, we were becoming overly reliant on it as a means of rendering various scripts needed for the deployment. Reading through Terraform scripts with scattered `cookiecutter` statements was increasing troublesome and a bit intimidating. Our IDEs are also much happier about this change. - Removing users and groups from the `qhub-config.yaml` and replacing user management with Keycloak. - - *Justification*: Up until now, any change to QHub deployment needed to be made in the `qhub-config.yaml` which had the benefit of centralizing any configuration. However it + - _Justification_: Up until now, any change to QHub deployment needed to be made in the `qhub-config.yaml` which had the benefit of centralizing any configuration. However it also potentially limited the kinds of user management tasks while also causing the `qhub-config.yaml` to balloon in size. Another benefit of removing users and groups from the `qhub-config.yaml` that deserves highlighting is that user management no longer requires a full redeployment. @@ -1332,7 +1349,7 @@ Explicit user facing changes: in format `X.Y.Z` 5. Create a git tag pointing to the release branch once fully tested and version numbers are incremented `v` -______________________________________________________________________ +--- ## Release 0.2.3 - February 5, 2021 From 8aac90201d860d4f622bea9de87178271df47966 Mon Sep 17 00:00:00 2001 From: Marcelo Villa Date: Tue, 29 Oct 2024 19:05:15 +0100 Subject: [PATCH 9/9] Fix URLs and character --- docs/docs/references/RELEASE.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/docs/docs/references/RELEASE.md b/docs/docs/references/RELEASE.md index 82282173..7ddea04d 100644 --- a/docs/docs/references/RELEASE.md +++ b/docs/docs/references/RELEASE.md @@ -140,16 +140,16 @@ This file is copied to nebari-dev/nebari-docs using a GitHub Action. --> ### What's Changed -- make userscheduler run on general node group by @Adam-D-Lewis in -- Upgrade to Pydantic V2 by @Adam-D-Lewis in -- Pydantic2 PR fix by @Adam-D-Lewis in -- remove redundant pydantic class, fix bug by @Adam-D-Lewis in -- Update `python-keycloak` version pins constraints by @viniciusdc in -- add HERA_TOKEN env var to user pods by @Adam-D-Lewis in -- fix docs link by @Adam-D-Lewis in -- Update allowed admin groups by @aktech in +- make userscheduler run on general node group by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2415 +- Upgrade to Pydantic V2 by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2348 +- Pydantic2 PR fix by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2421 +- remove redundant pydantic class, fix bug by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2426 +- Update `python-keycloak` version pins constraints by @viniciusdc in https://github.com/nebari-dev/nebari/pull/2435 +- add HERA_TOKEN env var to user pods by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2438 +- fix docs link by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/2443 +- Update allowed admin groups by @aktech in https://github.com/nebari-dev/nebari/pull/2429 -**Full Changelog**: +**Full Changelog**: https://github.com/nebari-dev/nebari/compare/2024.4.1...2024.5.1 ## Release 2024.4.1 - April 20, 2024 @@ -524,7 +524,7 @@ This is a hot-fix release that resolves an issue whereby users in the `analyst` - improve CLI tests by @pmeier in https://github.com/nebari-dev/nebari/pull/1710 - Fix Existing dashboards by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/1723 - Fix dashboards by @Adam-D-Lewis in https://github.com/nebari-dev/nebari/pull/1727 -- Typo in the conda-store <-> conda_store key by @costrouc in https://github.com/nebari-dev/nebari/pull/1740 +- Typo in the conda-store - conda_store key by @costrouc in https://github.com/nebari-dev/nebari/pull/1740 - use -V (upper case) for --version short form by @pmeier in https://github.com/nebari-dev/nebari/pull/1720 - [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/nebari-dev/nebari/pull/1692 - improve pytest configuration by @pmeier in https://github.com/nebari-dev/nebari/pull/1700

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 literal 0 HcmV?d00001 diff --git a/docs/nebari-slurm/_static/images/qhub-grafana-slurm.png b/docs/nebari-slurm/_static/images/qhub-grafana-slurm.png new file mode 100644 index 0000000000000000000000000000000000000000..8ce6197c5b9f16deb251afa5ba9ffde1d99bd14f GIT binary patch literal 105875 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