This repository deploys Theia Cloud through three GitHub Actions entrypoints that all call the reusable deploy-theia.yml workflow.
- Workflow:
deploy-pr.yml - Trigger: pull requests (
opened,synchronize,reopened) and manualworkflow_dispatch - Targets:
test1,test2,test3 - Manual inputs:
theia_cloud_taglanding_page_tagide_images_tagexecution_modehelm_chart_tagclean_install
clean_install now defaults to true for manual PR deployments.
- Workflow:
deploy-staging.yml - Trigger: push to
mainand manualworkflow_dispatch - Target:
theia-staging - Manual inputs:
execution_modeclean_install
- Workflow:
deploy-production.yml - Trigger: manual
workflow_dispatch - Target:
theia-prod - Manual inputs:
execution_modeclean_install
Selects which runner backend executes the deployment:
self-hosted-buildkitgithub-runners
When enabled, the reusable deployment workflow performs a namespace-scoped cleanup before Helm install:
- deletes session and workspace resources
- deletes AppDefinitions
- deletes deployments, daemonsets, and statefulsets
- waits for pods to terminate
- deletes PVCs
Use this when you need a clean rollout and are prepared to remove the namespace-local runtime state.
Staging and production now intentionally pin several images to SHA-suffixed tags instead of floating on plain latest. A release therefore requires updating the short SHA suffix in the deployment values files.
For staging:
deployments/theia-staging.artemis.cit.tum.de/values.yamldeployments/theia-staging.artemis.cit.tum.de/theia-crds-helm-values.yml
For production:
deployments/theia.artemis.cit.tum.de/values.yamldeployments/theia.artemis.cit.tum.de/theia-crds-helm-values.yml
In each environment values.yaml:
theia-cloud.operator.imagetheia-cloud.service.imagetheia-cloud.preloading.images[0..10]theia-cloud.landingPage.imagetheia-appdefinitions.defaultImageTag
In each environment theia-crds-helm-values.yml:
conversion.image
There are currently three image families with separate tag suffixes:
- Theia Cloud control-plane images:
operatorserviceconversion-webhook
- Landing page images:
theia-cloud.landingPage.imagetheia-cloud.preloading.images[0]
- IDE and language-server images:
theia-cloud.preloading.images[1..10]theia-appdefinitions.defaultImageTag
If a new release publishes a new short SHA for one of those families, update every field in that family in both staging and production before merging.
- Confirm the published image tags in GHCR.
- Update staging and production values files with the new short SHA suffixes.
- Keep
theia-cloud.landingPage.imageandtheia-cloud.preloading.images[0]in sync. - Keep
theia-cloud.preloading.images[1..10]andtheia-appdefinitions.defaultImageTagin sync. - Keep
operator,service, andconversion.imagein sync when rolling a new control-plane build. - If test environments should stop using a PR-specific conversion webhook, update their
theia-crds-helm-values.ymlfiles as well. - Validate the edited YAML files before opening the PR.
Example validation:
ruby -e 'require "yaml"; %w[
.github/workflows/deploy-pr.yml
.github/workflows/deploy-staging.yml
.github/workflows/deploy-production.yml
deployments/theia-staging.artemis.cit.tum.de/values.yaml
deployments/theia-staging.artemis.cit.tum.de/theia-crds-helm-values.yml
deployments/theia.artemis.cit.tum.de/values.yaml
deployments/theia.artemis.cit.tum.de/theia-crds-helm-values.yml
].each { |f| YAML.load_file(f); puts "OK #{f}" }'- PR workflows can temporarily override image tags with workflow inputs, so you do not need to edit committed values files for preview deployments.
- Staging and production use committed values files as the source of truth, so release tag bumps must happen in git.