Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
eab99f7
feat: Integrate EduTheia landing page with separate tag parameter
CodeByNikolas Feb 5, 2026
f98c9e2
no custom
CodeByNikolas Feb 19, 2026
73c40d8
check footer for new landing apge
CodeByNikolas Feb 19, 2026
e159b25
chore: Bump theia-cloud chart to 1.3.0-next.4 (#63)
CodeByNikolas Feb 19, 2026
e5c87d2
revert: Restore proper test3 footer links (remove test URLs)
CodeByNikolas Feb 19, 2026
9083a5f
Apply suggestion from @Copilot
CodeByNikolas Feb 19, 2026
3dde7e6
chore: Trigger rebase after main branch updates
CodeByNikolas Feb 19, 2026
bfe2a7d
chore: Merge main into edutheia branch - resolve Chart.lock timestamp…
CodeByNikolas Feb 19, 2026
16cc1cb
rollen test
CodeByNikolas Feb 19, 2026
99e350e
undo rollen
CodeByNikolas Feb 19, 2026
e88558e
all envs
CodeByNikolas Feb 19, 2026
a47e4ac
restore LS
CodeByNikolas Feb 20, 2026
08d8c4c
chore: merge main into feat/edutheia-landing-page-integration and upd…
CodeByNikolas Mar 18, 2026
865a6c7
fix: correct image registry paths for operator, service and landing page
CodeByNikolas Mar 18, 2026
7ae3a08
fix: lowercase GHCR landing-page image references
CodeByNikolas Mar 18, 2026
6a53fe8
fix: align landing-page defaults with standalone image path
CodeByNikolas Mar 18, 2026
d364437
fix: revert out-of-scope test3 pr-tag bumps
CodeByNikolas Mar 18, 2026
21f5254
feat: configure ARC runners with GitHub backup execution mode for all…
CodeByNikolas Mar 19, 2026
985715d
fix(ci): retry Helm base/CRD install on 'release already exists' race
CodeByNikolas Mar 19, 2026
b747324
Merge remote-tracking branch 'origin/main' into feat/landing-page-int…
CodeByNikolas Mar 19, 2026
2b98737
Merge remote-tracking branch 'origin/hotfix/helm-release-race-retry' …
CodeByNikolas Mar 19, 2026
79858a9
fix(ci): remove duplicate execution_mode keys in deploy-pr.yml workflow
CodeByNikolas Mar 19, 2026
5096fd5
fix: disable keycloak on test3 for benchmark runs
CodeByNikolas Mar 20, 2026
8d6b04e
hä??
CodeByNikolas Mar 20, 2026
792f4bd
correct image tag
CodeByNikolas Mar 20, 2026
ca037ce
use pr images
CodeByNikolas Mar 21, 2026
104825f
java-17-latest
CodeByNikolas Mar 21, 2026
7bdbd38
no sidecar
CodeByNikolas Mar 21, 2026
42d1011
feat(ci): add optional clean install workflow toggle
CodeByNikolas Mar 21, 2026
84c0d06
Merge branch 'feature/clean-install-toggle' into benchmark
CodeByNikolas Mar 21, 2026
ab9102b
feat(ci): make clean install perform namespace purge before deploy
CodeByNikolas Mar 21, 2026
47b5766
Merge branch 'feature/clean-install-toggle' into benchmark
CodeByNikolas Mar 21, 2026
1a913fb
fix(ci): delete session/workspace CRDs with grouped resource names
CodeByNikolas Mar 21, 2026
75e76db
Merge branch 'feature/clean-install-toggle' into benchmark
CodeByNikolas Mar 21, 2026
3c24f99
chore(ci): remove fixed post-cleanup wait from clean install
CodeByNikolas Mar 21, 2026
636c3d7
Merge branch 'feature/clean-install-toggle' into benchmark
CodeByNikolas Mar 21, 2026
e3d645c
back to latest
CodeByNikolas Mar 21, 2026
728b359
hä junge??
CodeByNikolas Mar 21, 2026
7a7a92a
check new deployment
CodeByNikolas Mar 21, 2026
c2fc148
new pr
CodeByNikolas Mar 22, 2026
3fb95ce
less preload
CodeByNikolas Mar 22, 2026
6ef8ba6
maxINstances
CodeByNikolas Mar 22, 2026
d108d4d
130
CodeByNikolas Mar 22, 2026
d3ebc08
false
CodeByNikolas Mar 22, 2026
4d5838d
fix(test3): use eduidec landing page image repository
CodeByNikolas Mar 22, 2026
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
8 changes: 8 additions & 0 deletions .github/workflows/deploy-pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,11 @@ on:
description: 'Preview OCI tag from theia-cloud-helm to use (for example pr-123)'
required: false
default: ''
clean_install:
description: 'Clean Install: If true, perform namespace-scoped cleanup before install (delete sessions/workspaces, appdefinitions, deployments, daemonsets, statefulsets, PVCs).'
required: false
default: false
type: boolean

jobs:
# Job 1: Deploy to Test1 environment
Expand All @@ -62,6 +67,7 @@ jobs:
ide_images_tag: ${{ inputs.ide_images_tag }}
execution_mode: ${{ inputs.execution_mode || 'self-hosted-buildkit' }}
helm_chart_tag: ${{ inputs.helm_chart_tag || '' }}
clean_install: ${{ github.event_name == 'workflow_dispatch' && (inputs.clean_install || false) }}
deploy_shared_gateway: false
shared_gateway_values_file: deployments/shared-gateway/values.yaml
shared_gateway_namespace: gateway-system
Expand All @@ -82,6 +88,7 @@ jobs:
ide_images_tag: ${{ inputs.ide_images_tag }}
execution_mode: ${{ inputs.execution_mode || 'self-hosted-buildkit' }}
helm_chart_tag: ${{ inputs.helm_chart_tag || '' }}
clean_install: ${{ github.event_name == 'workflow_dispatch' && (inputs.clean_install || false) }}
deploy_shared_gateway: false
shared_gateway_values_file: deployments/shared-gateway/values.yaml
shared_gateway_namespace: gateway-system
Expand All @@ -102,6 +109,7 @@ jobs:
ide_images_tag: ${{ inputs.ide_images_tag }}
execution_mode: ${{ inputs.execution_mode || 'self-hosted-buildkit' }}
helm_chart_tag: ${{ inputs.helm_chart_tag || '' }}
clean_install: ${{ github.event_name == 'workflow_dispatch' && (inputs.clean_install || false) }}
deploy_shared_gateway: false
shared_gateway_values_file: deployments/shared-gateway/values.yaml
shared_gateway_namespace: gateway-system
Expand Down
39 changes: 39 additions & 0 deletions .github/workflows/deploy-theia.yml
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,11 @@ on:
required: false
type: string
default: "self-hosted-buildkit"
clean_install:
description: "If true, perform namespace-scoped cleanup before Helm install"
required: false
type: boolean
default: false

jobs:
helm-install:
Expand Down Expand Up @@ -250,6 +255,7 @@ jobs:
env:
KUBECONFIG: ${{ github.workspace }}/kubeconfig
run: |
set -euo pipefail

# Install cluster-wide monitoring (PodMonitors + Grafana Dashboards)
# This is installed once per cluster, not per environment
Expand All @@ -276,6 +282,39 @@ jobs:
--set wildcardTLSSecret.certificate="$(cat shared-gateway-wildcard.crt)" \
--set wildcardTLSSecret.key="$(cat shared-gateway-wildcard.key)"

- name: Clean install - namespace-scoped resource purge
if: inputs.clean_install && github.event_name == 'workflow_dispatch'
Copy link

Copilot AI Mar 22, 2026

Choose a reason for hiding this comment

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

The clean-install purge step will never run in this reusable workflow: when deploy-theia.yml is invoked via workflow_call, github.event_name is workflow_call, not workflow_dispatch, so this if: condition is always false. Rely on inputs.clean_install alone (the caller already gates it to manual dispatch) or pass an explicit “triggered_by_dispatch” input if you need extra protection.

Suggested change
if: inputs.clean_install && github.event_name == 'workflow_dispatch'
if: inputs.clean_install

Copilot uses AI. Check for mistakes.
env:
KUBECONFIG: ${{ github.workspace }}/kubeconfig
run: |
set -euo pipefail

NAMESPACE="${{ vars.NAMESPACE }}"

# Delete active session resources first if these CRDs exist
RESOURCE_LIST="$(kubectl api-resources --namespaced=true -o name)"
while IFS= read -r resource; do
if echo "$resource" | grep -Eq '^sessions(\.|$)|^session(\.|$)|^workspaces(\.|$)|^workspace(\.|$)'; then
kubectl delete "$resource" --all -n "$NAMESPACE" --ignore-not-found=true || true
fi
done <<< "$RESOURCE_LIST"

# Delete AppDefinitions for a full clean slate
kubectl delete appdefinitions --all -n "$NAMESPACE" --ignore-not-found=true

# Delete namespace workloads
kubectl delete deployments --all -n "$NAMESPACE" --ignore-not-found=true
kubectl delete daemonsets --all -n "$NAMESPACE" --ignore-not-found=true
kubectl delete statefulsets --all -n "$NAMESPACE" --ignore-not-found=true

# Wait until workload pods terminate (best effort)
kubectl wait --for=delete pod --all -n "$NAMESPACE" --timeout=120s || true

# Delete PVCs associated with this namespace
kubectl delete pvc --all -n "$NAMESPACE" --ignore-not-found=true

echo "Clean install purge complete. Proceeding to Helm install."

# Step 6: Install the main Theia Cloud application with environment-specific configuration
# This includes the operator, service, certificates, and app definitions
- name: Install Theia Cloud in namespace ${{ vars.NAMESPACE }}
Expand Down
47 changes: 24 additions & 23 deletions deployments/test3.theia-test.artemis.cit.tum.de/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ theia-cloud:
interval: 3

operator:
image: ghcr.io/eduide/eduide-cloud/operator:pr-70
image: ghcr.io/eduide/eduide-cloud/operator:pr-100
#eagerStart: false
replicas: 1
sessionsPerUser: 10
Expand All @@ -56,24 +56,19 @@ theia-cloud:
ephemeral-storage: "256Mi"

service:
image: ghcr.io/eduide/eduide-cloud/service:pr-70
image: ghcr.io/eduide/eduide-cloud/service:pr-100
adminApiTokenSecret:
Comment on lines 45 to 60
Copy link

Copilot AI Mar 22, 2026

Choose a reason for hiding this comment

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

This PR is described as only updating the test3 landing page image repository, but this file also changes operator/service tags, preloading images/tags, Keycloak enablement, AppDefinition scaling, and other landing page settings. Please either update the PR title/description to reflect the broader scope or split these unrelated changes into separate PRs to keep review and rollout risk manageable.

Copilot uses AI. Check for mistakes.
name: service-admin-api-token
key: ADMIN_API_TOKEN

preloading:
images:
Copy link

Copilot AI Mar 22, 2026

Choose a reason for hiding this comment

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

theia-cloud.preloading.images no longer includes the landing page image as the first entry. This repo’s deploy workflow assumes preloading.images[0] is the landing page (and overrides indices 1..10 for IDE images), so removing it will break tag overrides and can shift/incorrectly override preload images. Add ghcr.io/eduide/eduidec-landing-page:... back as images[0] (and keep the expected ordering) or update the deploy workflow to not rely on fixed indices for this environment.

Suggested change
images:
images:
- ghcr.io/eduide/eduidec-landing-page:pr-100

Copilot uses AI. Check for mistakes.
- ghcr.io/eduide/eduide-cloud/landing-page:pr-70
- ghcr.io/eduide/eduide/java-17:latest
- ghcr.io/eduide/eduide/c:latest
- ghcr.io/eduide/eduide/javascript:latest
- ghcr.io/eduide/eduide/ocaml:latest
- ghcr.io/eduide/eduide/rust:latest
- ghcr.io/eduide/eduide/python:latest
- ghcr.io/eduide/eduide/java-17-no-ls:pr-70
- ghcr.io/eduide/eduide/rust-no-ls:pr-70
- ghcr.io/eduide/eduide/langserver-java:pr-70
- ghcr.io/eduide/eduide/langserver-rust:pr-70
- ghcr.io/eduide/eduide/java-17:pr-130
- ghcr.io/eduide/eduide/rust:pr-130
- ghcr.io/eduide/eduide/java-17-no-ls:pr-130
- ghcr.io/eduide/eduide/rust-no-ls:pr-130
- ghcr.io/eduide/eduide/langserver-java:pr-130
- ghcr.io/eduide/eduide/langserver-rust:pr-130

imagePullPolicy: Always

Expand All @@ -83,7 +78,7 @@ theia-cloud:

landingPage:
# We use the try now page as landing page since the default does not support mutliple apps -> https://github.com/eclipsesource/theia-cloud/discussions/301
Copy link

Copilot AI Mar 22, 2026

Choose a reason for hiding this comment

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

The comment says “does not support mutliple apps” — “mutliple” is misspelled. Please correct it to “multiple”.

Suggested change
# We use the try now page as landing page since the default does not support mutliple apps -> https://github.com/eclipsesource/theia-cloud/discussions/301
# We use the try now page as landing page since the default does not support multiple apps -> https://github.com/eclipsesource/theia-cloud/discussions/301

Copilot uses AI. Check for mistakes.
image: ghcr.io/eduide/eduide-cloud/landing-page:pr-70
image: ghcr.io/eduide/eduidec-landing-page:latest
# We can define a default blueprint

# 1. The actual image data (Must be a Base64 encoded string)
Expand All @@ -94,12 +89,12 @@ theia-cloud:
# you might need this. If you used my simplified template, this is ignored.
logoFileExtension: "png"
appDefinition: "java-17-no-ls"
ephemeralStorage: true
ephemeralStorage: false
additionalApps:
java-17-no-ls:
label: Java 17 No-LS (Sidecar)
label: Java 17 No-LS
rust-no-ls:
label: Rust No-LS (Sidecar)
label: Rust No-LS
infoTitle: "🚀 Welcome to Test3 IDE Environment"
infoText: "Test environment for Theia with external language server architecture (PR #70). The IDE runs separately from the language server for improved performance and modularity."
loadingText: "⚡ Setting up your development workspace..."
Expand All @@ -119,32 +114,38 @@ theia-cloud:
url: "https://aet.cit.tum.de/"

keycloak:
enable: true
enable: false

# -- Key cloak auth URL. Only has to be specified when enable: true
authUrl: "https://keycloak.ase.in.tum.de/"

# -- The Keycloak Realm. Only has to be specified when enable: true
realm: "Test"
realm: ""

# -- The client-id. Only has to be specified when enable: true
clientId: "theia-test"
clientId: ""

theia-appdefinitions:
defaultImageTag: pr-70
defaultImageTag: pr-130
apps:
- name: java-17-no-ls
image: ghcr.io/eduide/eduide/java-17-no-ls
minInstances: 1
minInstances: 3
maxInstances: 20
sidecars:
- name: langserver
image: ghcr.io/eduide/eduide/langserver-java
port: 5000
languages: [java]
mountWorkspace: true
- name: java-17-latest
image: ghcr.io/eduide/eduide/java-17
minInstances: 3
maxInstances: 20
- name: rust-no-ls
image: ghcr.io/eduide/eduide/rust-no-ls
minInstances: 1
minInstances: 3
maxInstances: 20
sidecars:
- name: langserver
image: ghcr.io/eduide/eduide/langserver-rust
Expand Down
Loading