Codex: Codex Automation & CI/CD
Last updated: 2026-08-31
Codex's non-interactive mode makes it ideal for CI/CD integration, enabling automated code review and quality assurance.
📋 Prerequisites: Basic CI/CD knowledge, familiarity with GitHub Actions
1. What You Will Learn
- Codex's role in CI/CD
- GitHub Actions integration
- Automated code review
- Quality gate configuration
2. Codex's Role in CI/CD
| Role | Description | Trigger |
|---|---|---|
| Code Reviewer | Auto-review PRs | On PR creation |
| Test Generator | Auto-supplement tests | On code changes |
| Doc Updater | Auto-update documentation | On API changes |
| Security Scanner | Check for vulnerabilities | On every commit |
3. GitHub Actions Integration
(1) Basic Configuration
YAML
# .github/workflows/codex-review.yml
name: Codex Code Review
on:
pull_request:
types: [opened, synchronize]
jobs:
review:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Codex Review
env:
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
run: |
npm install -g @openai/codex
git diff origin/main...HEAD | codex --quiet --sandbox readonly \
"Review this PR's changes, focusing on: 1. Security vulnerabilities 2. Performance issues 3. Code style" \
> review-comment.md
- name: Post Review
uses: actions/github-script@v7
with:
script: |
const fs = require('fs');
const comment = fs.readFileSync('review-comment.md', 'utf8');
github.rest.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: comment
});
▶ Example 1: Alice's Automated Review
YAML
# Alice's PR review pipeline
name: Auto Review
on:
pull_request:
jobs:
security-review:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Security Scan
run: |
codex --quiet --sandbox readonly \
"Scan code for security vulnerabilities: SQL injection, XSS, sensitive data leaks"
performance-review:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Performance Check
run: |
codex --quiet --sandbox readonly \
"Analyze code performance issues: N+1 queries, memory leaks, unnecessary computation"
4. Automated Test Generation
(1) PR-Triggered Test Generation
YAML
name: Generate Tests
on:
pull_request:
paths:
- 'src/**'
jobs:
generate-tests:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Check Coverage
run: |
npm test -- --coverage
COVERAGE=$(cat coverage/coverage-summary.json | jq '.total.lines.pct')
if [ "$COVERAGE" -lt 80 ]; then
echo "Coverage below 80%, generating tests..."
codex --full-auto \
"Supplement unit tests for files with insufficient coverage, target 80%"
fi
(2) Scheduled Test Generation
YAML
name: Weekly Test Update
on:
schedule:
- cron: '0 2 * * 1' # Every Monday at 2 AM
jobs:
update-tests:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Update Tests
run: |
codex --full-auto \
"Check all source files, generate unit tests for files lacking them"
5. Quality Gates
(1) Code Quality Check
YAML
name: Quality Gate
on:
pull_request:
jobs:
quality:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Quality Check
run: |
RESULT=$(codex --quiet --sandbox readonly \
"Evaluate code quality, score 1-10, criteria: readability, maintainability, security, performance")
echo "$RESULT"
SCORE=$(echo "$RESULT" | grep -oP 'Score: \K\d+')
if [ "$SCORE" -lt 7 ]; then
echo "Quality score below 7, blocking PR"
exit 1
fi
(2) Auto Fix + Manual Review
YAML
name: Auto Fix and Review
on:
pull_request:
jobs:
auto-fix:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Auto Fix
run: |
codex --auto-edit \
"Fix all lint errors and formatting issues"
git diff > auto-fixes.patch
- name: Upload Patch
uses: actions/upload-artifact@v4
with:
name: auto-fixes
path: auto-fixes.patch
6. Security Scanning
YAML
name: Security Scan
on:
push:
branches: [main]
pull_request:
jobs:
security:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Security Audit
run: |
codex --quiet --sandbox readonly \
"Perform security audit:
1. Check for hardcoded keys and credentials
2. Check SQL injection risks
3. Check XSS risks
4. Check insecure dependencies
5. Check insecure API calls
Output risk levels and remediation suggestions"
7. Cost Control
| Strategy | Description |
|---|---|
| Limit Triggers | Only trigger on critical path changes |
| Use Read-only Mode | Review tasks with --sandbox readonly |
| Choose Appropriate Model | Lightweight for reviews, powerful for generation |
| Cache Results | Don't re-review identical code |
| Set Timeouts | Avoid long-running tasks consuming tokens |
❓ FAQ
Q Is Codex in CI/CD safe?
A Using
--sandbox readonly mode only reviews without making changes. When modifications are needed, use --auto-edit and manually review the results.Q How much does each CI run cost?
A Depends on task complexity and model. Simple reviews ~$0.01-0.05/run, complex generation ~$0.1-0.5/run. Consider using DeepSeek to reduce costs.
Q Can it replace SonarQube?
A Not entirely. Codex excels at semantic-level review, SonarQube excels at rule-level scanning. They complement each other.
Q How do I prevent Codex from hanging in CI?
A Set a
timeout parameter, use non-interactive mode, configure --approval-policy approve or deny.Q Can GitLab CI also use Codex?
A Yes. Codex CLI is cross-platform and works with any CI system.
📖 Summary
- Codex CI/CD roles: reviewer, test generator, security scanner
- GitHub Actions integration: review PRs, generate tests, quality gates
- Security mode: use readonly for reviews, manual confirmation for modifications
- Cost control: limit triggers, choose models, set timeouts
📝 Exercises
- Basic (⭐): Create a GitHub Actions workflow that auto-runs Codex code review on PRs.
- Intermediate (⭐⭐): Implement automated test generation — when coverage drops below 80%, auto-supplement tests.
- Advanced (⭐⭐⭐): Design a complete CI/CD pipeline: code review → auto-fix → test generation → security scan → quality gate.