Travis CI Integration
This guide demonstrates how to set up promptfoo with Travis CI to run evaluations as part of your CI pipeline.
Prerequisites
- A GitHub repository with a promptfoo project
- A Travis CI account connected to your repository
- API keys for your LLM providers stored as Travis CI environment variables
Setting up Travis CI
Create a new file named .travis.yml
in the root of your repository with the following configuration:
language: node_js
node_js:
- 18
cache:
directories:
- node_modules
before_install:
- npm install -g promptfoo
install:
- npm ci
script:
- npx promptfoo eval
after_success:
- echo "Prompt evaluation completed successfully"
after_failure:
- echo "Prompt evaluation failed"
# Save evaluation results as artifacts
before_deploy:
- mkdir -p artifacts
- cp promptfoo-results.json artifacts/
deploy:
provider: s3
bucket: 'your-bucket-name' # Replace with your bucket name
skip_cleanup: true
local_dir: artifacts
on:
branch: main
Environment Variables
Store your LLM provider API keys as environment variables in Travis CI:
- Navigate to your repository in Travis CI
- Go to More options > Settings > Environment Variables
- Add variables for each provider API key (e.g.,
OPENAI_API_KEY
,ANTHROPIC_API_KEY
) - Make sure to mark them as secure to prevent them from being displayed in logs
Advanced Configuration
Fail the Build on Failed Assertions
You can configure the pipeline to fail when promptfoo assertions don't pass:
script:
- npx promptfoo eval --fail-on-error
Testing on Multiple Node.js Versions
Test your evaluations across different Node.js versions:
language: node_js
node_js:
- 18
- 20
script:
- npx promptfoo eval
Running on Different Platforms
Run evaluations on multiple operating systems:
language: node_js
node_js:
- 18
os:
- linux
- osx
script:
- npx promptfoo eval
Conditional Builds
Run evaluations only on specific branches or conditions:
language: node_js
node_js:
- 18
# Run evaluations only on main branch and pull requests
if: branch = main OR type = pull_request
script:
- npx promptfoo eval
Custom Build Stages
Set up different stages for your build process:
language: node_js
node_js:
- 18
stages:
- test
- evaluate
jobs:
include:
- stage: test
script: npm test
- stage: evaluate
script: npx promptfoo eval
env:
- MODEL=gpt-4
- stage: evaluate
script: npx promptfoo eval
env:
- MODEL=claude-3-opus-20240229
Troubleshooting
If you encounter issues with your Travis CI integration:
- Check logs: Review detailed logs in Travis CI to identify errors
- Verify environment variables: Ensure your API keys are correctly set
- Build timeouts: Travis CI has a default timeout of 50 minutes for jobs. For long-running evaluations, you may need to configure job timeouts
- Resource constraints: Consider breaking down large evaluations into smaller chunks if you're hitting resource limits