Skip to main content
This guide helps you diagnose and resolve common issues with Skyhook CI/CD workflows.

Build Failures

Docker Build Fails

Symptoms:
  • Build step fails in GitHub Actions
  • Error messages about Dockerfile syntax or missing files
  • Build context errors
Common causes and solutions:
  1. Invalid Dockerfile syntax
  2. Missing files or directories
  3. Base image not found
  4. Build context too large
Debugging steps:
  1. Review the full build logs in GitHub Actions
  2. Try building locally: docker build -t test .
  3. Check recent changes to Dockerfile or dependencies
  4. Verify all required files are in the repository

Image Push Fails

Symptoms:
  • Build succeeds but push to registry fails
  • Authentication errors to container registry
  • “Repository does not exist” errors
Common causes and solutions:
  1. Invalid registry credentials
  2. Repository doesn’t exist
  3. Registry URL is incorrect
Debugging steps:
  1. Verify registry URL in workflow logs
  2. Test authentication manually with cloud CLI tools
  3. Check registry permissions in cloud console
  4. Review GitHub secrets configuration

Deployment Failures

CI workflow ignores the ref you picked

Applies to services on older or customized workflow files — current generated workflows declare ref already, so if you haven’t modified yours you won’t hit this. Symptoms:
  • Deploying from a branch works, but the workflow runs against main instead of the ref you picked in the Skyhook UI
  • Skyhook’s deploy triggers a workflow run with no ref parameter applied
Cause: Skyhook passes a ref input to your workflow_dispatch call. If your workflow file doesn’t declare that input, GitHub rejects the value silently and falls back to the HEAD of the target branch. Fix: The fastest path is to regenerate your workflows with the CLI, which ships the current template (including the ref input):
If you’ve customized the workflow and want to keep your changes, add ref manually:

kubectl Deployment Fails

Symptoms:
  • Deployment step fails after successful build
  • “connection refused” or “unauthorized” errors
  • kubectl commands timeout
Common causes and solutions:
  1. Invalid cluster credentials
  2. Cluster name format incorrect
  3. Insufficient permissions
  4. Invalid Kubernetes manifests
Debugging steps:
  1. Review kubectl output in workflow logs
  2. Verify cluster exists and is accessible
  3. Check Kubernetes manifest syntax
  4. Test deployment locally with kubectl

ArgoCD Not Syncing

Symptoms:
  • Workflow completes but changes don’t appear in cluster
  • ArgoCD shows “OutOfSync” status
  • Application health degraded
Common causes and solutions:
  1. ArgoCD not configured correctly
  2. Repository access issues
  3. Manifest path incorrect
  4. Sync policy prevents auto-sync
Debugging steps:
  1. Check ArgoCD UI for application status
  2. Review ArgoCD application logs: kubectl logs -n argocd <argocd-server-pod>
  3. Verify Git commits appear in deployment repository
  4. Manually trigger sync in ArgoCD UI
  5. Check ArgoCD application events: kubectl describe application -n argocd <app-name>

Authentication Issues

AWS Authentication Fails

Symptoms:
  • “Unable to locate credentials” error
  • “Access denied” when accessing EKS or ECR
  • OIDC token validation errors
Common causes and solutions:
  1. OIDC provider not configured
  2. IAM role trust policy incorrect
  3. Missing IAM permissions
  4. AWS_DEPLOY_ROLE variable not set
Debugging steps:
  1. Verify OIDC provider exists in IAM
  2. Check role ARN is correct in GitHub variable
  3. Review IAM role trust policy and permissions
  4. Test role assumption locally with AWS CLI

GCP Authentication Fails

Symptoms:
  • “Permission denied” errors
  • “Invalid JWT” or token validation errors
  • Cannot access GKE or Artifact Registry
Common causes and solutions:
  1. Workload Identity not configured
  2. Service account permissions missing
  3. Workload Identity binding incorrect
  4. WIF variables not set correctly
Debugging steps:
  1. Verify Workload Identity pool and provider exist
  2. Check service account has necessary roles
  3. Review Workload Identity binding for repository
  4. Test authentication locally with gcloud

GitHub Authentication Fails

Symptoms:
  • Cannot access deployment repository
  • “Resource not accessible by integration” error
  • PAT or GitHub App authentication fails
Common causes and solutions:
  1. GitHub App not installed
  2. GitHub App credentials incorrect
  3. PAT lacks required permissions
  4. Cross-organization access
Debugging steps:
  1. Verify GitHub App installation and permissions
  2. Check secret values are complete and correct
  3. Test repository access manually
  4. Review workflow logs for specific error messages

Common Error Messages

”ImagePullBackOff” in Kubernetes

Cause: Kubernetes cannot pull the Docker image Solutions:
  1. Verify image tag exists in registry
  2. Check image name and registry URL are correct
  3. Ensure Kubernetes has credentials to access private registry
  4. For ECR: Verify ECR image pull secret is configured
  5. Check network connectivity from cluster to registry

”CrashLoopBackOff” in Kubernetes

Cause: Container starts but immediately crashes Solutions:
  1. Check application logs: kubectl logs <pod-name>
  2. Verify environment variables are set correctly
  3. Ensure required secrets and config maps exist
  4. Check application dependencies (database, APIs) are accessible
  5. Review resource limits aren’t too restrictive

”Workflow dispatch failed”

Cause: Cannot trigger GitHub Actions workflow Solutions:
  1. Verify workflow file exists in repository
  2. Check workflow_dispatch trigger is configured
  3. Ensure you have permission to trigger workflows
  4. Review workflow inputs match expected parameters
  5. Check GitHub Actions is enabled for repository

Getting Help

If you’re still experiencing issues:
  1. Check GitHub Actions logs - Detailed error messages and stack traces
  2. Review Skyhook documentation - Additional guides and examples
  3. Verify configuration - Double-check .koala.toml and secrets
  4. Test components individually - Isolate the failing step
  5. Contact support - Provide workflow run URL and error details

Next Steps