Required Secrets
The following secrets must be configured in your GitHub repository or organization:| Secret | Description | Required For |
|---|---|---|
GIT_GITHUB_APP_PEM_FILE | GitHub App private key (PEM file) | setup-project |
GIT_GITHUB_APP_ID | GitHub App ID | setup-project |
SONAR_TOKEN | SonarCloud authentication token | sonar-check |
AI_GATEWAY_ENDPOINT | AI Gateway endpoint URL | promptfoo-evaluation, promptfoo-redteaming |
AI_GATEWAY_API_KEY | AI Gateway API key | promptfoo-evaluation, promptfoo-redteaming |
GC_NPA_AZURE_CREDENTIALS | Azure service principal credentials (JSON) | push-docker |
Configuration Files
Release Drafter
Thecreate-release-draft action uses release-drafter to automatically generate changelogs and release notes. Create .github/release-drafter.yml in your repository:
Configuration Options
- name-template: Release name format (uses resolved version)
- tag-template: Git tag format (uses resolved version)
- categories: Groups PRs by labels for changelog organization
- change-template: Format for each changelog entry
- exclude-labels: Labels to exclude from changelog
- exclude-contributors: Bot accounts to exclude
- version-resolver: Determines version bump based on labels
- autolabeler: Automatically labels PRs based on branch name
- template: Release notes template
Pull Request Template
Thevalidate-pull-request-body action validates PR descriptions against a template. Create .github/pull_request_template.md in your repository:
Template Requirements
The PR template should include:- Description section: Summary of changes and context
- Checklist: Required items to verify before PR is ready
- Comments: Instructions for reviewers
- PR body is not empty
- Required checklist items are completed (or marked N/A)
- Description provides sufficient context
Python Version Configuration
Specify Python version in two ways:1. Via Input Parameter
2. Via .python-version File
Create a .python-version file in your repository root:
.python-version file takes precedence if both are specified.
Hadolint Configuration
Create.hadolint.yaml in your repository root to configure hadolint rules for Dockerfile linting:
Configuration Options
- ignored: Rules to completely ignore
- override: Override severity levels for specific rules
- trustedRegistries: Docker registries to trust
CODEOWNERS File
The release draft workflow requires a.github/CODEOWNERS file to verify code owner permissions. Create this file to specify who can trigger release workflows:
Format
- Use
*for global ownership - Use paths for specific file/directory ownership
- Use
@usernameor@team-namefor owners - Multiple owners can be specified per line
Version Management
The workflows useuv for version management. Versions are read from pyproject.toml and can be:
- Stable versions:
1.2.3(no suffixes) - Development versions:
1.2.3.dev0(with dev suffix)
Version Format
Versions follow semantic versioning (SemVer):Stable Versions
- Major: Breaking changes (e.g.,
1.0.0→2.0.0) - Minor: New features, backward compatible (e.g.,
1.0.0→1.1.0) - Patch: Bug fixes, backward compatible (e.g.,
1.0.0→1.0.1)
Development Versions
Development versions include a suffix indicating they are pre-release:- Format:
{major}.{minor}.{patch}.dev0(e.g.,1.2.3.dev0) - Purpose: Indicates work-in-progress or pre-release state
- Usage: Automatically used during development on feature branches
- Release Process: Development versions are converted to stable versions during release (e.g.,
1.2.3.dev0→1.2.3)
Prompt Management
When configuring promptfoo evaluation, reference prompts from theprompts/ directory using the file:// protocol, as shown in the evaluation config example in the Promptfoo Configurations section.
Promptfoo Configurations
Promptfoo is used for LLM prompt evaluation and readteaming. Redteam testing uses Promptfoo’s redteaming capabilities to test for security vulnerabilities and adversarial inputs.Evaluations Config File
Each agent should have its own configuration file inpromptfoo_config/. Example structure:
Redteam Config File
Createredteam.yaml in your repository root:
Quick Setup Checklist
Your repository should have the following structure for CI/CD workflows:Setup Tasks
- Configure all required secrets in GitHub repository/organization
- Create
.github/release-drafter.ymlfor release notes - Create
.github/pull_request_template.mdfor PR validation - Create
.github/CODEOWNERSfor release permissions - Create
.python-versionfile (or specify in workflow) - Create
.hadolint.yamlfor Dockerfile linting (optional) - Configure
promptfoo_config/*.yamlfor prompt evaluation (if using) - Create provider files in
providers/directory (if using promptfoo eval) - Create prompt functions in
prompts/prompts.py(if using promptfoo eval) - Configure
redteam.yamlfor redteaming tests (if using promptfoo redteaming)