Jenkins Pipeline Workflow
Add the following to yourJenkinsfile. It will trigger on every build and kick off a CodeAnt analysis scan:
Script Parameters
Thestart_scan.sh script accepts the following parameters:
Required Parameters
| Parameter | Flag | Description | Example |
|---|---|---|---|
| Access Token | -a, --access-token | Authentication token for CodeAnt API. Can be a Personal Access Token (PAT) or repository token | $ACCESS_TOKEN |
| Repository | -r, --repo | Repository name in organization/repository format | myorg/myrepo |
| Commit ID | -c, --commit-id | Git commit SHA to analyze | ${GIT_COMMIT} |
| Service | -s, --service | Git service provider | github, gitlab, bitbucket |
Optional Parameters
| Parameter | Flag | Default | Description | Example |
|---|---|---|---|---|
| Branch | -b, --branch | (empty) | Branch name for the analysis | main, develop |
| Scanners | --scanners | sast,sca | Comma-separated list of scanners to run | all, sast, sast,sca,secrets |
| Include Files | -i, --include-files | (empty) | Glob patterns for files to include in analysis | "src/**/*.js" |
| Exclude Files | -e, --exclude-files | (empty) | Glob patterns for files to exclude from analysis | "**/test/**" |
| Polling Interval | -p, --polling-interval | 30 | Seconds between result polling attempts | 20 |
| Timeout | -t, --timeout | 300 | Maximum seconds to wait for results | 600 |
| No Wait | -n, --no-wait | false | Skip waiting for results, only trigger the scan | (flag only) |
Scanner Options
🔍 Available Scanners: The--scanners flag allows you to customize which security scanners run during analysis:
sast- Static Application Security Testing (code vulnerabilities)sca- Software Composition Analysis (dependency vulnerabilities)secrets- Secret detection (API keys, passwords, tokens)antipatterns- Code quality and duplicate code detectioniac- Infrastructure as Code security (Terraform, CloudFormation, etc.)all- Run all available scanners
sast,sca
Examples:
- Run all scanners:
--scanners "all" - Only SAST:
--scanners "sast" - SAST + Secrets:
--scanners "sast,secrets" - Full security suite:
--scanners "sast,sca,secrets,iac"
Execution Time Considerations
⏱️ Performance Options:-
With result waiting (default): ~7 minutes
- Triggers scan and waits for complete analysis results
- Includes both security and SCA (Software Composition Analysis) results
- Best for comprehensive CI/CD pipelines where you need immediate feedback
-
With
--no-waitflag: ~2 minutes- Only triggers the scan and returns immediately
- Results can be fetched later or viewed in the CodeAnt dashboard
- Ideal for faster CI runs or when results can be processed asynchronously
Example Configurations
Fast CI Mode (No Wait)
Comprehensive Analysis (Wait for Results)
Custom File Filtering
Parameterized Pipeline
Tips:
- Add
ACCESS_TOKENas a secret credential in Jenkins → Credentials → System → Global credentials- Use
--no-waitfor PR checks to keep them fast, and full analysis for main branch merges- Adjust timeout based on your repository size - larger repos may need more time
- File patterns support standard glob syntax for precise control over what gets analyzed
- Customize scanners based on your needs - use
--scanners "all"for comprehensive coverage or specific combinations like--scanners "sast,secrets"for targeted security checks- Default scanners (
sast,sca) provide a good balance between coverage and execution time
How it works
-
Download script
We fetch a small Bash helper (
start_scan.sh) from the CodeAnt CI endpoint. - Make it runnable Mark the script executable so you can invoke it directly.
-
Invoke the scan
The script POSTs your repo, commit, and file-globs to
/analysis/ci/scan, using your token for auth. -
Pipeline feedback
- On success, you’ll see a parsed JSON response in the job log.
- On failure (non-2xx HTTP), the script exits non-zero, failing your pipeline immediately.