name: MCP Smoke Test
on:
schedule:
# Run every 3 days at 9 AM UTC
- cron: '0 9 */3 * *'
workflow_dispatch:
# Allow manual triggering for testing
permissions:
contents: read
issues: write
jobs:
smoke-test:
runs-on: ubuntu-latest
env:
# ZenML configuration
ZENML_DISABLE_RICH_LOGGING: "1"
ZENML_LOGGING_COLORS_DISABLED: "true"
ZENML_ANALYTICS_OPT_IN: "false"
PYTHONIOENCODING: "UTF-8"
PYTHONUNBUFFERED: "1"
ZENML_STORE_URL: ${{ secrets.ZENML_STORE_URL }}
ZENML_STORE_API_KEY: ${{ secrets.ZENML_STORE_API_KEY }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install uv
uses: astral-sh/setup-uv@v5
with:
version: "0.7.13"
enable-cache: true
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Run MCP smoke test
id: smoke-test
run: |
echo "Running MCP smoke test..."
uv run scripts/test_mcp_server.py zenml_server.py
continue-on-error: true
- name: Create issue on failure
if: steps.smoke-test.outcome == 'failure'
uses: actions/github-script@v7
with:
script: |
// Check for existing open issues with the same title
const issues = await github.rest.issues.listForRepo({
owner: context.repo.owner,
repo: context.repo.repo,
state: 'open',
labels: 'bug'
});
const existingIssue = issues.data.find(issue =>
issue.title.includes('MCP Smoke Test Failed')
);
if (existingIssue) {
console.log(`Existing issue found: #${existingIssue.number}`);
// Add a comment to the existing issue instead of creating a new one
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: existingIssue.number,
body: `
## 🔄 MCP Smoke Test Failed Again
**Workflow Run:** [${context.runNumber}](${context.payload.repository.html_url}/actions/runs/${context.runId})
**Branch:** ${context.ref}
**Commit:** ${context.sha.substring(0, 7)}
**Triggered by:** ${context.eventName}
**Date:** ${new Date().toISOString()}
The MCP smoke test is still failing. Please investigate the recurring issue.
**Logs:** Check the [workflow run](${context.payload.repository.html_url}/actions/runs/${context.runId}) for detailed error logs.
`
});
} else {
// Create a new issue
await github.rest.issues.create({
owner: context.repo.owner,
repo: context.repo.repo,
title: '🚨 MCP Smoke Test Failed',
body: `
## MCP Smoke Test Failure Report
The automated MCP smoke test has failed. This indicates there may be issues with the MCP server functionality.
### Details
**Workflow Run:** [${context.runNumber}](${context.payload.repository.html_url}/actions/runs/${context.runId})
**Branch:** ${context.ref}
**Commit:** ${context.sha.substring(0, 7)}
**Triggered by:** ${context.eventName}
**Date:** ${new Date().toISOString()}
### Investigation Steps
1. Check the [workflow logs](${context.payload.repository.html_url}/actions/runs/${context.runId}) for detailed error information
2. Verify ZenML server connectivity and authentication
3. Test the MCP server locally using: \`uv run scripts/test_mcp_server.py zenml_server.py\`
4. Check for any recent changes that might have affected the MCP server
### Environment
- **ZenML Store URL:** ${process.env.ZENML_STORE_URL ? 'Set (from secrets)' : 'Not set'}
- **ZenML API Key:** ${process.env.ZENML_STORE_API_KEY ? 'Set (from secrets)' : 'Not set'}
@strickvl @htahir1 Please investigate this failure.
`,
labels: ['bug']
});
}
- name: Report success
if: steps.smoke-test.outcome == 'success'
run: |
echo "✅ MCP smoke test passed successfully!"
echo "All MCP server functionality is working as expected."