Files
metabuilder/tools/misc/migrate/setup-act.sh

130 lines
3.7 KiB
Bash

#!/usr/bin/env bash
# MetaBuilder Act - Quick Start Script
# Run this to set up and test act integration
# Usage: bash setup-act.sh
set -e
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m'
echo -e "${BLUE}╔════════════════════════════════════════════════════════╗${NC}"
echo -e "${BLUE}║ MetaBuilder - Act Integration Quick Start ║${NC}"
echo -e "${BLUE}╚════════════════════════════════════════════════════════╝${NC}"
echo ""
# Step 1: Check prerequisites
echo -e "${YELLOW}Step 1: Checking prerequisites...${NC}"
echo ""
# Check act
if command -v act &> /dev/null; then
echo -e "${GREEN}✓ act is installed${NC} ($(act --version))"
else
echo -e "${RED}✗ act is not installed${NC}"
echo ""
echo "Install using:"
echo " macOS: brew install act"
echo " Linux: curl https://raw.githubusercontent.com/nektos/act/master/install.sh | sudo bash"
echo " Windows: choco install act-cli"
echo ""
exit 1
fi
# Check Docker
if docker info &> /dev/null; then
echo -e "${GREEN}✓ Docker is running${NC}"
else
echo -e "${RED}✗ Docker is not running${NC}"
echo "Please start Docker and try again"
exit 1
fi
# Check npm
if command -v npm &> /dev/null; then
echo -e "${GREEN}✓ npm is installed${NC} (v$(npm --version))"
else
echo -e "${RED}✗ npm is not installed${NC}"
exit 1
fi
echo ""
# Step 2: Run diagnostics
echo -e "${YELLOW}Step 2: Running workflow diagnostics (no Docker)...${NC}"
echo ""
if [ -x "scripts/diagnose-workflows.sh" ]; then
./scripts/diagnose-workflows.sh
else
chmod +x scripts/diagnose-workflows.sh
./scripts/diagnose-workflows.sh
fi
echo ""
# Step 3: Test basic act command
echo -e "${YELLOW}Step 3: Testing act with dry-run...${NC}"
echo ""
echo "Running: act -n (preview mode)"
if act -n push -W .github/workflows/ci.yml -P ubuntu-latest=catthehacker/ubuntu:act-latest 2>&1 | head -20; then
echo -e "${GREEN}✓ Dry-run successful - workflows are valid${NC}"
else
echo -e "${RED}✗ Dry-run failed - check configuration${NC}"
exit 1
fi
echo ""
# Step 4: Setup secrets (optional)
echo -e "${YELLOW}Step 4: Secrets configuration (optional)${NC}"
echo ""
if [ ! -f ".secrets" ]; then
echo "To use GitHub secrets, create a .secrets file:"
echo " cp .secrets.example .secrets"
echo " # Edit .secrets with your GitHub token"
echo ""
echo "Then use: act --secret-file .secrets"
fi
echo ""
# Step 5: Show quick commands
echo -e "${YELLOW}Step 5: Ready to use!${NC}"
echo ""
echo -e "${BLUE}Quick commands:${NC}"
echo ""
echo -e " ${GREEN}npm run act:lint${NC} # Test linting (2-3 min)"
echo -e " ${GREEN}npm run act:build${NC} # Test build (3-5 min)"
echo -e " ${GREEN}npm run act:e2e${NC} # Test e2e tests (4-6 min)"
echo -e " ${GREEN}npm run act${NC} # Full CI pipeline (8-15 min)"
echo ""
echo -e " ${GREEN}npm run act:test${NC} # Interactive menu"
echo -e " ${GREEN}npm run act:diagnose${NC} # Check setup"
echo ""
# Step 6: Offer to run a test
echo -e "${YELLOW}Step 6: Run a test?${NC}"
echo ""
read -p "Run npm run act:lint now? (y/n): " run_test
if [ "$run_test" = "y" ] || [ "$run_test" = "Y" ]; then
echo ""
npm run act:lint
else
echo ""
echo -e "${GREEN}Setup complete!${NC}"
echo ""
echo "Next steps:"
echo " 1. Read: docs/guides/ACT_CHEAT_SHEET.md"
echo " 2. Test: npm run act:lint"
echo " 3. Push with confidence: npm run act"
echo ""
fi