Pipeline Integration
Trigger a Clonio cloning run from any CI/CD pipeline using a single POST request with curl or wget.
Every cloning configuration exposes a unique trigger URL. Sending a POST request to that URL starts a cloning run immediately — no special tooling, no SDK required. A plain curl or wget call is all you need.
The Trigger URL
You can find your trigger URL in the cloning configuration detail view. It looks like this:
https://<your-clonio-instance>/api/trigger/5f23fcede47385479ab59ca4e5d5de978911658fcd677480dce13076fe40f75c
The long token at the end is unique per configuration and acts as its authentication credential. Keep it secret — anyone with the URL can trigger a run.
A successful POST returns HTTP 200 and starts the cloning run asynchronously. You can monitor progress in the Executions view or via the audit log.
GitHub Actions
name: Clone production DB to staging
on:
push:
branches:
- main
jobs:
clone-database:
runs-on: ubuntu-latest
steps:
- name: Trigger Clonio cloning run
run: |
curl --fail --silent --show-error --request POST \
"https://<your-clonio-instance>/api/trigger/${{ secrets.CLONIO_TRIGGER_TOKEN }}"
Store the token part of your trigger URL as a GitHub Actions secret named CLONIO_TRIGGER_TOKEN.
GitLab CI
stages:
- deploy
- clone-db
clone-database:
stage: clone-db
image: alpine
before_script:
- apk add --no-cache curl
script:
- curl --fail --silent --show-error --request POST
"https://<your-clonio-instance>/api/trigger/$CLONIO_TRIGGER_TOKEN"
only:
- main
Add CLONIO_TRIGGER_TOKEN as a CI/CD variable in your GitLab project settings (Settings → CI/CD → Variables).
Jenkins
Add a shell build step or a pipeline stage to your Jenkinsfile:
pipeline {
agent any
stages {
stage('Clone database') {
steps {
withCredentials([string(credentialsId: 'clonio-trigger-token', variable: 'CLONIO_TRIGGER_TOKEN')]) {
sh '''
curl --fail --silent --show-error --request POST \
"https://<your-clonio-instance>/api/trigger/${CLONIO_TRIGGER_TOKEN}"
'''
}
}
}
}
}
Store the token in Jenkins Credentials (Manage Jenkins → Credentials) as a Secret text entry with the ID clonio-trigger-token.
CircleCI
version: 2.1
jobs:
clone-database:
docker:
- image: cimg/base:stable
steps:
- run:
name: Trigger Clonio cloning run
command: |
curl --fail --silent --show-error --request POST \
"https://<your-clonio-instance>/api/trigger/${CLONIO_TRIGGER_TOKEN}"
workflows:
deploy-and-clone:
jobs:
- clone-database:
filters:
branches:
only: main
Add CLONIO_TRIGGER_TOKEN as an environment variable in your CircleCI project settings (Project Settings → Environment Variables).
Bitbucket Pipelines
pipelines:
branches:
main:
- step:
name: Trigger Clonio cloning run
image: alpine
script:
- apk add --no-cache curl
- curl --fail --silent --show-error --request POST
"https://<your-clonio-instance>/api/trigger/$CLONIO_TRIGGER_TOKEN"
Add CLONIO_TRIGGER_TOKEN as a repository variable in Bitbucket (Repository settings → Pipelines → Repository variables).
Azure DevOps
trigger:
branches:
include:
- main
pool:
vmImage: ubuntu-latest
steps:
- task: Bash@3
displayName: Trigger Clonio cloning run
inputs:
targetType: inline
script: |
curl --fail --silent --show-error --request POST \
"https://<your-clonio-instance>/api/trigger/$(CLONIO_TRIGGER_TOKEN)"
Add CLONIO_TRIGGER_TOKEN as a pipeline variable in Azure DevOps (Pipelines → Edit → Variables).
Drone CI
kind: pipeline
type: docker
name: clone-database
trigger:
branch:
- main
steps:
- name: Trigger Clonio cloning run
image: alpine
commands:
- apk add --no-cache curl
- curl --fail --silent --show-error --request POST
"https://<your-clonio-instance>/api/trigger/$$CLONIO_TRIGGER_TOKEN"
Set CLONIO_TRIGGER_TOKEN as a secret in your Drone server and reference it in the step's environment block if your Drone version requires explicit secret binding.
Cron / Scheduled Runs
You can also schedule a cloning run with a standard cron job on any Linux server:
# Run every night at 02:00
0 2 * * * curl --fail --silent --show-error --request POST \
"https://<your-clonio-instance>/api/trigger/5f23fcede47385479ab59ca4e5d5de978911658fcd677480dce13076fe40f75c" \
>> /var/log/clonio-trigger.log 2>&1
Handling Errors
All examples above use --fail with curl, which causes the command to exit with a non-zero status code if the server returns an HTTP error. This ensures your pipeline step fails visibly when the trigger does not succeed.
If you prefer wget:
wget --quiet --server-response --post-data="" \
"https://<your-clonio-instance>/api/trigger/5f23fcede47385479ab59ca4e5d5de978911658fcd677480dce13076fe40f75c"
The cloning run itself is asynchronous — the API call returns as soon as the run is queued. Use the audit log to verify the outcome.