CI/CD on Zerops
Zerops supports GitHub/GitLab webhook triggers (new tag or push to branch) and GitHub Actions / GitLab CI via zcli push with an access token.
GitHub Integration (Webhook)
Setup (GUI)
- Service detail → Build, Deploy, Run Pipeline Settings
- Connect with GitHub repository
- Select repo + authorize (requires full access for webhooks)
- Choose trigger: New tag (optional regex filter) or Push to branch
GitHub Actions
access-token: From Settings → Access Token Managementservice-id: From service URL or three-dot menu → Copy Service ID- The compact
zeropsio/actionswrapper exposes onlyaccess-token/service-id— it cannot pass--setup. For a multi-setupzerops.yaml, install zcli and runzcli push --service-id "${{ secrets.ZEROPS_SERVICE_ID }}" --setup <name>instead
GitLab Integration (Webhook)
Setup (GUI)
- Service detail → Build, Deploy, Run Pipeline Settings
- Connect with GitLab repository
- Authorize (requires full access for webhooks)
- Choose trigger: New tag (optional regex) or Push to branch
Skip Pipeline
Include [ci skip] or [skip ci] (with the square brackets) in the commit message (case-insensitive).
Disconnect
Service detail → Build, Deploy, Run → Stop automatic build trigger.
Gotchas
- External/CI deploys leave ZCP unaware: a webhook or CI
zcli pushdoes not record the deploy in ZCP local state — the service stays atdeployState=never-deployed. Bridge it withzerops_workflow action="record-deploy" targetService="<hostname>"when you return to the ZCP develop flow
GitLab CI
Generic CI (Any System)
Any CI system with shell access can deploy via zcli push:
- Install zcli:
curl -L https://zerops.io/zcli/install.sh | sh - Authenticate:
zcli login <access-token> - Deploy:
zcli push --project-id <id> --service-id <id>
zcli push key flags
| Flag | Description |
|---|---|
--project-id | Target project ID |
--service-id | Target service ID |
--setup | zerops.yml setup name (if different from service hostname) |
--version-name | Custom version label (e.g. git tag) |
--workspace-state | all (default), clean (git clean), staged (staged only) |
--no-git | Deploy without git context |
--deploy-git-folder | Include .git/ directory in deploy |