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

Initial E2E Tests #387

Open
wants to merge 7 commits into
base: main
Choose a base branch
from
Open

Initial E2E Tests #387

wants to merge 7 commits into from

Conversation

jfaltermeier
Copy link
Contributor

@jfaltermeier jfaltermeier commented Dec 18, 2024

Use squash on merge

This PR establishes a foundation for implementing E2E tests.

It has a matrix GitHub workflow that combines different configurations: Kubernetes versions, ephemeral vs. persistent storage, subdomain vs. path-based routing, and Keycloak enablement.

Currently, the tests are just checking login/logout and starting a session, but this provides a base that can be extended with additional tests.

It also fixes an issue with the MinikubePersistentVolumeCreator that caused an error.

Test Run: https://github.com/eclipse-theia/theia-cloud/actions/runs/12413770653

Contributed on behalf of STMicroelectronics

strategy:
fail-fast: false
matrix:
kubernetes: [v1.32.0, v1.31.4, v1.30.8, v1.29.12]
Copy link
Contributor Author

@jfaltermeier jfaltermeier Dec 19, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure how many versions we should include here. Kubernetes typically provides patches for the last 3-4 releases. I think we should at least test the latest version and the oldest one within this range.

It might also be useful to include all versions, especially when updating our Kubernetes client API libraries. In such cases, if something breaks, it would be helpful to pinpoint exactly which versions have the issue.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it makes sense to include all versions that are not end of life. Thus, I'd just leave it like this :)

@jfaltermeier jfaltermeier marked this pull request as ready for review December 19, 2024 15:06
@lucas-koehler lucas-koehler removed the request for review from sgraband January 13, 2025 11:44
Copy link
Contributor

@lucas-koehler lucas-koehler left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @jfaltermeier , Thanks for providing this vast improvement in testing 🥳

The changes already look pretty good to me. I only have a few small remarks inline.

path: "./theia-cloud-helm"

- name: Setup Minikube
uses: manusa/actions-setup-minikube@92af4db914ab207f837251cd53eb7060e6477614
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Minor: add comment which version this commit hash resolves to.


- name: Enable Minikube Addons
run: |
minikube addons enable dashboard
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is the dashboard needed for in E2E tests?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think the file name contains a typo and the file should be named constants.ts?


name = "theia-cloud-crds"
chart = "../../../theia-cloud-helm/charts/theia-cloud-crds"
namespace = "theiacloud"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Small detail: AFAIK since we aligned all namings, our default namespace name is theia-cloud. Should we adapt this here for the sake of consistency?
If yes, also adapt below

kubectl -n ingress-nginx delete pod -l app.kubernetes.io/name=ingress-nginx
```

Adapt your environment so that all docker images are built in minikube. Build all Theia Cloud docker images + Demos with tag `minikube-ci-e2e`, e.g. `theiacloud/theia-cloud-service:minikube-ci-e2e`.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should add a note that the docker build commands need to be executed in the repository root to avoid confusioon

strategy:
fail-fast: false
matrix:
kubernetes: [v1.32.0, v1.31.4, v1.30.8, v1.29.12]
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it makes sense to include all versions that are not end of life. Thus, I'd just leave it like this :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants