- Updated: March 21, 2026
- 4 min read
Managing Multi‑Environment Deployments with OpenClaw and UBOS: A GitOps Guide
Managing Multi‑Environment Deployments with OpenClaw and UBOS: A GitOps Guide
Deploying modern applications across development, staging, and production environments can quickly become a complex, error‑prone process. With OpenClaw’s one‑click‑deploy GitHub template and UBOS’s streamlined hosting platform, you can automate the entire workflow using GitOps principles. This guide walks you through setting up each environment, configuring environment‑specific settings, wiring CI/CD pipelines, and leveraging UBOS hosting to keep everything simple and repeatable.
Prerequisites
- GitHub account with access to the
openclaw/one‑click‑deploytemplate. - UBOS account (sign‑up at UBOS hosting for OpenClaw).
- Basic knowledge of Docker, Kubernetes, and Git.
- CI runner (GitHub Actions, GitLab CI, or any Docker‑compatible runner).
1. Clone the One‑Click‑Deploy Template
Start by generating a repository from the OpenClaw template. The template includes a docker-compose.yml for local development, Helm charts for Kubernetes, and a .github/workflows directory with CI pipelines.
git clone https://github.com/openclaw/one-click-deploy.git my‑project
cd my‑project
2. Set Up the Development Environment
For rapid iteration, run the Docker Compose stack locally:
docker compose up -d
Configure environment variables in .env.dev. Typical entries include:
APP_ENV=development
DB_HOST=localhost
DB_USER=dev_user
DB_PASS=dev_pass
These values are loaded by the Docker Compose file, ensuring developers work against an isolated, reproducible stack.
3. Create Staging and Production Configurations
Both environments use the same Helm chart but with different values.yaml files. Create values-staging.yaml and values-prod.yaml in the helm/ directory.
# values-staging.yaml
replicaCount: 2
image:
tag: "${{ github.sha }}"
env:
- name: APP_ENV
value: "staging"
- name: DB_HOST
value: "staging-db.my‑project.svc.cluster.local"
# values-prod.yaml
replicaCount: 4
image:
tag: "${{ github.sha }}"
env:
- name: APP_ENV
value: "production"
- name: DB_HOST
value: "prod-db.my‑project.svc.cluster.local"
These files keep the infrastructure definition identical while allowing environment‑specific overrides.
4. Wire CI/CD Pipelines (GitHub Actions)
The template ships with three workflows:
ci.yml– builds the Docker image and runs unit tests on every push.deploy‑staging.yml– triggers on pushes to thestagingbranch, runshelm upgradewithvalues-staging.yaml.deploy‑prod.yml– triggers on tags (e.g.,v1.0.0) and deploys usingvalues-prod.yaml.
Example snippet from deploy‑staging.yml:
name: Deploy to Staging
on:
push:
branches: [ staging ]
jobs:
helm-deploy:
runs-on: ubuntu‑latest
steps:
- uses: actions/checkout@v3
- name: Set up Kubeconfig
run: echo "$KUBE_CONFIG" > $HOME/.kube/config
env:
KUBE_CONFIG: ${{ secrets.KUBE_CONFIG_STAGING }}
- name: Deploy with Helm
run: |
helm upgrade --install openclaw ./helm \
-f ./helm/values.yaml \
-f ./helm/values-staging.yaml \
--namespace staging
Store the Kubernetes kubeconfig for each environment as GitHub secrets (KUBE_CONFIG_STAGING, KUBE_CONFIG_PROD).
5. Deploy to UBOS Hosting (host‑openclaw)
UBOS abstracts away the underlying Kubernetes cluster. After linking your GitHub repository to UBOS, the platform automatically creates the required namespaces, secrets, and ingress rules. All you need to do is push your code – UBOS will pick up the GitHub Action artifacts and run the Helm upgrade in the appropriate environment.
This tight integration means you never have to manually manage TLS certificates, load balancers, or VM provisioning. UBOS’s host‑openclaw service handles the heavy lifting, letting you focus on application logic.
6. Verify the Deployments
After each pipeline runs, you can verify the deployment via the UBOS dashboard or by curling the endpoint:
# Development (local)
curl http://localhost:8080/health
# Staging
curl https://staging.my‑project.ubos.tech/health
# Production
curl https://my‑project.ubos.tech/health
All environments should return a JSON payload with {"status":"ok"} and the correct APP_ENV value.
Conclusion
By combining OpenClaw’s one‑click‑deploy template with UBOS’s managed hosting, you get a fully automated GitOps workflow that scales from a single developer machine to a production‑grade multi‑environment deployment. The only thing you need to maintain is your code – the rest is handled by CI/CD pipelines and UBOS’s platform.
Happy deploying!