- Updated: March 20, 2026
- 3 min read
End‑to‑End CI/CD for the OpenClaw Full‑Stack Template
Why CI/CD matters for self‑hosted AI assistants
With the recent hype around AI agents, developers are racing to ship reliable, self‑hosted assistants. In a world where a broken deployment can halt an entire AI workflow, automated pipelines become the safety net that guarantees consistency, repeatability, and rapid iteration.
Overview
This guide walks you through setting up a complete CI/CD pipeline for the OpenClaw Rating API Edge template – a one‑click‑deploy solution for the OpenClaw full‑stack. We’ll cover:
- GitHub Actions workflow
- Docker image build & push
- Automated tests (unit & integration)
- Deployment to UBOS
Prerequisites
- A GitHub repository containing the OpenClaw template
- Docker Hub (or any container registry) account
- UBOS instance with SSH access and the
ubosCLI installed - Basic knowledge of YAML and shell scripting
1. GitHub Actions workflow
Create .github/workflows/ci-cd.yml in your repo:
name: CI/CD Pipeline
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
build-test-deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
# ---- Docker Build ----
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Log in to Docker Hub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Build and push Docker image
uses: docker/build-push-action@v4
with:
context: .
push: true
tags: ${{ secrets.DOCKER_USERNAME }}/openclaw-rating-api:${{ github.sha }}
# ---- Run Tests ----
- name: Run unit tests
run: |
npm ci
npm test
# ---- Deploy to UBOS ----
- name: Deploy to UBOS
env:
UBOS_HOST: ${{ secrets.UBOS_HOST }}
UBOS_USER: ${{ secrets.UBOS_USER }}
UBOS_KEY: ${{ secrets.UBOS_SSH_KEY }}
run: |
ssh -i $UBOS_KEY $UBOS_USER@$UBOS_HOST "ubos app deploy openclaw-rating-api ${{ secrets.DOCKER_USERNAME }}/openclaw-rating-api:${{ github.sha }}"
This workflow triggers on every push to main, builds a Docker image, runs your test suite, and finally deploys the new image to UBOS.
2. Dockerfile (quick reminder)
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY . .
EXPOSE 3000
CMD ["npm", "start"]
3. Automated Tests
Place your tests under a test/ directory and use a framework like Jest or Mocha. Example npm test script in package.json:
"scripts": {
"test": "jest --coverage"
}
4. Deploying to UBOS
UBOS makes deployment painless – just push the Docker tag and UBOS pulls the image. For more details on hosting OpenClaw, see our step‑by‑step guide.
Conclusion
By automating the entire lifecycle—from code commit to production deployment—you eliminate manual errors, accelerate feature delivery, and keep your AI‑agent services reliable. The CI/CD pipeline described here is a solid foundation you can extend with linting, security scans, or blue‑green deployments as your needs evolve.
Happy coding!