CI/CD 集成
将 Security Scanner MCP 集成到您的开发工作流中。
GitHub Actions
基本工作流
name: Security Scan
on:
push:
branches: [main, develop]
pull_request:
branches: [main]
jobs:
security:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Pull Security Scanner
run: docker pull ongjin/security-scanner-mcp:latest
- name: Scan Code
run: |
docker run --rm \
-v ${{ github.workspace }}:/code:ro \
ongjin/security-scanner-mcp:latest \
scan /code
带 SARIF 的高级工作流
name: Advanced Security Scan
on: [push, pull_request]
permissions:
contents: read
security-events: write
jobs:
security:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Security Scan with SARIF
run: |
docker run --rm \
-v $(pwd):/code:ro \
ongjin/security-scanner-mcp:latest \
scan /code --format sarif > security.sarif
- name: Upload SARIF
uses: github/codeql-action/upload-sarif@v2
with:
sarif_file: security.sarif
category: security-scanner-mcp
GitLab CI
security-scan:
image: docker:latest
services:
- docker:dind
before_script:
- docker pull ongjin/security-scanner-mcp:latest
script:
- docker run --rm -v $(pwd):/code:ro
ongjin/security-scanner-mcp:latest scan /code
artifacts:
reports:
sast: security-report.json
only:
- merge_requests
- main
Jenkins
pipeline {
agent any
stages {
stage('Security Scan') {
steps {
script {
docker.image('ongjin/security-scanner-mcp:latest')
.inside('-v $WORKSPACE:/code:ro') {
sh 'scan /code --format json > security-report.json'
}
}
}
}
stage('Publish Results') {
steps {
publishHTML([
reportDir: '.',
reportFiles: 'security-report.html',
reportName: 'Security Report'
])
}
}
}
}
CircleCI
version: 2.1
jobs:
security-scan:
docker:
- image: docker:latest
steps:
- checkout
- setup_remote_docker
- run:
name: Pull Scanner
command: docker pull ongjin/security-scanner-mcp:latest
- run:
name: Run Scan
command: |
docker run --rm \
-v $(pwd):/code:ro \
ongjin/security-scanner-mcp:latest \
scan /code
- store_artifacts:
path: security-report.json
workflows:
version: 2
security:
jobs:
- security-scan
预提交钩子
使用 Husky
# 安装
npm install --save-dev husky
# 设置
npx husky install
npx husky add .husky/pre-commit "npm run security-scan"
{
"scripts": {
"security-scan": "security-scanner-mcp scan src/"
}
}
使用预提交框架
# .pre-commit-config.yaml
repos:
- repo: local
hooks:
- id: security-scan
name: Security Scanner MCP
entry: docker run --rm -v $(pwd):/code:ro ongjin/security-scanner-mcp:latest scan
language: system
pass_filenames: false