Skip to main content
Glama
adjust-branch-protection.shβ€’10.2 kB
#!/bin/bash # Branch Protection Adjustment Script # This script provides options to adjust GitHub branch protection rules set -e # Get repository dynamically or use provided argument/environment variable REPO="${1:-${REPO_NAME:-$(gh repo view --json nameWithOwner -q .nameWithOwner 2>/dev/null || echo "docdyhr/mcp-wordpress")}}" BRANCH="${2:-${BRANCH_NAME:-main}}" echo "πŸ›‘οΈ Branch Protection Adjustment Tool" echo "==================================" echo "Usage: $0 [repository-name] [branch-name]" echo " Or set REPO_NAME and BRANCH_NAME environment variables" echo "" echo "Repository: $REPO" echo "Branch: $BRANCH" echo "" # Function to show current protection status check_protection() { echo "πŸ“Š Current Protection Status:" gh api "repos/$REPO/branches/$BRANCH/protection" 2>/dev/null || echo "❌ Unable to fetch protection rules (may need authentication)" echo "" } # Function to adjust dependency review settings adjust_dependency_review() { echo "πŸ” Adjusting Dependency Review Settings..." # Option 1: Make dependency review non-blocking for automated PRs cat > .github/workflows/dependency-review-relaxed.yml << 'EOF' name: πŸ” Dependency Review (Relaxed) on: pull_request: types: [opened, synchronize, reopened] branches: [main] jobs: dependency-review: name: πŸ” Dependency Security Review runs-on: ubuntu-latest # Skip for automated dependency PRs using comprehensive detection if: | !( github.actor == 'dependabot[bot]' || github.actor == 'github-actions[bot]' || github.actor == 'renovate[bot]' || contains(github.event.pull_request.labels.*.name, 'dependencies') || contains(github.event.pull_request.labels.*.name, 'dependabot') || contains(github.event.pull_request.labels.*.name, 'dependency') || contains(github.head_ref, 'dependabot/') || contains(github.head_ref, 'renovate/') || contains(github.head_ref, 'deps/') || contains(github.head_ref, 'dependency') || contains(github.head_ref, 'update-') || contains(github.event.pull_request.title, 'bump') || contains(github.event.pull_request.title, 'update') || contains(github.event.pull_request.title, 'dependency') ) steps: - name: πŸ“₯ Checkout Code uses: actions/checkout@v4 - name: πŸ” Dependency Review uses: actions/dependency-review-action@v4 with: fail-on-severity: high # Changed from 'moderate' to 'high' fail-on-scopes: runtime allow-licenses: MIT, Apache-2.0, BSD-2-Clause, BSD-3-Clause, ISC, CC0-1.0, Unlicense, LGPL-2.1, LGPL-3.0 exclude-packages: | npm:@types/* npm:eslint* npm:prettier* npm:jest* npm:@jest/* comment-summary-in-pr: on-failure # Changed from 'always' vulnerability-check: true license-check: false # Disabled for automated updates EOF echo "βœ… Created relaxed dependency review workflow" } # Function to adjust security monitoring adjust_security_monitoring() { echo "πŸ”’ Adjusting Security Monitoring..." # Create a conditional security workflow cat > .github/workflows/security-monitoring-smart.yml << 'EOF' name: 'πŸ›‘οΈ Smart Security Monitoring' on: pull_request: branches: [ main ] paths-ignore: - 'package-lock.json' - '*.md' - 'docs/**' push: branches: [ main ] workflow_dispatch: jobs: security-scan: name: πŸ” Security Scan runs-on: ubuntu-latest # Skip for automated dependency PRs using comprehensive detection if: | !( github.actor == 'dependabot[bot]' || github.actor == 'github-actions[bot]' || github.actor == 'renovate[bot]' || contains(github.event.pull_request.labels.*.name, 'dependencies') || contains(github.event.pull_request.labels.*.name, 'dependabot') || contains(github.event.pull_request.labels.*.name, 'dependency') || contains(github.head_ref, 'dependabot/') || contains(github.head_ref, 'renovate/') || contains(github.head_ref, 'deps/') || contains(github.head_ref, 'dependency') || contains(github.head_ref, 'update-') || contains(github.event.pull_request.title, 'bump') || contains(github.event.pull_request.title, 'update') || contains(github.event.pull_request.title, 'dependency') ) steps: - name: πŸ“₯ Checkout code uses: actions/checkout@v4 - name: πŸ” Security Audit run: | npm audit --audit-level=high || echo "::warning::Security vulnerabilities found but not blocking" - name: πŸ“Š Security Report if: always() run: | echo "## πŸ” Security Scan Results" >> $GITHUB_STEP_SUMMARY echo "βœ… Security scan completed (non-blocking for dependency updates)" >> $GITHUB_STEP_SUMMARY EOF echo "βœ… Created smart security monitoring workflow" } # Function to adjust performance gates adjust_performance_gates() { echo "⚑ Adjusting Performance Gates..." # Create conditional performance testing cat > .github/workflows/performance-gates-smart.yml << 'EOF' name: Performance Gates (Smart) on: pull_request: branches: [ main ] paths: - 'src/**' - 'tests/**' - 'package.json' workflow_dispatch: jobs: performance-check: runs-on: ubuntu-latest # Skip for automated dependency PRs using comprehensive detection if: | !( github.actor == 'dependabot[bot]' || github.actor == 'github-actions[bot]' || github.actor == 'renovate[bot]' || contains(github.event.pull_request.labels.*.name, 'dependencies') || contains(github.event.pull_request.labels.*.name, 'dependabot') || contains(github.event.pull_request.labels.*.name, 'dependency') || contains(github.head_ref, 'dependabot/') || contains(github.head_ref, 'renovate/') || contains(github.head_ref, 'deps/') || contains(github.head_ref, 'dependency') || contains(github.head_ref, 'update-') || contains(github.event.pull_request.title, 'bump') || contains(github.event.pull_request.title, 'update') || contains(github.event.pull_request.title, 'dependency') ) timeout-minutes: 20 steps: - name: Checkout code 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 project run: npm run build - name: Run performance tests (non-blocking) run: | npm run test:performance || echo "::warning::Performance tests failed but not blocking dependency updates" continue-on-error: true - name: Performance Summary if: always() run: | echo "## ⚑ Performance Test Results" >> $GITHUB_STEP_SUMMARY echo "Tests completed (non-blocking for dependency updates)" >> $GITHUB_STEP_SUMMARY EOF echo "βœ… Created smart performance gates workflow" } # Function to create bypass labels create_bypass_labels() { echo "🏷️ Creating Bypass Labels..." # Create labels for bypassing certain checks gh label create "skip-dependency-review" --description "Skip dependency review checks" --color "d73a4a" 2>/dev/null || echo "Label may already exist" gh label create "skip-security-scan" --description "Skip security scanning" --color "d73a4a" 2>/dev/null || echo "Label may already exist" gh label create "skip-performance-gates" --description "Skip performance testing" --color "d73a4a" 2>/dev/null || echo "Label may already exist" gh label create "dependencies" --description "Dependency updates" --color "0366d6" 2>/dev/null || echo "Label may already exist" echo "βœ… Bypass labels created" } # Main menu show_menu() { echo "Choose an adjustment option:" echo "1. πŸ” Relax Dependency Review (recommended)" echo "2. πŸ”’ Adjust Security Monitoring" echo "3. ⚑ Adjust Performance Gates" echo "4. 🏷️ Create Bypass Labels" echo "5. πŸ“‹ Apply All Recommended Changes" echo "6. πŸ“Š Check Current Status" echo "7. ❌ Exit" echo "" read -p "Enter your choice (1-7): " choice } # Main execution main() { check_protection while true; do show_menu case $choice in 1) adjust_dependency_review echo "βœ… Dependency review settings adjusted" ;; 2) adjust_security_monitoring echo "βœ… Security monitoring settings adjusted" ;; 3) adjust_performance_gates echo "βœ… Performance gates settings adjusted" ;; 4) create_bypass_labels echo "βœ… Bypass labels created" ;; 5) echo "πŸ”§ Applying all recommended changes..." adjust_dependency_review adjust_security_monitoring adjust_performance_gates create_bypass_labels echo "βœ… All adjustments completed!" echo "" echo "πŸ“ Next steps:" echo "1. Review the generated workflow files" echo "2. Commit and push the changes" echo "3. Test with a new dependency update PR" break ;; 6) check_protection ;; 7) echo "πŸ‘‹ Exiting..." exit 0 ;; *) echo "❌ Invalid choice. Please try again." ;; esac echo "" done } # Check if gh CLI is available if ! command -v gh &> /dev/null; then echo "❌ GitHub CLI (gh) not found. Please install it first:" echo " brew install gh" exit 1 fi # Run main function main "$@"

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/docdyhr/mcp-wordpress'

If you have feedback or need assistance with the MCP directory API, please join our Discord server