From 116ac0f8eafb91aeab8f1b76c0d84270a467079c Mon Sep 17 00:00:00 2001 From: = Date: Fri, 22 May 2026 21:45:14 +0200 Subject: [PATCH 1/7] add c templates appdefinition --- charts/theia-appdefinitions/values.yaml | 12 ++++ charts/theia-cloud-combined/values.yaml | 9 +++ deployments/shared-gateway/values.yaml | 66 +++++++++++++++++++ .../values.yaml | 7 +- 4 files changed, 93 insertions(+), 1 deletion(-) diff --git a/charts/theia-appdefinitions/values.yaml b/charts/theia-appdefinitions/values.yaml index e978de9..07a895d 100644 --- a/charts/theia-appdefinitions/values.yaml +++ b/charts/theia-appdefinitions/values.yaml @@ -44,6 +44,18 @@ apps: dataBridgeEnabled: "true" dataBridgePort: "16281" + - name: c-templates-latest + image: ghcr.io/eduide/eduide/c-templates + # imageTag: latest # Optional: override defaultImageTag for this app + requestsMemory: 500M + requestsCpu: 200m + limitsMemory: 2400M + minInstances: 0 + maxInstances: 1000 + options: + dataBridgeEnabled: "true" + dataBridgePort: "16281" + - name: javascript-latest image: ghcr.io/eduide/eduide/javascript # imageTag: latest # Optional: override defaultImageTag for this app diff --git a/charts/theia-cloud-combined/values.yaml b/charts/theia-cloud-combined/values.yaml index 83425e9..45c8f76 100644 --- a/charts/theia-cloud-combined/values.yaml +++ b/charts/theia-cloud-combined/values.yaml @@ -83,6 +83,7 @@ theia-cloud: - ghcr.io/eduide/eduide/java-17:latest - ghcr.io/eduide/eduide/java-17-templates:latest - ghcr.io/eduide/eduide/c:latest + - ghcr.io/eduide/eduide/c-templates:latest - ghcr.io/eduide/eduide/javascript:latest - ghcr.io/eduide/eduide/ocaml:latest - ghcr.io/eduide/eduide/rust:latest @@ -121,6 +122,14 @@ theia-cloud: label: Gradle c-latest: label: C + visible: false + c-templates-latest: + label: C + buildSystems: + - id: bazel + label: Bazel + - id: make + label: Make javascript-latest: label: Javascript ocaml-latest: diff --git a/deployments/shared-gateway/values.yaml b/deployments/shared-gateway/values.yaml index a057332..a97883c 100644 --- a/deployments/shared-gateway/values.yaml +++ b/deployments/shared-gateway/values.yaml @@ -63,3 +63,69 @@ gateway: - name: staging-webview hostname: "*.webview.instance.theia-staging.artemis.cit.tum.de" tlsSecretName: static-theia-cert + + # ACME HTTP-01 challenges (Let's Encrypt visits these on port 80) + - name: acme-test1-landing + protocol: HTTP + port: 80 + hostname: test1.theia-test.artemis.cit.tum.de + - name: acme-test1-service + protocol: HTTP + port: 80 + hostname: service.test1.theia-test.artemis.cit.tum.de + - name: acme-test1-instances + protocol: HTTP + port: 80 + hostname: instance.test1.theia-test.artemis.cit.tum.de + + - name: acme-test2-landing + protocol: HTTP + port: 80 + hostname: test2.theia-test.artemis.cit.tum.de + - name: acme-test2-service + protocol: HTTP + port: 80 + hostname: service.test2.theia-test.artemis.cit.tum.de + - name: acme-test2-instances + protocol: HTTP + port: 80 + hostname: instance.test2.theia-test.artemis.cit.tum.de + - name: acme-test2-cache + protocol: HTTP + port: 80 + hostname: cache.test2.theia-test.artemis.cit.tum.de + - name: acme-test2-repo + protocol: HTTP + port: 80 + hostname: repo.test2.theia-test.artemis.cit.tum.de + + - name: acme-test3-landing + protocol: HTTP + port: 80 + hostname: test3.theia-test.artemis.cit.tum.de + - name: acme-test3-service + protocol: HTTP + port: 80 + hostname: service.test3.theia-test.artemis.cit.tum.de + - name: acme-test3-instances + protocol: HTTP + port: 80 + hostname: instance.test3.theia-test.artemis.cit.tum.de + + - name: acme-staging-landing + protocol: HTTP + port: 80 + hostname: theia-staging.artemis.cit.tum.de + - name: acme-staging-service + protocol: HTTP + port: 80 + hostname: service.theia-staging.artemis.cit.tum.de + - name: acme-staging-instances + protocol: HTTP + port: 80 + hostname: instance.theia-staging.artemis.cit.tum.de + +gatewayAcmeIssuer: + enabled: true + name: letsencrypt-prod-gateway + email: ls1.itg@in.tum.de \ No newline at end of file diff --git a/deployments/test2.theia-test.artemis.cit.tum.de/values.yaml b/deployments/test2.theia-test.artemis.cit.tum.de/values.yaml index 89c0ad3..2bd3839 100644 --- a/deployments/test2.theia-test.artemis.cit.tum.de/values.yaml +++ b/deployments/test2.theia-test.artemis.cit.tum.de/values.yaml @@ -116,8 +116,13 @@ theia-cloud: label: Maven - id: gradle label: Gradle - c-latest: + c-templates-latest: label: C + buildSystems: + - id: bazel + label: Bazel + - id: make + label: Make javascript-latest: label: Javascript ocaml-latest: From d1ffed715b22851ea539f802070d7dd047f5ec53 Mon Sep 17 00:00:00 2001 From: = Date: Fri, 22 May 2026 22:28:54 +0200 Subject: [PATCH 2/7] fix pipeline image index --- .github/workflows/deploy-theia.yml | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/.github/workflows/deploy-theia.yml b/.github/workflows/deploy-theia.yml index 23d737b..c3b54dd 100644 --- a/.github/workflows/deploy-theia.yml +++ b/.github/workflows/deploy-theia.yml @@ -387,15 +387,16 @@ jobs: --set "theia-cloud.preloading.images[1]=ghcr.io/eduide/eduide/java-17:${IDE_IMAGES_TAG}" --set "theia-cloud.preloading.images[2]=ghcr.io/eduide/eduide/java-17-templates:${IDE_IMAGES_TAG}" --set "theia-cloud.preloading.images[3]=ghcr.io/eduide/eduide/c:${IDE_IMAGES_TAG}" - --set "theia-cloud.preloading.images[4]=ghcr.io/eduide/eduide/javascript:${IDE_IMAGES_TAG}" - --set "theia-cloud.preloading.images[5]=ghcr.io/eduide/eduide/ocaml:${IDE_IMAGES_TAG}" - --set "theia-cloud.preloading.images[6]=ghcr.io/eduide/eduide/rust:${IDE_IMAGES_TAG}" - --set "theia-cloud.preloading.images[7]=ghcr.io/eduide/eduide/python:${IDE_IMAGES_TAG}" + --set "theia-cloud.preloading.images[4]=ghcr.io/eduide/eduide/c-templates:${IDE_IMAGES_TAG}" + --set "theia-cloud.preloading.images[5]=ghcr.io/eduide/eduide/javascript:${IDE_IMAGES_TAG}" + --set "theia-cloud.preloading.images[6]=ghcr.io/eduide/eduide/ocaml:${IDE_IMAGES_TAG}" + --set "theia-cloud.preloading.images[7]=ghcr.io/eduide/eduide/rust:${IDE_IMAGES_TAG}" + --set "theia-cloud.preloading.images[8]=ghcr.io/eduide/eduide/python:${IDE_IMAGES_TAG}" # Intentionally override no-ls + langserver preload images globally when IDE tag is overridden. - --set "theia-cloud.preloading.images[8]=ghcr.io/eduide/eduide/java-17-no-ls:${IDE_IMAGES_TAG}" - --set "theia-cloud.preloading.images[9]=ghcr.io/eduide/eduide/rust-no-ls:${IDE_IMAGES_TAG}" - --set "theia-cloud.preloading.images[10]=ghcr.io/eduide/eduide/langserver-java:${IDE_IMAGES_TAG}" - --set "theia-cloud.preloading.images[11]=ghcr.io/eduide/eduide/langserver-rust:${IDE_IMAGES_TAG}" + --set "theia-cloud.preloading.images[9]=ghcr.io/eduide/eduide/java-17-no-ls:${IDE_IMAGES_TAG}" + --set "theia-cloud.preloading.images[10]=ghcr.io/eduide/eduide/rust-no-ls:${IDE_IMAGES_TAG}" + --set "theia-cloud.preloading.images[11]=ghcr.io/eduide/eduide/langserver-java:${IDE_IMAGES_TAG}" + --set "theia-cloud.preloading.images[12]=ghcr.io/eduide/eduide/langserver-rust:${IDE_IMAGES_TAG}" --set theia-appdefinitions.defaultImageTag="${IDE_IMAGES_TAG}" ) fi From 70e6ef24cac9056cf8d9a3ec7b08d9948d1cf407 Mon Sep 17 00:00:00 2001 From: = Date: Fri, 22 May 2026 22:30:41 +0200 Subject: [PATCH 3/7] temp remove acme gateway --- deployments/shared-gateway/values.yaml | 66 +------------------------- 1 file changed, 1 insertion(+), 65 deletions(-) diff --git a/deployments/shared-gateway/values.yaml b/deployments/shared-gateway/values.yaml index a97883c..c230590 100644 --- a/deployments/shared-gateway/values.yaml +++ b/deployments/shared-gateway/values.yaml @@ -64,68 +64,4 @@ gateway: hostname: "*.webview.instance.theia-staging.artemis.cit.tum.de" tlsSecretName: static-theia-cert - # ACME HTTP-01 challenges (Let's Encrypt visits these on port 80) - - name: acme-test1-landing - protocol: HTTP - port: 80 - hostname: test1.theia-test.artemis.cit.tum.de - - name: acme-test1-service - protocol: HTTP - port: 80 - hostname: service.test1.theia-test.artemis.cit.tum.de - - name: acme-test1-instances - protocol: HTTP - port: 80 - hostname: instance.test1.theia-test.artemis.cit.tum.de - - - name: acme-test2-landing - protocol: HTTP - port: 80 - hostname: test2.theia-test.artemis.cit.tum.de - - name: acme-test2-service - protocol: HTTP - port: 80 - hostname: service.test2.theia-test.artemis.cit.tum.de - - name: acme-test2-instances - protocol: HTTP - port: 80 - hostname: instance.test2.theia-test.artemis.cit.tum.de - - name: acme-test2-cache - protocol: HTTP - port: 80 - hostname: cache.test2.theia-test.artemis.cit.tum.de - - name: acme-test2-repo - protocol: HTTP - port: 80 - hostname: repo.test2.theia-test.artemis.cit.tum.de - - - name: acme-test3-landing - protocol: HTTP - port: 80 - hostname: test3.theia-test.artemis.cit.tum.de - - name: acme-test3-service - protocol: HTTP - port: 80 - hostname: service.test3.theia-test.artemis.cit.tum.de - - name: acme-test3-instances - protocol: HTTP - port: 80 - hostname: instance.test3.theia-test.artemis.cit.tum.de - - - name: acme-staging-landing - protocol: HTTP - port: 80 - hostname: theia-staging.artemis.cit.tum.de - - name: acme-staging-service - protocol: HTTP - port: 80 - hostname: service.theia-staging.artemis.cit.tum.de - - name: acme-staging-instances - protocol: HTTP - port: 80 - hostname: instance.theia-staging.artemis.cit.tum.de - -gatewayAcmeIssuer: - enabled: true - name: letsencrypt-prod-gateway - email: ls1.itg@in.tum.de \ No newline at end of file + \ No newline at end of file From f6a4e259aa4ca74cdcbd8b81f272cf07655b6d40 Mon Sep 17 00:00:00 2001 From: = Date: Sat, 23 May 2026 12:06:43 +0200 Subject: [PATCH 4/7] add c templates image to preloading --- .github/workflows/deploy-theia.yml | 4 ++-- deployments/test1.theia-test.artemis.cit.tum.de/values.yaml | 1 + deployments/test2.theia-test.artemis.cit.tum.de/values.yaml | 1 + deployments/test3.theia-test.artemis.cit.tum.de/values.yaml | 1 + 4 files changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/workflows/deploy-theia.yml b/.github/workflows/deploy-theia.yml index c3b54dd..0b255f8 100644 --- a/.github/workflows/deploy-theia.yml +++ b/.github/workflows/deploy-theia.yml @@ -380,8 +380,8 @@ jobs: fi # Only override IDE images when a tag is explicitly provided. - # Indices 0 (landing) and 1-11 (IDE + no-ls + langserver preload) are set above / here. - # Index 12 is oauth2-proxy (distroless); keep it only in values.yaml so it is never replaced by a string override. + # Indices 0 (landing) and 1-12 (IDE + no-ls + langserver preload) are set above / here. + # Index 13 is oauth2-proxy (distroless); keep it only in values.yaml so it is never replaced by a string override. if [ -n "${IDE_IMAGES_TAG}" ]; then HELM_CMD+=( --set "theia-cloud.preloading.images[1]=ghcr.io/eduide/eduide/java-17:${IDE_IMAGES_TAG}" diff --git a/deployments/test1.theia-test.artemis.cit.tum.de/values.yaml b/deployments/test1.theia-test.artemis.cit.tum.de/values.yaml index 66e8ce3..86e7c30 100644 --- a/deployments/test1.theia-test.artemis.cit.tum.de/values.yaml +++ b/deployments/test1.theia-test.artemis.cit.tum.de/values.yaml @@ -80,6 +80,7 @@ theia-cloud: - ghcr.io/eduide/eduide/java-17:latest - ghcr.io/eduide/eduide/java-17-templates:latest - ghcr.io/eduide/eduide/c:latest + - ghcr.io/eduide/eduide/c-templates:latest - ghcr.io/eduide/eduide/javascript:latest - ghcr.io/eduide/eduide/ocaml:latest - ghcr.io/eduide/eduide/rust:latest diff --git a/deployments/test2.theia-test.artemis.cit.tum.de/values.yaml b/deployments/test2.theia-test.artemis.cit.tum.de/values.yaml index 2bd3839..f79608b 100644 --- a/deployments/test2.theia-test.artemis.cit.tum.de/values.yaml +++ b/deployments/test2.theia-test.artemis.cit.tum.de/values.yaml @@ -80,6 +80,7 @@ theia-cloud: - ghcr.io/eduide/eduide/java-17:latest - ghcr.io/eduide/eduide/java-17-templates:latest - ghcr.io/eduide/eduide/c:latest + - ghcr.io/eduide/eduide/c-templates:latest - ghcr.io/eduide/eduide/javascript:latest - ghcr.io/eduide/eduide/ocaml:latest - ghcr.io/eduide/eduide/rust:latest diff --git a/deployments/test3.theia-test.artemis.cit.tum.de/values.yaml b/deployments/test3.theia-test.artemis.cit.tum.de/values.yaml index aa3b9db..16ecf3d 100644 --- a/deployments/test3.theia-test.artemis.cit.tum.de/values.yaml +++ b/deployments/test3.theia-test.artemis.cit.tum.de/values.yaml @@ -88,6 +88,7 @@ theia-cloud: - ghcr.io/eduide/eduide/java-17:latest - ghcr.io/eduide/eduide/java-17-templates:latest - ghcr.io/eduide/eduide/c:latest + - ghcr.io/eduide/eduide/c-templates:latest - ghcr.io/eduide/eduide/javascript:latest - ghcr.io/eduide/eduide/ocaml:latest - ghcr.io/eduide/eduide/rust:latest From 4396513241dc3c531a660e2076f0fb2510927403 Mon Sep 17 00:00:00 2001 From: = Date: Sat, 23 May 2026 12:08:43 +0200 Subject: [PATCH 5/7] Remove white spaces --- deployments/shared-gateway/values.yaml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/deployments/shared-gateway/values.yaml b/deployments/shared-gateway/values.yaml index c230590..42aec39 100644 --- a/deployments/shared-gateway/values.yaml +++ b/deployments/shared-gateway/values.yaml @@ -62,6 +62,4 @@ gateway: tlsSecretName: shared-theia-cert - name: staging-webview hostname: "*.webview.instance.theia-staging.artemis.cit.tum.de" - tlsSecretName: static-theia-cert - - \ No newline at end of file + tlsSecretName: static-theia-cert \ No newline at end of file From caa635dacfb9d8e2777dd61dd4ee12c7e8bcb90c Mon Sep 17 00:00:00 2001 From: = Date: Fri, 29 May 2026 11:18:53 +0200 Subject: [PATCH 6/7] update all test envs and staging to use c templates --- .../values.yaml | 12 ++++- .../values.yaml | 7 ++- .../values.yaml | 4 +- .../values.yaml | 44 +++++++++++-------- 4 files changed, 43 insertions(+), 24 deletions(-) diff --git a/deployments/test1.theia-test.artemis.cit.tum.de/values.yaml b/deployments/test1.theia-test.artemis.cit.tum.de/values.yaml index 86e7c30..7158670 100644 --- a/deployments/test1.theia-test.artemis.cit.tum.de/values.yaml +++ b/deployments/test1.theia-test.artemis.cit.tum.de/values.yaml @@ -72,8 +72,8 @@ theia-cloud: # name: service-admin-api-token # key: ADMIN_API_TOKEN - # Preload list indices 0–11 must match deploy-theia.yml --set overrides when tags are passed. - # Index 12 is oauth2-proxy (distroless); the workflow does not override it. + # Preload list indices 0–12 must match deploy-theia.yml --set overrides when tags are passed. + # Index 13 is oauth2-proxy (distroless); the workflow does not override it. preloading: images: - ghcr.io/eduide/eduidec-landing-page:latest @@ -119,6 +119,14 @@ theia-cloud: label: Gradle c-latest: label: C + visible: false + c-templates-latest: + label: C + buildSystems: + - id: bazel + label: Bazel + - id: make + label: Make javascript-latest: label: Javascript ocaml-latest: diff --git a/deployments/test2.theia-test.artemis.cit.tum.de/values.yaml b/deployments/test2.theia-test.artemis.cit.tum.de/values.yaml index f79608b..1481a3a 100644 --- a/deployments/test2.theia-test.artemis.cit.tum.de/values.yaml +++ b/deployments/test2.theia-test.artemis.cit.tum.de/values.yaml @@ -72,8 +72,8 @@ theia-cloud: # name: service-admin-api-token # key: ADMIN_API_TOKEN - # Preload list indices 0–11 must match deploy-theia.yml --set overrides when tags are passed. - # Index 12 is oauth2-proxy (distroless); the workflow does not override it. + # Preload list indices 0–12 must match deploy-theia.yml --set overrides when tags are passed. + # Index 13 is oauth2-proxy (distroless); the workflow does not override it. preloading: images: - ghcr.io/eduide/eduidec-landing-page:latest @@ -117,6 +117,9 @@ theia-cloud: label: Maven - id: gradle label: Gradle + c-latest: + label: C + visible: false c-templates-latest: label: C buildSystems: diff --git a/deployments/test3.theia-test.artemis.cit.tum.de/values.yaml b/deployments/test3.theia-test.artemis.cit.tum.de/values.yaml index 16ecf3d..080ae55 100644 --- a/deployments/test3.theia-test.artemis.cit.tum.de/values.yaml +++ b/deployments/test3.theia-test.artemis.cit.tum.de/values.yaml @@ -80,8 +80,8 @@ theia-cloud: name: service-admin-api-token key: ADMIN_API_TOKEN - # Preload list indices 0–11 must match deploy-theia.yml --set overrides when tags are passed. - # Index 12 is oauth2-proxy (distroless); the workflow does not override it. + # Preload list indices 0–12 must match deploy-theia.yml --set overrides when tags are passed. + # Index 13 is oauth2-proxy (distroless); the workflow does not override it. preloading: images: - ghcr.io/eduide/eduidec-landing-page:latest diff --git a/deployments/theia-staging.artemis.cit.tum.de/values.yaml b/deployments/theia-staging.artemis.cit.tum.de/values.yaml index 8a23713..b56efcd 100644 --- a/deployments/theia-staging.artemis.cit.tum.de/values.yaml +++ b/deployments/theia-staging.artemis.cit.tum.de/values.yaml @@ -57,7 +57,7 @@ theia-cloud: interval: 3 operator: - image: ghcr.io/eduide/eduide-cloud/operator:2026-05-05 + image: ghcr.io/eduide/eduide-cloud/operator:latest sentry: enable: true #eagerStart: false @@ -66,29 +66,29 @@ theia-cloud: storageClassName: csi-rbd-sc service: - image: ghcr.io/eduide/eduide-cloud/service:2026-05-05 + image: ghcr.io/eduide/eduide-cloud/service:latest sentry: enable: true adminApiTokenSecret: name: service-admin-api-token key: ADMIN_API_TOKEN - # Preload list indices 0–11 must match deploy-theia.yml --set overrides when tags are passed. - # Index 12 is oauth2-proxy (distroless); the workflow does not override it. + # Preload list indices 0–12 must match deploy-theia.yml --set overrides when tags are passed. + # Index 13 is oauth2-proxy (distroless); the workflow does not override it. preloading: images: - - ghcr.io/eduide/eduidec-landing-page:2026-05-05 - - ghcr.io/eduide/eduide/java-17:2026-05-05 - - ghcr.io/eduide/eduide/java-17-templates:2026-05-05 - - ghcr.io/eduide/eduide/c:2026-05-05 - - ghcr.io/eduide/eduide/javascript:2026-05-05 - - ghcr.io/eduide/eduide/ocaml:2026-05-05 - - ghcr.io/eduide/eduide/rust:2026-05-05 - - ghcr.io/eduide/eduide/python:2026-05-05 - - ghcr.io/eduide/eduide/java-17-no-ls:2026-05-05 - - ghcr.io/eduide/eduide/rust-no-ls:2026-05-05 - - ghcr.io/eduide/eduide/langserver-java:2026-05-05 - - ghcr.io/eduide/eduide/langserver-rust:2026-05-05 + - ghcr.io/eduide/eduidec-landing-page:latest + - ghcr.io/eduide/eduide/java-17:latest + - ghcr.io/eduide/eduide/java-17-templates: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:latest + - ghcr.io/eduide/eduide/rust-no-ls:latest + - ghcr.io/eduide/eduide/langserver-java:latest + - ghcr.io/eduide/eduide/langserver-rust:latest - image: quay.io/oauth2-proxy/oauth2-proxy:v7.12.0 args: ["--version"] @@ -100,7 +100,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 - image: ghcr.io/eduide/eduidec-landing-page:2026-05-05 + image: ghcr.io/eduide/eduidec-landing-page:latest sentry: enable: true logoFileExtension: "png" @@ -120,6 +120,14 @@ theia-cloud: label: Gradle c-latest: label: C + visible: false + c-templates-latest: + label: C + buildSystems: + - id: bazel + label: Bazel + - id: make + label: Make javascript-latest: label: Javascript ocaml-latest: @@ -160,7 +168,7 @@ theia-cloud: clientId: "theia-staging" theia-appdefinitions: - defaultImageTag: "2026-05-05" + defaultImageTag: "latest" monitoring: targetNamespaces: From 2d0b0fc15b53ba7bc87bfc13e2e82c03a3dad49f Mon Sep 17 00:00:00 2001 From: = Date: Mon, 1 Jun 2026 10:46:07 +0200 Subject: [PATCH 7/7] Add c templates preloading --- deployments/theia-staging.artemis.cit.tum.de/values.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/deployments/theia-staging.artemis.cit.tum.de/values.yaml b/deployments/theia-staging.artemis.cit.tum.de/values.yaml index b56efcd..e94aa30 100644 --- a/deployments/theia-staging.artemis.cit.tum.de/values.yaml +++ b/deployments/theia-staging.artemis.cit.tum.de/values.yaml @@ -81,6 +81,7 @@ theia-cloud: - ghcr.io/eduide/eduide/java-17:latest - ghcr.io/eduide/eduide/java-17-templates:latest - ghcr.io/eduide/eduide/c:latest + - ghcr.io/eduide/eduide/c-templates:latest - ghcr.io/eduide/eduide/javascript:latest - ghcr.io/eduide/eduide/ocaml:latest - ghcr.io/eduide/eduide/rust:latest