Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update from auto-update/renku-core-2.9.2 #3493

Closed
wants to merge 18 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/renku-dev-test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ jobs:
runs-on: ubuntu-20.04
steps:
- uses: actions/[email protected]
- uses: cypress-io/github-action@v5
- uses: cypress-io/github-action@v6
id: cypress
env:
TEST_EMAIL: [email protected]
Expand Down
66 changes: 57 additions & 9 deletions CHANGELOG.rst
Original file line number Diff line number Diff line change
@@ -1,22 +1,70 @@
.. _changelog:

0.48.0
------

This release contains a new privacy policy and terms of use in the UI and bug fixes to renku core service related to project migration.

User-Facing Changes
~~~~~~~~~~~~~~~~~~~

**🌟 New Features**

- 📜 **UI**: Show terms of use and privacy policy in the help section
(`#2954 <https://github.com/SwissDataScienceCenter/renku-ui/pull/2954>`_).

**✨ Improvements**

- 🖌 **UI**: Improve appearance of templates on new project page
(`#2999 <https://github.com/SwissDataScienceCenter/renku-ui/pull/2999>`_).
- 🛑 **UI**: Unify appearance of project settings alerts
(`#3001 <https://github.com/SwissDataScienceCenter/renku-ui/pull/3001>`_).

**🐞 Bug Fixes**

- **Core Service**: Fix issue with having to run project migration twice to migrate the Dockerfile/project template.
(`#3690 <https://github.com/SwissDataScienceCenter/renku-python/issues/3690>`__)
- **UI**: Restore logged in/out notifications
(`#3014 <https://github.com/SwissDataScienceCenter/renku-ui/pull/3014>`_).
- **UI**: Hide button to add storage on deployments not supporting external storages
(`#3001 <https://github.com/SwissDataScienceCenter/renku-ui/pull/3001>`_).
- **UI**: Fix landing page parallax background (`#3010 <https://github.com/SwissDataScienceCenter/renku-ui/pull/3010>`_).
- **UI**: Fix search bar styles (`#3019 <https://github.com/SwissDataScienceCenter/renku-ui/pull/3019>`_).
- **UI**: Handle ``jsonrpc`` improper redirects (`#3017 <https://github.com/SwissDataScienceCenter/renku-ui/pull/3017>`_, `#2966 <https://github.com/SwissDataScienceCenter/renku-ui/issues/2966>`_).

Internal Changes
~~~~~~~~~~~~~~~~

**Improvements**

- **UI**: Add initial alpha implementation of Renku 1.0 projects
(`#2875 <https://github.com/SwissDataScienceCenter/renku-ui/pull/2875>`_).

Individual Components
~~~~~~~~~~~~~~~~~~~~~

- `renku-python 2.9.2 <https://github.com/SwissDataScienceCenter/renku-python/releases/tag/2.9.2>`_
- `renku-ui 3.20.1 <https://github.com/SwissDataScienceCenter/renku-ui/releases/tag/3.20.1>`_
- `renku-ui 3.20.0 <https://github.com/SwissDataScienceCenter/renku-ui/releases/tag/3.20.0>`_

0.47.1
------

This release only includes changes to the documentation and updates to the acceptance tests.
It doesn't bring any new features or bug fixes.


0.47.0
------

This release expands Renku's cloud storage functionality in two key ways: First, mounted storages
are now read **and write**, so you can use mounted storage as an active workspace for your data in a RenkuLab
session. Second, we have expanded the cloud storage services you can integrate with RenkuLab. You can now
mount not only S3 buckets, but also WebDAV-based storages and Azure Blobs.
mount not only S3 buckets, but also WebDAV-based storages and Azure Blobs.

If you use SSH sessions via the CLI, you can use cloud storage there too! Configure cloud storage for your
project on RenkuLab.io, and those storages will be mounted in your remote session. Support for cloud
storage in local Renku sessions is still on our roadmap.
storage in local Renku sessions is still on our roadmap.

This release also adds the ability to change which resource class your session uses when you unpause the
session, in case the original resource class is now full.
Expand Down Expand Up @@ -147,15 +195,15 @@ Internal Changes
Individual components
~~~~~~~~~~~~~~~~~~~~~

- `renku-python 2.8.2 <https://github.com/SwissDataScienceCenter/renku-python/releases/tag/2.8.2>`_
- `renku-python 2.8.2 <https://github.com/SwissDataScienceCenter/renku-python/releases/tag/2.8.2>`_
- `renku-ui 3.17.2 <https://github.com/SwissDataScienceCenter/renku-ui/releases/tag/3.17.2>`_
- `renku-graph 2.48.2 <https://github.com/SwissDataScienceCenter/renku-graph/releases/tag/2.48.2>`_
- `renku-graph 2.48.2 <https://github.com/SwissDataScienceCenter/renku-graph/releases/tag/2.48.2>`_


0.45.1
------
This is a bugfix release that updates the helm chart to work with new
prometheus metrics in the renku core service, which was preventing it from
This is a bugfix release that updates the helm chart to work with new
prometheus metrics in the renku core service, which was preventing it from
starting properly if metrics were enabled. In addition this release
also addresses problems with expiring Gitlab access tokens when sessions
are paused and resumed which caused resumed session to not be able to push to Gitlab
Expand All @@ -166,8 +214,8 @@ Internal Changes

**🐞 Bug Fixes**

- **Helm Chart**: update core-service deployment to allow service and rq
metrics to run side-by-side (`#3303
- **Helm Chart**: update core-service deployment to allow service and rq
metrics to run side-by-side (`#3303
<https://github.com/SwissDataScienceCenter/renku/pull/3303>`_).
- **Notebooks**: use a larger /dev/shm folder in sessions
(`#1723 <https://github.com/SwissDataScienceCenter/renku-notebooks/issues/1723>`_)
Expand Down
3 changes: 2 additions & 1 deletion cypress-tests/cypress/e2e/checkWorkflows.cy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,8 @@ describe("Workflows pages", () => {
.contains("span", "m")
.should("be.visible");
cy.getDataCy("workflow-details")
.get("a#icon-link-5")
.contains("tr", "Default value")
.find("a")
.should("be.visible")
.click();
cy.get("#file-card-header")
Expand Down
141 changes: 77 additions & 64 deletions cypress-tests/cypress/e2e/useSession.cy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -233,74 +233,87 @@ describe("Basic public project functionality", () => {
return;
}

cy.stopAllSessionsForProject(projectIdentifier);
cy.intercept("/ui-server/api/data/storage*").as("getProjectCloudStorage");
cy.getDataCy("cloud-storage-section")
.find("button")
.contains("Add Cloud Storage")
.should("be.visible")
.click();
cy.getDataCy("cloud-storage-edit-header")
.contains("Add Cloud Storage")
.should("be.visible");

cy.getProjectSection("Settings").click();
cy.getDataCy("settings-navbar")
.contains("a.nav-link", "Cloud Storage")
cy.getDataCy("cloud-storage-edit-schema")
.contains("s3")
.should("be.visible")
.click();
cy.getDataCy("cloud-storage-edit-providers")
.contains("AWS")
.should("be.visible")
.click();
cy.getDataCy("cloud-storage-edit-next-button").should("be.visible").click();

cy.getDataCy("cloud-storage-edit-options").should("be.visible");
cy.get("#sourcePath").should("have.value", "").type("giab");
cy.get("#endpoint")
.should("have.value", "")
.type("http://s3.amazonaws.com");
cy.getDataCy("cloud-storage-edit-next-button").should("be.visible").click();

cy.getDataCy("cloud-storage-edit-mount").should("be.visible");
cy.get("#name").should("have.value", "").type("data_s3");
cy.get("#mountPoint")
.should("have.value", "external_storage/data_s3")
.type("{selectAll}data_s3");
cy.get("#readOnly").should("not.be.checked").check();

cy.getDataCy("cloud-storage-edit-update-button")
.should("be.visible")
.contains("Add")
.click();

// Add a S3 storage configuration if it doesn't exist
cy.wait("@getProjectCloudStorage").then(({ response }) => {
const storages = response.body as { storage: { name: string } }[];
if (storages.find(({ storage }) => storage.name === "data_s3")) {
return;
}

cy.getDataCy("cloud-storage-section")
.find("button")
.contains("Add Cloud Storage")
.should("be.visible")
.click();
cy.getDataCy("cloud-storage-edit-header")
.contains("Add Cloud Storage")
.should("be.visible");

cy.getDataCy("cloud-storage-edit-schema")
.contains("s3")
.should("be.visible")
.click();
cy.getDataCy("cloud-storage-edit-providers")
.contains("AWS")
.should("be.visible")
.click();
cy.getDataCy("cloud-storage-edit-next-button")
.should("be.visible")
.click();

cy.getDataCy("cloud-storage-edit-options").should("be.visible");
cy.get("#sourcePath").should("have.value", "").type("giab");
cy.get("#endpoint")
.should("have.value", "")
.type("http://s3.amazonaws.com");
cy.getDataCy("cloud-storage-edit-next-button")
.should("be.visible")
.click();

cy.getDataCy("cloud-storage-edit-mount").should("be.visible");
cy.get("#name").should("have.value", "").type("data_s3");
cy.get("#mountPoint")
.should("have.value", "external_storage/data_s3")
.type("{selectAll}data_s3");
cy.get("#readOnly").should("not.be.checked").check();

cy.getDataCy("cloud-storage-edit-update-button")
.should("be.visible")
.contains("Add")
.click();

cy.getDataCy("cloud-storage-edit-body").contains(
"storage data_s3 has been succesfully added"
);
cy.getDataCy("cloud-storage-edit-close-button")
.should("be.visible")
.click();
});

cy.getDataCy("more-menu").should("be.visible").click();
cy.getProjectPageLink(projectIdentifier, "sessions/new")
cy.getDataCy("cloud-storage-edit-body").contains(
"storage data_s3 has been succesfully added"
);
cy.getDataCy("cloud-storage-edit-close-button")
.should("be.visible")
.click();

// Wait for the image to be ready and start a session
cy.get(".renku-container")
.contains("A session gives you an environment")
.should("exist");
cy.get(".renku-container .badge.bg-success", { timeout: TIMEOUTS.vlong })
.contains("available")
.should("exist");
cy.getDataCy("cloud-storage-item").contains("data_s3").should("exist");
cy.get("#cloud-storage-data_s3-active").should("be.checked");
cy.get(".renku-container button.btn-secondary", { timeout: TIMEOUTS.long })
.contains("Start Session")
.should("exist")
.click();
cy.get(".progress-box .progress-title").should("exist"); //.contains("Step 2 of 2");
cy.get("button")
.contains(projectTestConfig.projectName)
.should("be.visible");
cy.get(".progress-box .progress-title")
.contains("Starting Session")
.should("exist");
cy.get(".progress-box .progress-title", { timeout: TIMEOUTS.vlong }).should(
"not.exist"
);

// Verify that the S3 data is mounted
cy.getIframe("iframe#session-iframe").within(() => {
cy.get(".jp-DirListing-content", { timeout: TIMEOUTS.long }).should(
"be.visible"
);
cy.get(".jp-DirListing-item")
.contains("data_s3")
.should("be.visible")
.dblclick();

cy.get(".jp-DirListing-item")
.contains("README.s3_structure")
.should("be.visible")
.first()
.click();
Expand Down
6 changes: 3 additions & 3 deletions cypress-tests/cypress/support/commands/general.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ export const getIframe = (selector: string) => {
.then(cy.wrap);
};

function getDataCy(value: string, exist: true) {
function getDataCy(value: string, exist?: boolean) {
if (exist) return cy.get(`[data-cy=${value}]`).should("exist");
return cy.get(`[data-cy=${value}]`);
}
Expand All @@ -33,8 +33,8 @@ declare global {
// eslint-disable-next-line @typescript-eslint/no-namespace
namespace Cypress {
interface Chainable {
getDataCy(value: string, exist?: boolean);
getIframe(selector: string): Chainable<unknown>;
getDataCy: typeof getDataCy;
getIframe: typeof getIframe;
}
}
}
24 changes: 13 additions & 11 deletions docs/how-to-guides/admin/privacycookie.rst
Original file line number Diff line number Diff line change
Expand Up @@ -3,22 +3,24 @@
User interface configuration options
------------------------------------

Privacy page
~~~~~~~~~~~~
Privacy page and Terms of Use
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The UI has a privacy page with a completely configurable content, suited for showing
any policy/terms related information, like the `Privacy Policy Statement` or the
`Terms of Use`.
The UI can be configured to show a `Privacy Policy` and `Terms of Use`. These are
displayed under the `Help` section of the UI.

The content is read from a ``ConfigMap``. You need to configure the values in
``ui.privacy.page`` to enable the feature and set the reference ConfigMap name and key.
Both ``ui.privacy.enabled`` and ``ui.privacy.page.enabled`` need to be ``true`` for
enabling the privacy page.
For each of these, the content is read from a ``ConfigMap``. You need to configure
the values in ``ui.client.privacy.page`` to enable the feature and set the reference
ConfigMap name and key. If ``ui.client.privacy.page.enabled`` is ``true``, then the privacy
policy and terms of use will be shown in the UI, with content taken from the ConfigMap
specified by ``ui.client.privacy.page.configMapName`` at the key
``ui.client.privacy.page.configMapPolicyKey`` for the privacy policy and
``ui.client.privacy.page.configMapTermsKey`` for the terms of use.

.. note::

If you don't set the ConfigMap name and key,
`a sample <https://github.com/SwissDataScienceCenter/renku-ui/blob/master/helm-chart/renku-ui/templates/configmap.yaml>`_
`a sample <https://github.com/SwissDataScienceCenter/renku/blob/master/helm-chart/renku/templates/ui/ui-client-configmap.yaml>`_
will be used instead. You can start from it as a template to create your customized ConfigMap.

The `Markdown syntax <https://en.wikipedia.org/wiki/Markdown>`_ is fully supported for the
Expand All @@ -33,7 +35,7 @@ for anonymous users (i.e. without an account or not currently logged in). To com
international laws, it's strongly advised to explicitly require consent to the user for storing
these data and using cookies.

To activate this feature, please set ``ui.privacy.enabled: true``. We have already configured a
To activate this feature, please set ``ui.privacy.banner.enabled: true``. We have already configured a
default cookie banner to inform the users about the aforementioned requirements and points to
point them to the privacy page for further details.

Expand Down
2 changes: 1 addition & 1 deletion helm-chart/renku/requirements.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,6 @@ dependencies:
condition: notebooks.cloudstorage.s3.installDatashim
- name: csi-rclone
repository: "https://swissdatasciencecenter.github.io/helm-charts/"
version: "0.1.5"
version: "0.1.6"
condition: global.csi-rclone.install

2 changes: 1 addition & 1 deletion helm-chart/renku/templates/NOTES.txt
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ can be accessed using the following one-liner (you need to have jq installed).
kubectl get secrets -n {{ .Release.Namespace }} {{ template "renku.fullname" . }} -o json | jq -r .data.users | base64 --decode
{{- end -}}

{{ if .Values.ui.client.privacy.enabled -}}
{{ if or .Values.ui.client.privacy.banner.enabled .Values.ui.client.privacy.page.enabled -}}
You may need to customize privacy values for your RenkuLab deployment (E.G. the Privacy page).
Please refer to the following documentation: https://renku.readthedocs.io/en/latest/admin/index.html#additional-configurations
{{ end }}
Expand Down
20 changes: 18 additions & 2 deletions helm-chart/renku/templates/ui/ui-client-configmap.yaml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ template "ui.fullname" . }}-privacy-sample
name: {{ template "renku.fullname" . }}-privacy-sample
labels:
app: ui
chart: {{ template "renku.chart" . }}
Expand All @@ -17,11 +17,27 @@ data:
## Configure the Privacy Page
You should customize the privacy statement by cloning the sample ConfigMap ``*-sample-privacy`` and adjust the
content. Any markdown formatted text works. Feel free to change the ConfigMap key and to pick any name,
be sure to properly configure the values ``ui.privacy.page`` before upgrading your RenkuLab deployment.
be sure to properly configure the values ``ui.client.privacy.page`` before upgrading your RenkuLab deployment.
If the mapping is enabled but no text is provided (empty content, wrong ``privacy.page`` values, missing
ConfigMap, etc.), the links in the navigation bars will be hidden and users manually accessing the privacy page
will get a warning.
Consider changing the cookie banner content as well when the privacy page is not available.
## Apply the changes
If you edit the ConfigMap content and you don't upgrade the deployment from helm, keep in mind that the
ui pod needs to be manually re-deployed in order to apply the changes to the privacy page.
terms: |
# Terms of Use
The content of this page is only a template.
## Information
If you are reading this message, the Terms of Use page content has not been updated for this RenkuLab deployment.
The following content is intended to be read by a RenkuLab admin.
## Configure the Terms of Use
You should customize the terms of use by cloning the sample ConfigMap ``*-sample-privacy`` and adjust the
content. Any markdown formatted text works. Feel free to change the ConfigMap key and to pick any name,
be sure to properly configure the values ``ui.client.privacy.page`` before upgrading your RenkuLab deployment.
If the mapping is enabled but no text is provided (empty content, wrong ``privacy.page`` values, missing
ConfigMap, etc.), the links in the navigation bars will be hidden and users manually accessing the terms page
will get a warning.
## Apply the changes
If you edit the ConfigMap content and you don't upgrade the deployment from helm, keep in mind that the
ui pod needs to be manually re-deployed in order to apply the changes to the terms page.
Loading
Loading