Skip to main content

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:

  1. Navigate to your repository in Travis CI
  2. Go to More options > Settings > Environment Variables
  3. Add variables for each provider API key (e.g., OPENAI_API_KEY, ANTHROPIC_API_KEY)
  4. 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