feat: Claude Marketplace Ready - Complete AI-SDLC Integration with 159 Keywords #17
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI/CD Pipeline | |
| on: | |
| push: | |
| branches: [ main, develop ] | |
| tags: | |
| - 'v*' | |
| pull_request: | |
| branches: [ main, develop ] | |
| workflow_dispatch: | |
| env: | |
| PYTHON_VERSION: '3.10' | |
| NODE_VERSION: '18' | |
| jobs: | |
| validate: | |
| name: Validate Plugin Configuration | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v3 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v3 | |
| with: | |
| node-version: ${{ env.NODE_VERSION }} | |
| - name: Install dependencies | |
| run: npm install | |
| - name: Validate marketplace.json | |
| run: | | |
| cat .claude-plugin/marketplace.json | jq empty | |
| echo "✓ marketplace.json is valid JSON" | |
| - name: Validate plugin configurations | |
| run: | | |
| for plugin in plugins/*/; do | |
| echo "Validating $plugin" | |
| cat "$plugin/.claude-plugin/plugin.json" | jq empty | |
| done | |
| echo "✓ All plugin.json files are valid" | |
| - name: Run validation script | |
| run: npm run validate | |
| lint: | |
| name: Lint Code | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v3 | |
| - name: Setup Python | |
| uses: actions/setup-python@v4 | |
| with: | |
| python-version: ${{ env.PYTHON_VERSION }} | |
| - name: Install dependencies | |
| run: | | |
| pip install -r requirements-dev.txt | |
| - name: Run pylint | |
| run: | | |
| pylint plugins/ tests/ examples/ --exit-zero | |
| - name: Run black (check only) | |
| run: | | |
| black --check plugins/ tests/ examples/ | |
| test-unit: | |
| name: Unit Tests | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v3 | |
| - name: Setup Python | |
| uses: actions/setup-python@v4 | |
| with: | |
| python-version: ${{ env.PYTHON_VERSION }} | |
| - name: Install dependencies | |
| run: | | |
| pip install -r requirements.txt | |
| pip install -r requirements-dev.txt | |
| - name: Run unit tests | |
| run: | | |
| pytest tests/unit/ -v --cov=plugins --cov-report=xml --cov-report=html | |
| - name: Upload coverage to Codecov | |
| uses: codecov/codecov-action@v3 | |
| with: | |
| files: ./coverage.xml | |
| flags: unittests | |
| name: codecov-unit-tests | |
| - name: Upload coverage HTML | |
| uses: actions/upload-artifact@v3 | |
| with: | |
| name: coverage-report | |
| path: htmlcov/ | |
| test-integration: | |
| name: Integration Tests | |
| runs-on: ubuntu-latest | |
| # Only run integration tests if secrets are available | |
| if: ${{ github.event_name == 'push' || github.event_name == 'workflow_dispatch' }} | |
| steps: | |
| - uses: actions/checkout@v3 | |
| - name: Setup Python | |
| uses: actions/setup-python@v4 | |
| with: | |
| python-version: ${{ env.PYTHON_VERSION }} | |
| - name: Install dependencies | |
| run: | | |
| pip install -r requirements.txt | |
| pip install -r requirements-dev.txt | |
| - name: Run integration tests | |
| env: | |
| DATABRICKS_HOST: ${{ secrets.DATABRICKS_HOST }} | |
| DATABRICKS_TOKEN: ${{ secrets.DATABRICKS_TOKEN }} | |
| DATABRICKS_WAREHOUSE_ID: ${{ secrets.DATABRICKS_WAREHOUSE_ID }} | |
| run: | | |
| pytest tests/integration/ -v --tb=short -m "not slow" | |
| continue-on-error: true | |
| test-examples: | |
| name: Test Example Projects | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| example: | |
| - customer-360-pipeline | |
| - real-time-analytics | |
| - ml-feature-platform | |
| steps: | |
| - uses: actions/checkout@v3 | |
| - name: Setup Python | |
| uses: actions/setup-python@v4 | |
| with: | |
| python-version: ${{ env.PYTHON_VERSION }} | |
| - name: Install dependencies | |
| run: | | |
| pip install -r requirements.txt | |
| pip install -r examples/${{ matrix.example }}/requirements.txt | |
| - name: Test example | |
| run: | | |
| cd examples/${{ matrix.example }} | |
| pytest tests/ -v | |
| build-docs: | |
| name: Build Documentation | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v3 | |
| - name: Setup Python | |
| uses: actions/setup-python@v4 | |
| with: | |
| python-version: ${{ env.PYTHON_VERSION }} | |
| - name: Install dependencies | |
| run: | | |
| pip install mkdocs mkdocs-material | |
| - name: Build docs | |
| run: | | |
| mkdocs build --strict | |
| - name: Upload docs artifact | |
| uses: actions/upload-artifact@v3 | |
| with: | |
| name: documentation | |
| path: site/ | |
| publish-npm: | |
| name: Publish to NPM | |
| runs-on: ubuntu-latest | |
| needs: [validate, lint, test-unit] | |
| if: startsWith(github.ref, 'refs/tags/v') | |
| steps: | |
| - uses: actions/checkout@v3 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v3 | |
| with: | |
| node-version: ${{ env.NODE_VERSION }} | |
| registry-url: 'https://registry.npmjs.org' | |
| - name: Install dependencies | |
| run: npm install | |
| - name: Publish to NPM | |
| run: npm publish --access public | |
| env: | |
| NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} | |
| create-release: | |
| name: Create GitHub Release | |
| runs-on: ubuntu-latest | |
| needs: [validate, lint, test-unit] | |
| if: startsWith(github.ref, 'refs/tags/v') | |
| steps: | |
| - uses: actions/checkout@v3 | |
| - name: Extract version from tag | |
| id: version | |
| run: echo "VERSION=${GITHUB_REF#refs/tags/v}" >> $GITHUB_OUTPUT | |
| - name: Create Release | |
| uses: softprops/action-gh-release@v1 | |
| with: | |
| name: Release v${{ steps.version.outputs.VERSION }} | |
| draft: false | |
| prerelease: false | |
| generate_release_notes: true | |
| files: | | |
| .claude-plugin/marketplace.json | |
| plugins/**/.claude-plugin/plugin.json | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| deploy-docs: | |
| name: Deploy Documentation | |
| runs-on: ubuntu-latest | |
| needs: build-docs | |
| if: github.ref == 'refs/heads/main' | |
| steps: | |
| - uses: actions/checkout@v3 | |
| - name: Setup Python | |
| uses: actions/setup-python@v4 | |
| with: | |
| python-version: ${{ env.PYTHON_VERSION }} | |
| - name: Install dependencies | |
| run: | | |
| pip install mkdocs mkdocs-material | |
| - name: Deploy to GitHub Pages | |
| run: | | |
| mkdocs gh-deploy --force | |
| notify: | |
| name: Notify on Success | |
| runs-on: ubuntu-latest | |
| needs: [validate, lint, test-unit, test-integration, test-examples] | |
| if: success() | |
| steps: | |
| - name: Notify Slack | |
| uses: slackapi/slack-github-action@v1 | |
| with: | |
| webhook-url: ${{ secrets.SLACK_WEBHOOK }} | |
| payload: | | |
| { | |
| "text": "✅ CI/CD Pipeline completed successfully", | |
| "blocks": [ | |
| { | |
| "type": "section", | |
| "text": { | |
| "type": "mrkdwn", | |
| "text": "*Databricks Platform Marketplace*\n✅ Build Successful\n*Branch:* ${{ github.ref }}\n*Commit:* ${{ github.sha }}" | |
| } | |
| } | |
| ] | |
| } | |
| continue-on-error: true |