Skip to content

fix: adjust version from 1.5.3 to 1.3.0 for logical progression #23

fix: adjust version from 1.5.3 to 1.3.0 for logical progression

fix: adjust version from 1.5.3 to 1.3.0 for logical progression #23

name: Build DXT Package Artifacts
on:
push:
branches: ['**'] # Trigger on all branches
pull_request:
branches: [main]
workflow_dispatch: # Allow manual trigger
jobs:
# Quality Gate Job - ensures code quality before building
quality-check:
name: Quality Assurance Pipeline
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Run comprehensive quality checks
env:
# Securely inject BambooHR credentials for integration testing
# If secrets are missing/deleted, tests will gracefully skip
BAMBOO_API_KEY: ${{ secrets.BAMBOO_API_KEY }}
BAMBOO_SUBDOMAIN: ${{ secrets.BAMBOO_SUBDOMAIN }}
run: |
echo "INFO: Running fail-fast quality pipeline..."
# Check if integration testing credentials are available
if [ -n "$BAMBOO_API_KEY" ] && [ -n "$BAMBOO_SUBDOMAIN" ]; then
echo "INFO: BambooHR credentials available - integration tests will run"
else
echo "WARNING: BambooHR credentials not available - integration tests will be skipped"
echo " This is expected behavior if secrets are not configured"
fi
# Security audit
echo "INFO: Security audit..."
npm audit --audit-level=high
# Code quality
echo "INFO: Code quality checks..."
npm run quality
# MCP protocol validation
echo "INFO: MCP protocol validation..."
npm run validate:protocol
# Test suite (includes integration tests if credentials available)
echo "INFO: Test execution..."
npm test
- name: Quality check summary
env:
# Need credentials to determine correct summary message
BAMBOO_API_KEY: ${{ secrets.BAMBOO_API_KEY }}
BAMBOO_SUBDOMAIN: ${{ secrets.BAMBOO_SUBDOMAIN }}
run: |
echo "## Quality Assurance Passed!" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "- Security audit: No high/critical vulnerabilities" >> $GITHUB_STEP_SUMMARY
echo "- Code quality: ESLint + Prettier + TypeScript passed" >> $GITHUB_STEP_SUMMARY
echo "- MCP protocol: Latest version (2025-06-18) validated" >> $GITHUB_STEP_SUMMARY
if [ -n "$BAMBOO_API_KEY" ] && [ -n "$BAMBOO_SUBDOMAIN" ]; then
echo "- Test suite: All tests passing (including BambooHR integration)" >> $GITHUB_STEP_SUMMARY
else
echo "- Test suite: All tests passing (integration tests skipped - no credentials)" >> $GITHUB_STEP_SUMMARY
fi
# NPM Build Job
build-npm:
name: Build NPM Package
runs-on: ubuntu-latest
needs: quality-check
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Build with quality assurance
run: |
echo "🔨 Building with comprehensive QA pipeline..."
chmod +x scripts/build.sh
./scripts/build.sh
- name: Upload NPM build artifacts
uses: actions/upload-artifact@v4
with:
name: npm-build-${{ github.sha }}
path: |
server/
package.json
manifest.json
README.md
LICENSE
retention-days: 30
if-no-files-found: error
# DXT Package Build Job
build-dxt:
name: Build DXT Package
runs-on: ubuntu-latest
needs: quality-check
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
- name: Install DXT CLI
run: npm install -g @anthropic-ai/dxt
- name: Install dependencies
run: npm ci
- name: Build DXT package with quality assurance
run: |
echo "INFO: Building DXT package with comprehensive QA..."
chmod +x scripts/build-dxt.sh
./scripts/build-dxt.sh
- name: Verify DXT package
run: |
echo "INFO: Verifying DXT package..."
if [ -d "dist" ] && ls dist/*.dxt 1> /dev/null 2>&1; then
DXT_FILE=$(ls dist/*.dxt | head -1)
DXT_SIZE=$(du -sh "$DXT_FILE" | cut -f1)
echo "SUCCESS: DXT package created: $(basename "$DXT_FILE") ($DXT_SIZE)"
# Validate the DXT package
if command -v dxt &> /dev/null; then
echo "INFO: Validating DXT package structure..."
cd dist
dxt validate "$(basename "$DXT_FILE")" || echo "WARNING: DXT validation completed with warnings"
cd ..
fi
else
echo "ERROR: No DXT package found!"
exit 1
fi
- name: Upload DXT package artifact
uses: actions/upload-artifact@v4
with:
name: bamboohr-mcp-dxt-${{ github.sha }}
path: dist/*.dxt
retention-days: 90
if-no-files-found: error
- name: Upload DXT build summary
uses: actions/upload-artifact@v4
with:
name: dxt-build-info-${{ github.sha }}
path: |
dist/bamboohr-mcp-latest.dxt
manifest.json
retention-days: 30
if-no-files-found: warn
# Summary Job
build-summary:
name: Build Summary
runs-on: ubuntu-latest
needs: [build-npm, build-dxt]
if: always()
steps:
- name: Generate build summary
run: |
echo "## Build Pipeline Summary" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
if [ "${{ needs.quality-check.result }}" = "success" ]; then
echo "**Quality Assurance**: Passed" >> $GITHUB_STEP_SUMMARY
else
echo "**Quality Assurance**: Failed" >> $GITHUB_STEP_SUMMARY
fi
if [ "${{ needs.build-npm.result }}" = "success" ]; then
echo "**NPM Build**: Completed" >> $GITHUB_STEP_SUMMARY
else
echo "**NPM Build**: Failed" >> $GITHUB_STEP_SUMMARY
fi
if [ "${{ needs.build-dxt.result }}" = "success" ]; then
echo "**DXT Package**: Created" >> $GITHUB_STEP_SUMMARY
else
echo "**DXT Package**: Failed" >> $GITHUB_STEP_SUMMARY
fi
echo "" >> $GITHUB_STEP_SUMMARY
echo "### Available Artifacts" >> $GITHUB_STEP_SUMMARY
echo "- **NPM Build**: \`npm-build-${{ github.sha }}\`" >> $GITHUB_STEP_SUMMARY
echo "- **DXT Package**: \`bamboohr-mcp-dxt-${{ github.sha }}\`" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "### 📥 How to Download" >> $GITHUB_STEP_SUMMARY
echo "1. Go to the [Actions tab](../../actions)" >> $GITHUB_STEP_SUMMARY
echo "2. Click on this workflow run" >> $GITHUB_STEP_SUMMARY
echo "3. Scroll to the bottom and download artifacts" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "### Installation" >> $GITHUB_STEP_SUMMARY
echo "- Download the DXT package artifact" >> $GITHUB_STEP_SUMMARY
echo "- Extract the \`.dxt\` file" >> $GITHUB_STEP_SUMMARY
echo "- Install in Claude Desktop via Settings → Extensions" >> $GITHUB_STEP_SUMMARY