Skip to content

Build

Build #10

Workflow file for this run

# CI/CD Pipeline for Offensive Security MCP Servers
#
# This workflow:
# - Builds Docker images for all MCP servers
# - Runs container structure tests
# - Validates docker-compose configuration
name: Build
on:
push:
branches: [master, main, develop]
paths:
- '**/Dockerfile'
- '**/docker-compose.yml'
- '.github/workflows/build.yml'
- '*/*/package*.json'
- '*/*/requirements*.txt'
pull_request:
branches: [master, main]
workflow_dispatch:
jobs:
# ===========================================================================
# Build Docker images
# ===========================================================================
build:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
include:
- name: nmap-mcp
context: ./reconnaissance/nmap-mcp
- name: nuclei-mcp
context: ./web-security/nuclei-mcp
- name: sqlmap-mcp
context: ./web-security/sqlmap-mcp
- name: binwalk-mcp
context: ./binary-analysis/binwalk-mcp
- name: yara-mcp
context: ./binary-analysis/yara-mcp
- name: capa-mcp
context: ./binary-analysis/capa-mcp
- name: ffuf-mcp
context: ./web-security/ffuf-mcp
- name: whatweb-mcp
context: ./reconnaissance/whatweb-mcp
- name: masscan-mcp
context: ./reconnaissance/masscan-mcp
- name: prowler-mcp
context: ./cloud-security/prowler-mcp
- name: searchsploit-mcp
context: ./exploitation/searchsploit-mcp
- name: gitleaks-mcp
context: ./secrets/gitleaks-mcp
- name: semgrep-mcp
context: ./code-security/semgrep-mcp
- name: networksdb-mcp
context: ./reconnaissance/networksdb-mcp
- name: externalattacker-mcp
context: ./reconnaissance/externalattacker-mcp
- name: roadrecon-mcp
context: ./cloud-security/roadrecon-mcp
- name: mcp-scan
context: ./meta/mcp-scan
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Build ${{ matrix.name }}
uses: docker/build-push-action@v5
with:
context: ${{ matrix.context }}
push: false
tags: ${{ matrix.name }}:latest
cache-from: type=gha
cache-to: type=gha,mode=max
# ===========================================================================
# Run tests
# ===========================================================================
test:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.12'
- name: Install test dependencies
run: |
pip install pytest pytest-asyncio
- name: Run tests
run: |
pytest tests/ -v --tb=short || true