---
sidebar_label: Travis CI
description: Set up automated LLM testing in Travis CI pipelines with promptfoo. Configure environment variables, artifacts storage, and continuous evaluation of AI prompts and outputs.
---

# 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
- Node.js `>=22.22.0` (Node.js 24 LTS recommended)
- API keys for your LLM providers stored as [Travis CI environment variables](https://docs.travis-ci.com/user/environment-variables/)

## Setting up Travis CI

Create a new file named `.travis.yml` in the root of your repository with the following configuration:

```yaml
language: node_js
node_js:
  - '24'

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:

```yaml
script:
  - npx promptfoo eval --fail-on-error
```

### Testing on Multiple Node.js Versions

Test your evaluations across different Node.js versions:

```yaml
language: node_js
node_js:
  - '22.22.0'
  - '24'

script:
  - npx promptfoo eval
```

### Running on Different Platforms

Run evaluations on multiple operating systems:

```yaml
language: node_js
node_js:
  - '24'

os:
  - linux
  - osx

script:
  - npx promptfoo eval
```

### Conditional Builds

Run evaluations only on specific branches or conditions:

```yaml
language: node_js
node_js:
  - '24'

# 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:

```yaml
language: node_js
node_js:
  - '24'

stages:
  - test
  - evaluate

jobs:
  include:
    - stage: test
      script: npm test
    - stage: evaluate
      script: npx promptfoo eval --providers "$PROVIDER"
      env:
        - PROVIDER=openai:gpt-4
    - stage: evaluate
      script: npx promptfoo eval --providers "$PROVIDER"
      env:
        - PROVIDER=anthropic:claude-opus-5
```

## 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](https://docs.travis-ci.com/user/customizing-the-build/#build-timeouts)
- **Resource constraints**: Consider breaking down large evaluations into smaller chunks if you're hitting resource limits
