Skip to content

Commit

Permalink
release 0.59.0 (#3778)
Browse files Browse the repository at this point in the history
* chore: create release 0.59.0

* feat: bump renku-gateway to 1.2.0 (#3808)

Add support for signing cookie in the gateway.

* refactor: use cy.session for anonymous user checks (#3802)

Remove the `logout()` command and use `cy.session()` instead. This makes the tests less flaky.

* feat: update renku-ui to 3.38.0 (#3815)

* feat!:add support for data connectors in Renku 2.0 (#3793)

Closes #3751.

Add support for data connectors in Renku 2.0.

* fix: update permission checks in Renku 2.0 (#3819)

See: SwissDataScienceCenter/renku-ui#3350.

Fixes permission check in the Renku 2.0 UI. Notably, group owners can update projects in the group even if they are not direct project members.

* fix: bump renku-ui to 3.40.1 (#3821)

Fixes a bug with data connectors where typing a slug would not be taken into account and using uppercase letter in the name would cause issues.

* fix changelog versions

---------

Co-authored-by: Flora Thiebaut <[email protected]>
Co-authored-by: Andrea Cordoba <[email protected]>
Co-authored-by: Ralf Grubenmann <[email protected]>
  • Loading branch information
4 people authored Oct 22, 2024
1 parent a5adfb9 commit 479a2da
Show file tree
Hide file tree
Showing 7 changed files with 107 additions and 39 deletions.
60 changes: 60 additions & 0 deletions CHANGELOG.rst
Original file line number Diff line number Diff line change
@@ -1,5 +1,65 @@
.. _changelog:

0.59.0
------

Renku ``0.59.0`` introduces the ability to reuse data connectors in multiple projects!
When you add a data connector (previously called a data source) to your project, you now have the new option to select other data connectors on RenkuLab,
for example those shared in your group, rather than having to re-enter the data connection details.

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

**🌟 New Features**

- **UI**: Add and re-use data connectors in Renku 2.0 projects (`#3323 <https://github.com/SwissDataScienceCenter/renku-ui/pull/3323>`__).

**✨ Improvements**

- **UI**: Add a playful design for the 404 and application error pages (`#3248 <https://github.com/SwissDataScienceCenter/renku-ui/pull/3248>`__).
- **UI**: Update redirect page styles (`#3257 <https://github.com/SwissDataScienceCenter/renku-ui/pull/3257>`__).
- **UI**: Remove Renku 2.0 beta warning alert from dashboard (`#3357 <https://github.com/SwissDataScienceCenter/renku-ui/pull/3357>`__).

**🐞 Bug Fixes**

- **UI**: Fix how permissions are checked in Renku 2.0, notably group members can perform actions according to their role in projects. (`#3351 <https://github.com/SwissDataScienceCenter/renku-ui/pull/3351>`__).
- **UI**: Fix styles for the edit launcher environment list (`#3360 <https://github.com/SwissDataScienceCenter/renku-ui/pull/3360>`__).
- **UI**: Allow opening a project from Renku 2.0 search if the namespace is missing in the result (`#3353 <https://github.com/SwissDataScienceCenter/renku-ui/pull/3353>`__).
- **UI**: Fix update file and download buttons in Renku 1.0 (`#3363 <https://github.com/SwissDataScienceCenter/renku-ui/pull/3363>`__).

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

**New Features**

- **Data services**: Add support for data connectors (`#407 <https://github.com/SwissDataScienceCenter/renku-data-services/pull/407>`__).
- **Data services**: Do not synchronize blocked users from Keycloak (`#393 <https://github.com/SwissDataScienceCenter/renku-data-services/pull/393>`__).
- **Data services**: Support getting permissions (`#454 <https://github.com/SwissDataScienceCenter/renku-data-services/pull/454>`__).
- **Notebooks**: Add support for data connectors (`#1991 <https://github.com/SwissDataScienceCenter/renku-notebooks/pull/1991>`__).
- **Notebooks**: Cache Amalthea sessions (`#1983 <https://github.com/SwissDataScienceCenter/renku-notebooks/pull/1983>`__).

**Improvements**

- **Data services**: Handle errors in background jobs nicely (`#463 <https://github.com/SwissDataScienceCenter/renku-data-services/pull/463>`__).
- **Gateway**: Add support for signing cookies (`#734 <https://github.com/SwissDataScienceCenter/renku-gateway/pull/734>`__).

**Bug Fixes**

- **Data services**: Treat invalid JWT as 401 HTTP error.
- **Data services**: Change user preferences id sequence to proper value.

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

- `renku-data-services 0.23.0 <https://github.com/SwissDataScienceCenter/renku-data-services/releases/tag/v0.23.0>`__
- `renku-data-services 0.24.0 <https://github.com/SwissDataScienceCenter/renku-data-services/releases/tag/v0.24.0>`__
- `renku-gateway 1.2.0 <https://github.com/SwissDataScienceCenter/renku-gateway/releases/tag/1.2.0>`_
- `renku-notebooks 1.27.0 <https://github.com/SwissDataScienceCenter/renku-notebooks/releases/tag/1.27.0>`_
- `renku-ui 3.38.0 <https://github.com/SwissDataScienceCenter/renku-ui/releases/tag/3.38.0>`_
- `renku-ui 3.39.0 <https://github.com/SwissDataScienceCenter/renku-ui/releases/tag/3.39.0>`_
- `renku-ui 3.40.0 <https://github.com/SwissDataScienceCenter/renku-ui/releases/tag/3.40.0>`_
- `renku-ui 3.40.1 <https://github.com/SwissDataScienceCenter/renku-ui/releases/tag/3.40.1>`_

0.58.1
------

Expand Down
17 changes: 11 additions & 6 deletions cypress-tests/cypress/e2e/privateProject.cy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,11 @@ describe("Basic public project functionality", () => {
},
validateLogin
);
cy.createProjectIfMissing({templateName: "Python", ...projectIdentifier, visibility: "private"});
cy.createProjectIfMissing({
templateName: "Python",
...projectIdentifier,
visibility: "private",
});
cy.visitAndLoadProject(projectIdentifier);
});

Expand All @@ -50,11 +54,11 @@ describe("Basic public project functionality", () => {
.should("be.checked");
cy.searchForProject(projectIdentifier, true);

// logout and search for the project and log back in
cy.logout();
// Check as an anonymous user
cy.session(["anonymous", getRandomString()], () => {});
cy.visit("/");
cy.get("#nav-hamburger").should("be.visible").click();
cy.searchForProject(projectIdentifier, false);
cy.robustLogin();
});

it("Can always search for project after changing the visibility", () => {
Expand Down Expand Up @@ -86,10 +90,11 @@ describe("Basic public project functionality", () => {

// Search the project as both logged in and logged out.
cy.searchForProject(projectIdentifier, true);
cy.logout();
// Check as an anonymous user
cy.session(["anonymous", getRandomString()], () => {});
cy.visit("/");
cy.get("#nav-hamburger").should("be.visible").click();
cy.searchForProject(projectIdentifier, false);
cy.robustLogin();
});

it("Deleting the project removes it from the search page", () => {
Expand Down
6 changes: 3 additions & 3 deletions cypress-tests/cypress/e2e/publicProject.cy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -48,11 +48,11 @@ describe("Basic public project functionality", () => {
cy.waitMetadataIndexing();
cy.searchForProject(projectIdentifier);

// logout and search for the project and log back in
cy.logout();
// Check as an anonymous user
cy.session(["anonymous", getRandomString()], () => {});
cy.visit("/");
cy.get("#nav-hamburger").should("be.visible").click();
cy.searchForProject(projectIdentifier);
cy.robustLogin();
});

it("Can see overview content and check the clone URLs", () => {
Expand Down
2 changes: 1 addition & 1 deletion cypress-tests/cypress/e2e/useSession.cy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,7 @@ describe("Basic public project functionality", () => {

it("Start a new session as anonymous user.", () => {
// Do not re-use the logged-in session
cy.session("anonymous", () => {});
cy.session(["anonymous", getRandomString()], () => {});

// Log out and go to the project again
cy.visit("/");
Expand Down
23 changes: 8 additions & 15 deletions cypress-tests/cypress/support/commands/login.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
const renkuLogin = (credentials: { username: string; password: string }[]) => {
cy.wrap(credentials, { log: false }).each((credential: {password: string, username: string}) => {
cy.get("#username").type(credential.username);
cy.get("#password").type(credential.password, { log: false });
cy.get("#kc-login").click()
})
cy.wrap(credentials, { log: false }).each(
(credential: { password: string; username: string }) => {
cy.get("#username").type(credential.username);
cy.get("#password").type(credential.password, { log: false });
cy.get("#kc-login").click();
}
);
cy.url().then((url) => {
const parsedUrl = new URL(url);
if (
Expand Down Expand Up @@ -93,7 +95,7 @@ function registerAndVerify(props: RegisterAndVerifyProps) {
expect(["/", ""]).to.include(loc.pathname);
expect(loc.search).to.eq("");
expect(loc.hostname).to.eq(baseURL.hostname);
})
});
cy.get("header").should("be.visible");
cy.get("footer").should("be.visible");
// If we send a request to the user endpoint on Gitlab too quickly after we log in then
Expand Down Expand Up @@ -137,15 +139,7 @@ function robustLogin(props?: RobustLoginProps) {
);
}

function logout() {
cy.get("#profile-dropdown").should("be.visible").click();
cy.get("#logout-link").should("be.visible").click();
// Make sure we fully log out
cy.wait(15_000);
}

export default function registerLoginCommands() {
Cypress.Commands.add("logout", logout);
Cypress.Commands.add("renkuLogin", renkuLogin);
Cypress.Commands.add("register", register);
Cypress.Commands.add("registerAndVerify", registerAndVerify);
Expand All @@ -156,7 +150,6 @@ declare global {
// eslint-disable-next-line @typescript-eslint/no-namespace
namespace Cypress {
interface Chainable {
logout();
renkuLogin(credentials: { username: string; password: string }[]);
register(
email: string,
Expand Down
10 changes: 10 additions & 0 deletions helm-chart/renku/templates/gateway/deployment-revproxy.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,16 @@ spec:
secretKeyRef:
name: {{ .Values.global.redis.existingSecret }}
key: {{ .Values.global.redis.existingSecretPasswordKey }}
- name: GATEWAY_SESSIONS_COOKIEENCODINGKEY
valueFrom:
secretKeyRef:
name: {{ cat (include "renku.fullname" .) "-gateway" | nospace }}
key: cookieEncodingKey
- name: GATEWAY_SESSIONS_COOKIEHASHKEY
valueFrom:
secretKeyRef:
name: {{ cat (include "renku.fullname" .) "-gateway" | nospace }}
key: cookieHashKey
- name: GATEWAY_LOGIN_PROVIDERS_RENKU_CLIENTSECRET
valueFrom:
secretKeyRef:
Expand Down
28 changes: 14 additions & 14 deletions helm-chart/renku/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -654,7 +654,7 @@ ui:
replicaCount: 1
image:
repository: renku/renku-ui
tag: "3.37.1"
tag: "3.40.1"
pullPolicy: IfNotPresent
## Optionally specify an array of imagePullSecrets.
## Secrets must be manually created in the namespace.
Expand Down Expand Up @@ -843,7 +843,7 @@ ui:
keepCookies: []
image:
repository: renku/renku-ui-server
tag: "3.37.1"
tag: "3.40.1"
pullPolicy: IfNotPresent
imagePullSecrets: []
nameOverride: ""
Expand Down Expand Up @@ -983,7 +983,7 @@ notebooks:
targetCPUUtilizationPercentage: 50
image:
repository: renku/renku-notebooks
tag: "1.26.2"
tag: "1.27.0"
pullPolicy: IfNotPresent
## Optionally specify an array of imagePullSecrets.
## Secrets must be manually created in the namespace.
Expand Down Expand Up @@ -1101,15 +1101,15 @@ notebooks:
gitRpcServer:
image:
name: renku/git-rpc-server
tag: "1.26.2"
tag: "1.27.0"
gitHttpsProxy:
image:
name: renku/git-https-proxy
tag: "1.26.2"
tag: "1.27.0"
gitClone:
image:
name: renku/git-clone
tag: "1.26.2"
tag: "1.27.0"
service:
type: ClusterIP
port: 80
Expand Down Expand Up @@ -1162,12 +1162,12 @@ notebooks:
sessionTypes: ["registered"]
image:
repository: renku/renku-notebooks-tests
tag: "1.26.2"
tag: "1.27.0"
pullPolicy: IfNotPresent
k8sWatcher:
image:
repository: renku/k8s-watcher
tag: "1.26.2"
tag: "1.27.0"
pullPolicy: IfNotPresent
resources: {}
replicaCount: 1
Expand All @@ -1179,12 +1179,12 @@ notebooks:
secretsMount:
image:
repository: renku/secrets-mount
tag: "1.26.2"
tag: "1.27.0"
ssh:
enabled: false
image:
repository: renku/ssh-jump-host
tag: "1.26.2"
tag: "1.27.0"
pullPolicy: IfNotPresent
resources: {}
replicaCount: 1
Expand Down Expand Up @@ -1271,7 +1271,7 @@ gateway:
secretKey:
image:
repository: renku/renku-gateway
tag: "1.1.0"
tag: "1.2.0"
pullPolicy: IfNotPresent
service:
type: ClusterIP
Expand Down Expand Up @@ -1578,14 +1578,14 @@ dataService:
create: true
image:
repository: renku/renku-data-service
tag: "0.22.0"
tag: "0.24.0"
pullPolicy: IfNotPresent
backgroundJobs:
events:
resources: {}
image:
repository: renku/data-service-background-jobs
tag: "0.22.0"
tag: "0.24.0"
pullPolicy: IfNotPresent
total:
resources: {}
Expand Down Expand Up @@ -1638,7 +1638,7 @@ authz:
secretsStorage:
image:
repository: renku/secrets-storage
tag: "0.22.0"
tag: "0.24.0"
pullPolicy: IfNotPresent
service:
type: ClusterIP
Expand Down

0 comments on commit 479a2da

Please sign in to comment.