# Cron Services Migration - Quick Start Guide

Fast-track guide to migrate tbi-acc-cron-service and tbi-acc-package-cron to CircleCI.

## Quick Overview

| Service | Technology | Environments | Namespace | Version |
|---------|-----------|--------------|-----------|---------|
| tbi-acc-cron-service | PHP 8.0 Lumen | dev, uat | access | 7.1.6 |
| tbi-acc-package-cron | PHP 7.3 Oracle | dev, prod | access | 1.4.1 |

## Step 1: Copy Files (5 minutes)

```bash
# Run the migration script
cd ~/Desktop/git-code/tbi-code/tbi-devops-environments
./scripts/migrate-cron-services.sh
```

Or manually:

```bash
# Service 1: tbi-acc-cron-service
cd ~/Desktop/git-code/tbi-code/tbi-acc-cron-service
git checkout -b circleci-migration
cp -r ~/Desktop/git-code/tbi-code/tbi-devops-environments/dev/tbi-acc-cron-service/{.circleci,docker,scripts,charts} .
chmod +x scripts/*.sh

# Service 2: tbi-acc-package-cron
cd ~/Desktop/git-code/tbi-code/tbi-acc-package-cron
git checkout -b circleci-migration
cp -r ~/Desktop/git-code/tbi-code/tbi-devops-environments/dev/tbi-acc-package-cron/{.circleci,docker,scripts,charts} .
chmod +x scripts/*.sh
```

## Step 2: Commit to Service Repos (5 minutes)

```bash
# tbi-acc-cron-service
cd ~/Desktop/git-code/tbi-code/tbi-acc-cron-service
git add .circleci/ docker/ scripts/ charts/
git commit -m "Add CircleCI pipeline configuration"
git push origin circleci-migration

# tbi-acc-package-cron
cd ~/Desktop/git-code/tbi-code/tbi-acc-package-cron
git add .circleci/ docker/ scripts/ charts/
git commit -m "Add CircleCI pipeline configuration"
git push origin circleci-migration
```

## Step 3: Configure tbi-environments (15 minutes)

### tbi-acc-cron-service

```bash
cd ~/Desktop/git-code/tbi-code/tbi-environments

# Dev values
cat > dev/values/tbi-acc-cron-service.yaml << 'EOF'
name: tbi-acc-cron-service
ingress_enabled: false
image: IMAGE_TO_REPLACE
group: access
node_env: development
port: 80
targetPort: 8000
replicaCount: 1

resources:
  requests:
    memory: "256Mi"
    cpu: "100m"
  limits:
    memory: "512Mi"
    cpu: "500m"

autoscaling:
  minReplicas: 1
  maxReplicas: 3
  metrics:
    - type: Resource
      resource:
        name: cpu
        targetAverageUtilization: 70

pdb:
  minAvailable: 1
EOF

# UAT values
cp dev/values/tbi-acc-cron-service.yaml uat/values/
sed -i '' 's/development/uat/' uat/values/tbi-acc-cron-service.yaml

# Dev secrets
cat > dev/secrets/secrets.tbi-acc-cron-service.yaml << 'EOF'
configs:
    APP_ENV: development
    APP_DEBUG: "true"
    # Add environment variables from .env.example
EOF

sops -e -i dev/secrets/secrets.tbi-acc-cron-service.yaml

# UAT secrets (copy and modify)
cp dev/secrets/secrets.tbi-acc-cron-service.yaml uat/secrets/
# Edit uat/secrets/secrets.tbi-acc-cron-service.yaml with UAT values
sops -e -i uat/secrets/secrets.tbi-acc-cron-service.yaml

# Update requirements
echo "  - name: tbi-acc-cron-service
    version: 7.1.6
    repository: https://tbi-charts.s3.amazonaws.com" >> dev/requirements.yaml

echo "  - name: tbi-acc-cron-service
    version: 7.1.6
    repository: https://tbi-charts.s3.amazonaws.com" >> uat/requirements.yaml
```

### tbi-acc-package-cron

```bash
# Dev values
cat > dev/values/tbi-acc-package-cron.yaml << 'EOF'
name: tbi-acc-package-cron
ingress_enabled: false
image: IMAGE_TO_REPLACE
group: access
node_env: development
port: 80
targetPort: 80
replicaCount: 1

resources:
  requests:
    memory: "512Mi"
    cpu: "200m"
  limits:
    memory: "1Gi"
    cpu: "1000m"

autoscaling:
  minReplicas: 1
  maxReplicas: 2
  metrics:
    - type: Resource
      resource:
        name: cpu
        targetAverageUtilization: 70

pdb:
  minAvailable: 1
EOF

# Prod values
cp dev/values/tbi-acc-package-cron.yaml prod/values/
sed -i '' 's/development/production/' prod/values/tbi-acc-package-cron.yaml

# Dev secrets
cat > dev/secrets/secrets.tbi-acc-package-cron.yaml << 'EOF'
configs:
    ORACLE_HOST: oracle-dev-host
    ORACLE_PORT: "1521"
    ORACLE_SID: ORCL
    ORACLE_USER: dev_user
    ORACLE_PASSWORD: dev_password
    # Add other environment variables
EOF

sops -e -i dev/secrets/secrets.tbi-acc-package-cron.yaml

# Prod secrets (copy and modify)
cp dev/secrets/secrets.tbi-acc-package-cron.yaml prod/secrets/
# Edit prod/secrets/secrets.tbi-acc-package-cron.yaml with prod values
sops -e -i prod/secrets/secrets.tbi-acc-package-cron.yaml

# Update requirements
echo "  - name: tbi-acc-package-cron
    version: 1.4.1
    repository: https://tbi-charts.s3.amazonaws.com" >> dev/requirements.yaml

echo "  - name: tbi-acc-package-cron
    version: 1.4.1
    repository: https://tbi-charts.s3.amazonaws.com" >> prod/requirements.yaml
```

### Commit tbi-environments changes

```bash
git add dev/values/ uat/values/ prod/values/
git add dev/secrets/ uat/secrets/ prod/secrets/
git add dev/requirements.yaml uat/requirements.yaml prod/requirements.yaml
git commit -m "Add configuration for tbi-acc-cron-service and tbi-acc-package-cron"
git push origin master
```

## Step 4: Test Deployments (10 minutes)

### Test tbi-acc-cron-service

```bash
cd ~/Desktop/git-code/tbi-code/tbi-acc-cron-service

# Merge to dev branch
git checkout dev
git merge circleci-migration
git push origin dev

# Watch CircleCI pipeline
# https://app.circleci.com/pipelines/github/redlabelvacations/tbi-acc-cron-service

# Verify deployment
kubectl get pods -n access -l app=tbi-acc-cron-service
kubectl logs -n access -l app=tbi-acc-cron-service --tail=50
```

### Test tbi-acc-package-cron

```bash
cd ~/Desktop/git-code/tbi-code/tbi-acc-package-cron

# Merge to dev branch
git checkout dev
git merge circleci-migration
git push origin dev

# Watch CircleCI pipeline
# https://app.circleci.com/pipelines/github/redlabelvacations/tbi-acc-package-cron

# Verify deployment
kubectl get pods -n access -l app=tbi-acc-package-cron
kubectl logs -n access -l app=tbi-acc-package-cron --tail=50
```

## Step 5: Deploy to UAT/Prod (5 minutes)

### tbi-acc-cron-service to UAT

```bash
cd ~/Desktop/git-code/tbi-code/tbi-acc-cron-service
git checkout uat
git merge dev
git push origin uat
```

### tbi-acc-package-cron to Prod

```bash
cd ~/Desktop/git-code/tbi-code/tbi-acc-package-cron
git checkout prod
git merge dev
git push origin prod
```

## Verification Commands

```bash
# Check deployments
kubectl get deployments -n access | grep tbi-acc

# Check pods
kubectl get pods -n access | grep tbi-acc

# Check logs
kubectl logs -n access -l app=tbi-acc-cron-service --tail=100
kubectl logs -n access -l app=tbi-acc-package-cron --tail=100

# Check Helm releases
helm list -n access | grep tbi-acc

# Describe deployment
kubectl describe deployment tbi-acc-cron-service -n access
kubectl describe deployment tbi-acc-package-cron -n access
```

## Troubleshooting

### Pipeline fails at build
- Check Dockerfile syntax
- Verify VERSION file exists
- Check CircleCI context configuration

### Pipeline fails at deploy
- Verify GITHUB_TOKEN is set in CircleCI context
- Check AWS credentials
- Verify CLUSTER_NAME is set correctly

### Pod CrashLoopBackOff
- Check logs: `kubectl logs -n access <pod-name>`
- Verify environment variables in secrets
- Check resource limits

### Image pull errors
- Verify ECR repository exists
- Check AWS credentials in CircleCI
- Verify image tag format

## Rollback

If something goes wrong:

```bash
# Rollback Helm release
helm rollback tbi-acc-cron-service -n access
helm rollback tbi-acc-package-cron -n access

# Or revert git changes
git revert HEAD
git push origin <branch>
```

## Success Criteria

✅ CircleCI pipeline runs successfully
✅ Docker image builds and pushes to ECR
✅ Helm chart packages and uploads to S3
✅ Kubernetes deployment succeeds
✅ Pods are running and healthy
✅ Application logs show no errors
✅ Health checks pass

## Time Estimate

- File copying: 5 minutes
- Git commits: 5 minutes
- tbi-environments config: 15 minutes
- Testing dev: 10 minutes
- Deploy to uat/prod: 5 minutes

**Total: ~40 minutes per service**

## Support

For detailed information, see:
- `docs/BATCH-3-CRON-SERVICES-MIGRATION.md` - Complete guide
- `docs/CRON-SERVICES-FILES-CREATED.md` - File listing
- `dev/tbi-acc-cron-service/README.md` - Service 1 docs
- `dev/tbi-acc-package-cron/README.md` - Service 2 docs

Contact DevOps team for assistance.
