How it works
Adaline’s deployment webhooks and evaluation API connect directly to your CI/CD platform. The flow:- A prompt is deployed to a staging environment in Adaline
- Adaline fires a webhook to your CI platform (e.g. GitHub Actions, GitLab CI, Jenkins)
- Your pipeline calls the Adaline API to run evaluations against a dataset
- Evaluation scores are checked against thresholds you define
- If scores pass — the pipeline promotes the deployment or updates your app config. If scores fail — the pipeline blocks the release with a clear error
Triggering evaluations from CI
Webhook trigger
When you deploy a prompt, Adaline fires acreate-deployment webhook to every configured endpoint. Use this to trigger your pipeline automatically:
workflow_dispatch or on a schedule.
Fetching the deployment
Pull the deployed prompt from the Adaline API using your prompt ID and environment:Running evaluations
Trigger an evaluation run against a dataset connected to your prompt:Gating deployments on evaluation results
The core of the CI/CD gate is a threshold check. Parse the evaluation results and compare each evaluator’s score against the minimum you require:What you can gate on
Adaline evaluations support multiple evaluator types, all of which can serve as CI/CD gates:| Evaluator type | Gate example |
|---|---|
| LLM-as-a-Judge | Block if helpfulness or factuality score drops below 0.7 |
| JavaScript | Block if output format validation fails |
| Text Matcher | Block if required phrases are missing or banned patterns appear |
| Cost | Block if average cost per request exceeds $0.005 |
| Latency | Block if p95 latency exceeds 3 seconds |
| Response Length | Block if responses consistently exceed or fall short of length targets |
CI platform examples
GitHub Actions
GitHub Actions is the most common integration pattern. Userepository_dispatch to receive Adaline webhooks and run evaluations in a workflow job.
Setup
Store the following as repository secrets and variables in your GitHub repo:| Name | Type | Value |
|---|---|---|
ADALINE_API_KEY | Secret | Your Adaline API key |
ADALINE_PROMPT_ID | Variable | The prompt ID to evaluate |
ADALINE_DEPLOYMENT_ENV_ID | Variable | The deployment environment ID (e.g. staging) |
ADALINE_DATASET_ID | Variable | The dataset ID to run evaluations against |
Complete workflow
Below is a complete workflow you can copy into.github/workflows/prompt-gate.yml. It receives the webhook (or runs manually), pulls the deployed prompt, runs evaluations, checks scores against thresholds, and only updates your prompt config if everything passes.
The evaluation step above includes placeholder score values. In a production workflow, you would poll
GET .../evaluations/$EVAL_ID until status is completed, then parse the evaluation results to extract real per-evaluator scores.When evaluation fails
When the threshold check fails, the job exits withexit 1 and the Checkout, Update prompt config, Commit and push, and Trigger release steps are all skipped. The ::error:: message surfaces in your GitHub Actions dashboard so the team knows exactly which evaluator failed and by how much. Fix the prompt or thresholds in Adaline and redeploy to try again.
GitLab CI
Use a webhook-triggered pipeline or a scheduled job that calls the Adaline API. The same API calls and threshold logic apply — fetch the deployment, run evaluations, check scores, and gate the release.Jenkins
Trigger a Jenkins pipeline via a webhook endpoint or a polling job. Usecurl in shell steps to call the Adaline API, then parse evaluation results and set the build status based on threshold checks.
Other platforms
Any CI/CD platform that supports webhooks or scheduled triggers and can make HTTP requests works with Adaline’s evaluation API. The integration pattern is always the same: receive trigger, call API, check scores, gate release.Next steps
Configure webhooks
Set up real-time deployment notifications for your CI pipeline.
Create evaluation API
API reference for triggering evaluations programmatically.
Setup evaluators
Configure the evaluators that power your CI/CD gate.