Skip to content

Latest commit

 

History

History
351 lines (256 loc) · 6.47 KB

File metadata and controls

351 lines (256 loc) · 6.47 KB

Environment Variables

Configure Git-Iris using environment variables for CI/CD, Docker, or temporary overrides.

API Key Variables

Each provider has a corresponding environment variable:

Provider Environment Variable Example
OpenAI OPENAI_API_KEY sk-...
Anthropic ANTHROPIC_API_KEY sk-ant-...
Google GOOGLE_API_KEY AIza...

Usage

# Set API key
export ANTHROPIC_API_KEY="sk-ant-..."

# Git-Iris will use it automatically
git-iris gen

Docker-Specific Variables

When running in Docker containers, use these variables:

Variable Description Example
GITIRIS_PROVIDER Default provider anthropic
GITIRIS_API_KEY API key for default provider sk-ant-...

Docker Example

docker run --rm \
  -v "$(pwd):/git-repo" \
  -e GITIRIS_PROVIDER="anthropic" \
  -e GITIRIS_API_KEY="$ANTHROPIC_API_KEY" \
  hyperb1iss/git-iris gen --print

Configuration Priority

Environment variables take precedence over config files:

Config File < Environment Variable < CLI Flag

Example

Config file:

[providers.anthropic]
api_key = "sk-ant-config-key"

Environment:

export ANTHROPIC_API_KEY="sk-ant-env-key"

Result: Git-Iris uses sk-ant-env-key

Common Patterns

Local Development

# .envrc (direnv)
export ANTHROPIC_API_KEY="sk-ant-..."
export OPENAI_API_KEY="sk-..."

CI/CD

# GitHub Actions
env:
  ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}

steps:
  - name: Generate commit message
    run: |
      git add .
      git-iris gen --print > commit_msg.txt

Docker Compose

# docker-compose.yml
services:
  git-iris:
    image: hyperb1iss/git-iris
    environment:
      GITIRIS_PROVIDER: anthropic
      GITIRIS_API_KEY: ${ANTHROPIC_API_KEY}
    volumes:
      - .:/git-repo

Shell Configuration

Bash/Zsh

# ~/.bashrc or ~/.zshrc
export ANTHROPIC_API_KEY="sk-ant-..."
export OPENAI_API_KEY="sk-..."
export GOOGLE_API_KEY="..."

Fish

# ~/.config/fish/config.fish
set -gx ANTHROPIC_API_KEY "sk-ant-..."
set -gx OPENAI_API_KEY "sk-..."
set -gx GOOGLE_API_KEY "..."

Temporary Overrides

One-Time Command

# Use different API key just for this command
ANTHROPIC_API_KEY="sk-ant-temp-key" git-iris gen

Session Override

# Override for this shell session
export ANTHROPIC_API_KEY="sk-ant-session-key"
git-iris gen
git-iris review
# ... more commands

Security Best Practices

Never Commit Environment Files

# .gitignore
.env
.envrc
*.env.local

Use Secret Management

# Load from 1Password
export ANTHROPIC_API_KEY="$(op read op://vault/item/field)"

# Load from AWS Secrets Manager
export ANTHROPIC_API_KEY="$(aws secretsmanager get-secret-value \
  --secret-id git-iris/anthropic-key --query SecretString --output text)"

Restrict File Permissions

chmod 600 .env
chmod 600 .envrc

CI/CD Integration

GitHub Actions

name: Git-Iris Commit Check

on: [pull_request]

jobs:
  check-commit:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3

      - name: Install Git-Iris
        run: |
          wget https://github.com/hyperb1iss/git-iris/releases/latest/download/git-iris-linux-amd64
          chmod +x git-iris-linux-amd64
          sudo mv git-iris-linux-amd64 /usr/local/bin/git-iris

      - name: Generate commit message
        env:
          ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
        run: |
          git-iris gen --print

GitLab CI

# .gitlab-ci.yml
commit-check:
  stage: test
  image: hyperb1iss/git-iris
  variables:
    GITIRIS_PROVIDER: 'anthropic'
  script:
    - git-iris gen --print
  only:
    - merge_requests

Jenkins

pipeline {
  agent any

  environment {
    ANTHROPIC_API_KEY = credentials('anthropic-api-key')
  }

  stages {
    stage('Generate Commit') {
      steps {
        sh 'git-iris gen --print'
      }
    }
  }
}

Validation

Check API Key Loading

# Enable debug logging
git-iris gen --log --log-file debug.log

# Check which API key source is used
cat debug.log | grep "API key"

Test Environment Setup

# This should work if ANTHROPIC_API_KEY is set
git-iris gen --provider anthropic --print

# If it fails, check:
echo $ANTHROPIC_API_KEY  # Should output key (or empty if not set)

Debugging

API Key Not Found

Error: API key required for anthropic.
Set ANTHROPIC_API_KEY or configure in ~/.config/git-iris/config.toml

Solution:

export ANTHROPIC_API_KEY="sk-ant-..."

Wrong Provider Selected

# Check current provider
git-iris config --print | grep default_provider

# Override with environment
export GITIRIS_PROVIDER="anthropic"

Environment Variable Not Loading

# Verify it's exported
env | grep API_KEY

# If not, export it
export ANTHROPIC_API_KEY="sk-ant-..."

# Test immediately
git-iris gen --print

Reference Table

All Environment Variables

Variable Purpose Example
OPENAI_API_KEY OpenAI authentication sk-proj-...
ANTHROPIC_API_KEY Anthropic authentication sk-ant-...
GOOGLE_API_KEY Google authentication AIza...
GITIRIS_PROVIDER Default provider (Docker) anthropic
GITIRIS_API_KEY Generic API key (Docker) sk-ant-...
RUST_LOG Logging level debug, info

Example Complete Setup

# Personal development
export ANTHROPIC_API_KEY="sk-ant-personal-dev-key"
export OPENAI_API_KEY="sk-personal-dev-key"

# Project-specific
export GITIRIS_PROVIDER="anthropic"

# Debug logging
export RUST_LOG="debug"

Platform-Specific Notes

Windows (PowerShell)

# Set environment variable
$env:ANTHROPIC_API_KEY = "sk-ant-..."

# Permanent (user scope)
[Environment]::SetEnvironmentVariable("ANTHROPIC_API_KEY", "sk-ant-...", "User")

Windows (CMD)

set ANTHROPIC_API_KEY=sk-ant-...

macOS/Linux

# Temporary
export ANTHROPIC_API_KEY="sk-ant-..."

# Permanent (add to ~/.bashrc or ~/.zshrc)
echo 'export ANTHROPIC_API_KEY="sk-ant-..."' >> ~/.bashrc