This repository was archived by the owner on Jun 8, 2026. It is now read-only.
-
-
Notifications
You must be signed in to change notification settings - Fork 0
Common Issues
GrammaTonic edited this page Sep 4, 2025
·
4 revisions
This page covers the most frequently encountered issues and their solutions.
Symptoms:
- Chrome tests fail with version compatibility errors
- Error: "This version of ChromeDriver only supports Chrome version X"
Solution:
# Check versions google-chrome --version chromedriver --version # Rebuild with latest ChromeDriver (fixed in latest version) ./scripts/build-chrome.sh --no-cache
Symptoms:
- Browser tests fail randomly
- Error: "Chrome crash detected"
- High memory usage
Solutions:
- Increase shared memory:
# In docker-compose.chrome.yml services: chrome-runner: shm_size: 4g # Increase from default 64MB
- Add Chrome stability flags:
--memory-pressure-off --max_old_space_size=4096 --disable-background-timer-throttling
Symptoms:
- Error: "No display specified"
- GUI applications fail to start
Solution:
# Check virtual display echo $DISPLAY # Should show :99 ps aux | grep Xvfb # Should show running Xvfb process # Restart virtual display if needed sudo pkill Xvfb Xvfb :99 -screen 0 1920x1080x24 & export DISPLAY=:99
Problem Solved: β This is exactly why the Chrome Runner was created!
Solution:
# Use dedicated Chrome Runner instead of standard runner # In your GitHub Actions workflow: jobs: ui-tests: runs-on: [self-hosted, chrome, ui-tests] # Use Chrome runner steps: - uses: actions/checkout@v4 - name: Run UI tests run: npx playwright test
Benefits:
- β 60% faster execution due to resource isolation
- β Pre-installed testing frameworks
- β Optimized Chrome configuration
- β Parallel test execution capability
π Full Chrome Runner Guide: Chrome Runner Documentation
Symptoms:
- Runner container starts but doesn't appear in GitHub
- Error: "HTTP 401: Bad credentials"
- Error: "HTTP 403: Forbidden"
Solutions:
- Check token permissions:
# Test token manually curl -H "Authorization: token YOUR_TOKEN" https://api.github.com/user # Required scopes for private repos # - repo (full control) # - workflow (update workflows)
- Verify repository format:
# Correct format GITHUB_REPOSITORY=owner/repository-name # Common mistakes GITHUB_REPOSITORY=https://github.com/owner/repo # β GITHUB_REPOSITORY=owner/repo.git # β
- Check token expiration:
# Check token expiration gh auth status # Regenerate if expired gh auth refresh
Symptoms:
- Error: "A runner exists with the same name"
- Multiple failed registration attempts
Solutions:
- Use unique runner names:
# Add timestamp or hostname RUNNER_NAME=runner-$(hostname)-$(date +%s) # Use container ID RUNNER_NAME=runner-$(cat /proc/self/cgroup | head -1 | cut -d/ -f3 | cut -c1-12)
- Remove existing runners:
# List current runners gh api repos/OWNER/REPO/actions/runners # Remove specific runner gh api repos/OWNER/REPO/actions/runners/RUNNER_ID -X DELETE
Symptoms:
- Error: "Cannot connect to the Docker daemon"
- Permission denied errors
- Socket not found
Solutions:
- Fix Docker socket permissions:
# Add user to docker group sudo usermod -aG docker $USER # Reload group membership newgrp docker # Test access docker ps
- Check Docker daemon status:
# Start Docker service sudo systemctl start docker sudo systemctl enable docker # Verify Docker is running docker version
- Mount Docker socket correctly:
volumes: - /var/run/docker.sock:/var/run/docker.sock:ro
Symptoms:
- Error: "No space left on device"
- Build failures during image pulls
- Container crashes
Solutions:
- Clean up Docker resources:
# Remove unused containers docker container prune -f # Remove unused images docker image prune -a -f # Remove unused volumes docker volume prune -f # Complete cleanup docker system prune -a --volumes -f
- Monitor disk usage:
# Check Docker disk usage docker system df # Check container sizes docker ps -s # Check volume sizes docker volume ls
- Configure log rotation:
services: runner: logging: driver: "json-file" options: max-size: "10m" max-file: "3"
Symptoms:
- Runner registers successfully
- Jobs fail with authentication errors
- Git clone/push operations fail
Solutions:
- Use GITHUB_TOKEN in workflows:
# In your workflow steps: - uses: actions/checkout@v4 with: token: ${{ secrets.GITHUB_TOKEN }}
- Configure Git credentials:
# In runner entrypoint git config --global url."https://${GITHUB_TOKEN}@github.com/".insteadOf "https://github.com/"
- Check token scope:
# Token needs 'repo' scope for private repositories # Token needs 'public_repo' scope for public repositories
Symptoms:
- Jobs take much longer than expected
- High CPU/memory usage
- Frequent timeouts
Solutions:
- Increase resource limits:
deploy: resources: limits: memory: 4g cpus: "2.0" reservations: memory: 1g cpus: "0.5"
- Optimize Docker builds:
# Use multi-stage builds FROM node:16-alpine as builder COPY package*.json ./ RUN npm ci --only=production FROM node:16-alpine as runtime COPY --from=builder /app/node_modules ./node_modules
- Enable build caching:
volumes: - build_cache:/root/.cache - deps_cache:/root/.npm
Symptoms:
- Gradually increasing memory usage
- Container restarts due to OOM
- System becomes unresponsive
Solutions:
- Monitor memory usage:
# Check container memory docker stats --no-stream # Check system memory free -h # Monitor over time watch -n 5 'docker stats --no-stream'
- Set memory limits:
deploy: resources: limits: memory: 2g
- Enable automatic restarts:
restart: unless-stopped healthcheck: test: ["CMD", "pgrep", "Runner.Listener"] interval: 30s timeout: 10s retries: 3
Symptoms:
- Network timeouts
- DNS resolution failures
- Proxy configuration issues
Solutions:
- Test connectivity:
# Test DNS resolution nslookup api.github.com # Test HTTPS connectivity curl -v https://api.github.com # Test with proxy curl -x proxy.company.com:8080 https://api.github.com
- Configure proxy settings:
# Environment variables export HTTP_PROXY=http://proxy.company.com:8080 export HTTPS_PROXY=http://proxy.company.com:8080 export NO_PROXY=localhost,127.0.0.1,10.0.0.0/8 # Docker proxy configuration
- Check firewall rules:
# Required ports # 443 (HTTPS) - api.github.com # 443 (HTTPS) - github.com # 443 (HTTPS) - objects.githubusercontent.com
Symptoms:
- Jobs queue up despite available resources
- Inconsistent runner availability
- Load balancing problems
Solutions:
- Check runner labels:
# Ensure consistent labels RUNNER_LABELS=self-hosted,linux,x64,docker # Verify in GitHub UI # Settings β Actions β Runners
- Configure proper scaling:
# Scale up docker compose up -d --scale runner=5 # Check running containers docker ps --filter "name=runner"
- Monitor job queue:
# Check queued jobs gh api repos/OWNER/REPO/actions/runs --jq '.workflow_runs[] | select(.status=="queued")'
# Access container shell docker exec -it github-runner_runner_1 /bin/bash # Check container logs docker logs github-runner_runner_1 --tail 100 -f # Inspect container configuration docker inspect github-runner_runner_1 # Check resource usage docker stats github-runner_runner_1
# Search for specific errors docker logs runner 2>&1 | grep -i error # Monitor real-time logs docker logs runner -f --tail 50 # Export logs for analysis docker logs runner > runner-logs-$(date +%Y%m%d).txt
# Check system resources htop iotop netstat -tulpn # Check Docker status systemctl status docker journalctl -u docker.service --since "1 hour ago" # Check file descriptors lsof | grep docker
When reporting issues, include:
- System information:
# Operating system uname -a # Docker version docker version # Docker Compose version docker compose version
- Configuration:
# Environment variables (redact secrets) env | grep -E "GITHUB|RUNNER|DOCKER" | sed 's/TOKEN=.*/TOKEN=***/' # Docker Compose configuration docker compose config
- Logs:
# Container logs docker logs runner --tail 100 # System logs journalctl -u docker.service --since "1 hour ago"
- GitHub Issues: Report bugs
- Discussions: Community support
- Documentation: Wiki home
- Debugging Guide - Advanced debugging techniques
- Performance Tuning - Optimization strategies
- Installation Guide - Setup instructions
- Docker Configuration - Docker setup