Examples
This page provides practical examples of using PAB CLI in various scenarios.
Basic Usage Examples
First-Time Setup
Complete setup flow for new users:
# Install PAB CLI
pip install pab-cli
# Login to APCloudy
pab login
# Enter your API key when prompted
# Check available projects
pab projects
# Deploy your first spider
cd my-scrapy-project
pab deploy 123
Daily Development Workflow
Typical workflow for spider development:
# Start development session
cd my-scrapy-project
# Test spider locally first
scrapy crawl my_spider
# Deploy to APCloudy when ready
pab deploy 123
# Verify deployment
pab spiders 123
Project Management Examples
Working with Multiple Projects
# List all projects to see available options
pab projects
# Deploy different spiders to different projects
cd ecommerce-scraper
pab deploy 123 # Deploy to ecommerce project
cd ../news-scraper
pab deploy 456 # Deploy to news project
cd ../monitoring-scraper
pab deploy 789 # Deploy to monitoring project
Project Information Gathering
# Get overview of all projects
pab projects
# Check spiders in specific projects
pab spiders 123
pab spiders 456
pab spiders 789
# Compare project contents
echo "Ecommerce project spiders:"
pab spiders 123
echo -e "\nNews project spiders:"
pab spiders 456
Authentication Examples
Switching Between Accounts
# Check current login status
pab projects # This will show projects for current account
# Switch to different account
pab logout
pab login --api-key different_account_key
# Verify new account
pab projects
Using Environment Variables
# Set API key in environment
export PAB_API_KEY=your_api_key_here
# Login will use the environment variable
pab login
# Or use directly with commands
PAB_API_KEY=your_key pab projects
Advanced Deployment Examples
Deploying Multiple Projects
Shell script for deploying multiple projects:
#!/bin/bash
# deploy_all.sh
projects=(
"/path/to/ecommerce-scraper:123"
"/path/to/news-scraper:456"
"/path/to/price-monitor:789"
)
for project in "${projects[@]}"; do
IFS=':' read -r path project_id <<< "$project"
echo "Deploying $path to project $project_id"
cd "$path"
pab deploy "$project_id"
echo "---"
done
Conditional Deployment
Deploy only if tests pass:
#!/bin/bash
# smart_deploy.sh
PROJECT_ID=$1
if [ -z "$PROJECT_ID" ]; then
echo "Usage: $0 <project_id>"
exit 1
fi
# Run tests first
echo "Running tests..."
if scrapy check; then
echo "Tests passed, deploying..."
pab deploy "$PROJECT_ID"
echo "Deployment complete!"
else
echo "Tests failed, deployment aborted."
exit 1
fi
CI/CD Integration Examples
GitHub Actions
.github/workflows/deploy.yml:
name: Deploy to APCloudy
on:
push:
branches: [ main ]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: 3.9
- name: Install dependencies
run: |
pip install pab-cli
pip install -r requirements.txt
- name: Deploy to APCloudy
env:
PAB_API_KEY: ${{ secrets.PAB_API_KEY }}
run: |
pab login
pab deploy ${{ secrets.PROJECT_ID }}
GitLab CI
.gitlab-ci.yml:
stages:
- test
- deploy
test:
stage: test
script:
- pip install -r requirements.txt
- scrapy check
deploy:
stage: deploy
script:
- pip install pab-cli
- pab login
- pab deploy $PROJECT_ID
variables:
PAB_API_KEY: $API_KEY
PROJECT_ID: "123"
only:
- main
Error Handling Examples
Robust Deployment Script
#!/bin/bash
# robust_deploy.sh
PROJECT_ID=$1
MAX_RETRIES=3
RETRY_COUNT=0
deploy_with_retry() {
while [ $RETRY_COUNT -lt $MAX_RETRIES ]; do
echo "Deployment attempt $((RETRY_COUNT + 1))..."
if pab deploy "$PROJECT_ID"; then
echo "Deployment successful!"
return 0
else
echo "Deployment failed, retrying..."
RETRY_COUNT=$((RETRY_COUNT + 1))
sleep 5
fi
done
echo "Deployment failed after $MAX_RETRIES attempts"
return 1
}
# Check if logged in
if ! pab projects > /dev/null 2>&1; then
echo "Not logged in, please run 'pab login' first"
exit 1
fi
# Deploy with retry logic
deploy_with_retry
Validation Before Deployment
#!/bin/bash
# validate_and_deploy.sh
PROJECT_ID=$1
# Validation checks
echo "Running pre-deployment validation..."
# Check if we're in a Scrapy project
if [ ! -f "scrapy.cfg" ]; then
echo "Error: Not in a Scrapy project directory"
exit 1
fi
# Check if authenticated
if ! pab projects > /dev/null 2>&1; then
echo "Error: Not authenticated with APCloudy"
exit 1
fi
# Check if project exists
if ! pab projects | grep -q "$PROJECT_ID"; then
echo "Error: Project $PROJECT_ID not found"
exit 1
fi
# All checks passed, deploy
echo "Validation passed, deploying..."
pab deploy "$PROJECT_ID"
Monitoring and Logging Examples
Deployment with Logging
#!/bin/bash
# deploy_with_logging.sh
PROJECT_ID=$1
LOG_FILE="deployment_$(date +%Y%m%d_%H%M%S).log"
{
echo "=== Deployment started at $(date) ==="
echo "Project ID: $PROJECT_ID"
echo "Working directory: $(pwd)"
echo "PAB CLI version: $(pab --version)"
echo ""
pab deploy "$PROJECT_ID"
echo ""
echo "=== Deployment finished at $(date) ==="
} 2>&1 | tee "$LOG_FILE"
echo "Deployment log saved to: $LOG_FILE"
Health Check After Deployment
#!/bin/bash
# deploy_and_verify.sh
PROJECT_ID=$1
echo "Deploying to project $PROJECT_ID..."
if pab deploy "$PROJECT_ID"; then
echo "Deployment successful!"
echo "Verifying spiders..."
pab spiders "$PROJECT_ID"
echo "Deployment verification complete!"
else
echo "Deployment failed!"
exit 1
fi
Development Workflow Examples
Feature Branch Deployment
#!/bin/bash
# feature_deploy.sh
FEATURE_BRANCH=$(git branch --show-current)
PROJECT_ID=$1
if [ "$FEATURE_BRANCH" = "main" ]; then
echo "Deploying main branch to production project..."
pab deploy "$PROJECT_ID"
else
echo "Deploying feature branch '$FEATURE_BRANCH' to staging..."
# Use staging project ID
pab deploy 999
fi
Development Environment Setup
#!/bin/bash
# setup_dev_env.sh
echo "Setting up PAB CLI development environment..."
# Create virtual environment
python -m venv pab-dev
source pab-dev/bin/activate # Linux/macOS
# pab-dev\Scripts\activate # Windows
# Install PAB CLI
pip install pab-cli
# Login to development environment
export PAB_ENDPOINT=https://staging-api.apcloudy.com
pab login
echo "Development environment ready!"
echo "Use 'source pab-dev/bin/activate' to activate"
Troubleshooting Examples
Connection Testing
#!/bin/bash
# test_connection.sh
echo "Testing PAB CLI connection..."
# Test authentication
if pab projects > /dev/null 2>&1; then
echo "✓ Authentication successful"
else
echo "✗ Authentication failed"
echo "Try running 'pab login' first"
exit 1
fi
# Test project access
PROJECT_COUNT=$(pab projects 2>/dev/null | grep "Available projects:" | cut -d: -f2 | tr -d ' ')
echo "✓ Found $PROJECT_COUNT projects"
echo "Connection test complete!"
These examples cover common use cases and can be adapted to your specific needs. For more complex scenarios, combine these patterns or refer to the Commands Reference for detailed options.