Skip to main content

CI/CD Integration

Use TealTiger Docker containers in your CI/CD pipelines for consistent testing and deployment.

GitHub Actions

Python SDK

name: Test with TealTiger

on: [push, pull_request]

jobs:
  test:
    runs-on: ubuntu-latest
    container:
      image: ghcr.io/tealtiger/python-sdk:latest
    
    steps:
      - uses: actions/checkout@v3
      
      - name: Install dependencies
        run: pip install -r requirements.txt
      
      - name: Run tests
        env:
          OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
        run: python -m pytest tests/
      
      - name: Run policy tests
        run: python -m tealtiger test policies/

TypeScript SDK

name: Test with TealTiger

on: [push, pull_request]

jobs:
  test:
    runs-on: ubuntu-latest
    container:
      image: ghcr.io/tealtiger/typescript-sdk:latest
    
    steps:
      - uses: actions/checkout@v3
      
      - name: Install dependencies
        run: npm ci
      
      - name: Run tests
        env:
          OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
        run: npm test
      
      - name: Run policy tests
        run: npx tealtiger test policies/

GitLab CI

Python SDK

test:
  image: ghcr.io/tealtiger/python-sdk:latest
  script:
    - pip install -r requirements.txt
    - python -m pytest tests/
    - python -m tealtiger test policies/
  variables:
    OPENAI_API_KEY: $OPENAI_API_KEY

TypeScript SDK

test:
  image: ghcr.io/tealtiger/typescript-sdk:latest
  script:
    - npm ci
    - npm test
    - npx tealtiger test policies/
  variables:
    OPENAI_API_KEY: $OPENAI_API_KEY

Jenkins

Python SDK

pipeline {
    agent {
        docker {
            image 'ghcr.io/tealtiger/python-sdk:latest'
        }
    }
    
    environment {
        OPENAI_API_KEY = credentials('openai-api-key')
    }
    
    stages {
        stage('Test') {
            steps {
                sh 'pip install -r requirements.txt'
                sh 'python -m pytest tests/'
                sh 'python -m tealtiger test policies/'
            }
        }
    }
}

TypeScript SDK

pipeline {
    agent {
        docker {
            image 'ghcr.io/tealtiger/typescript-sdk:latest'
        }
    }
    
    environment {
        OPENAI_API_KEY = credentials('openai-api-key')
    }
    
    stages {
        stage('Test') {
            steps {
                sh 'npm ci'
                sh 'npm test'
                sh 'npx tealtiger test policies/'
            }
        }
    }
}

CircleCI

Python SDK

version: 2.1

jobs:
  test:
    docker:
      - image: ghcr.io/tealtiger/python-sdk:latest
    steps:
      - checkout
      - run:
          name: Install dependencies
          command: pip install -r requirements.txt
      - run:
          name: Run tests
          command: python -m pytest tests/
      - run:
          name: Run policy tests
          command: python -m tealtiger test policies/

workflows:
  test:
    jobs:
      - test

TypeScript SDK

version: 2.1

jobs:
  test:
    docker:
      - image: ghcr.io/tealtiger/typescript-sdk:latest
    steps:
      - checkout
      - run:
          name: Install dependencies
          command: npm ci
      - run:
          name: Run tests
          command: npm test
      - run:
          name: Run policy tests
          command: npx tealtiger test policies/

workflows:
  test:
    jobs:
      - test

Azure Pipelines

Python SDK

trigger:
  - main

pool:
  vmImage: 'ubuntu-latest'

container: ghcr.io/tealtiger/python-sdk:latest

steps:
- script: |
    pip install -r requirements.txt
    python -m pytest tests/
    python -m tealtiger test policies/
  displayName: 'Test with TealTiger'
  env:
    OPENAI_API_KEY: $(OPENAI_API_KEY)

TypeScript SDK

trigger:
  - main

pool:
  vmImage: 'ubuntu-latest'

container: ghcr.io/tealtiger/typescript-sdk:latest

steps:
- script: |
    npm ci
    npm test
    npx tealtiger test policies/
  displayName: 'Test with TealTiger'
  env:
    OPENAI_API_KEY: $(OPENAI_API_KEY)

Best Practices

Use Specific Tags

Don’t use latest in production CI/CD. Pin to specific versions:
container:
  image: ghcr.io/tealtiger/python-sdk:1.1.0

Cache Dependencies

Speed up builds by caching dependencies:
# GitHub Actions
- uses: actions/cache@v3
  with:
    path: ~/.cache/pip
    key: ${{ runner.os }}-pip-${{ hashFiles('requirements.txt') }}

Parallel Testing

Run tests in parallel for faster feedback:
# GitHub Actions
strategy:
  matrix:
    test-group: [unit, integration, policy]

Security Scanning

Scan containers for vulnerabilities:
# GitHub Actions
- name: Run Trivy scanner
  uses: aquasecurity/trivy-action@master
  with:
    image-ref: 'ghcr.io/tealtiger/python-sdk:latest'
    format: 'sarif'
    output: 'trivy-results.sarif'

Next Steps