This repository is intended to test for potential conflicts with Zscaler in software development environments. It contains automated scripts to systematically test Docker builds and Node.js package installations across a comprehensive collection of DEFRA repositories to identify any issues that may arise when using Zscaler network security solutions.
Zscaler is a cloud-based security platform that can sometimes interfere with development workflows, particularly around:
- SSL/TLS certificate validation
- Network connectivity to package registries (npm, Docker Hub, etc.)
- Proxy configurations
- DNS resolution
This testing suite helps identify and document such issues by running realistic development scenarios across a large number of real-world repositories.
The testing approach follows a systematic three-phase methodology:
Retrieve all public images from DEFRA GitHub organization.
For all repositories containing a Dockerfile, build the Docker image and report any issues that may arise due to network restrictions, certificate validation problems, or other Zscaler-related interference.
For all Node.js repositories (containing package.json
files), run npm install
and report any issues related to package registry access, SSL certificate validation, or network connectivity problems.
Purpose: Discovers and clones repositories for testing
Features:
- Fetches repository list from DEFRA GitHub organization
- Clones all repositories
- Comprehensive logging of successful clones and missing repositories
Usage:
./clone-repos.sh
Dependencies:
curl
- For API requestsjq
- For JSON processinggit
- For repository cloning
Purpose: Tests Docker image building across all cloned repositories
Features:
- Automatically discovers Dockerfiles in all cloned repositories
- Builds Docker images with live output showing real-time progress
- 600-second timeout protection to prevent hanging builds
- Comprehensive error logging and reporting
- Automatic cleanup of successfully built images to save disk space
- Detailed build logs saved to
docker_build_logs/
directory
Usage:
./build-docker.sh
Log Files:
docker_build_summary.log
- Summary of all build attemptsdocker_build_errors.txt
- Error report with references to detailed logsdocker_build_logs/
- Directory containing detailed build logs for each repository
Dependencies:
- Docker daemon running
- Sufficient disk space for temporary image storage
Purpose: Tests Node.js package installation across all repositories
Features:
- Automatically discovers
package.json
files in all cloned repositories - Runs
npm install
with live output showing real-time progress - 600-second timeout protection per installation
- Comprehensive error logging and reporting
- Detailed installation logs for troubleshooting
Usage:
./npm-install.sh
Log Files:
npm_install_summary.log
- Summary of all installation attemptsnpm_install_errors.txt
- Error report with references to detailed logsnpm_install_logs/
- Directory containing detailed installation logs
Dependencies:
- Node.js and npm installed
- Network access to npm registry
Based on testing, the following issues may be encountered when using Zscaler:
- Symptom: SSL certificate validation failures during package downloads
- Example: Alpine package manager failing with certificate errors
- Solution: Configure proper certificate handling or certificate pinning bypass
- Symptom: Timeouts or connection refused errors to registries
- Example: npm registry connection failures
- Solution: Configure proxy settings and firewall rules
- Symptom: Unable to resolve package registry domains
- Example: Docker Hub or npm registry DNS failures
- Solution: Configure proper DNS settings and domain whitelisting
To run the complete testing methodology:
-
Clone repositories:
./clone-repos.sh
-
Test Docker builds:
./build-docker.sh
-
Test npm installations:
./npm-install.sh
-
Review results:
# Check summaries cat docker_build_summary.log cat npm_install_summary.log # Check error reports cat docker_build_errors.txt cat npm_install_errors.txt
- Operations that complete without errors indicate no Zscaler interference
- These represent baseline functionality that should continue to work
- Failed builds or installations may indicate Zscaler-related issues
- Review detailed logs to determine if failures are network/security related
- Common patterns in failures can help identify systematic Zscaler configuration issues
If you encounter issues:
- Check network connectivity: Ensure basic internet access is working
- Verify Docker daemon: Ensure Docker is running for build tests
- Check Node.js/npm: Ensure Node.js and npm are properly installed
- Review logs: Check detailed logs in the respective log directories
- Proxy configuration: Ensure Zscaler proxy settings are properly configured for development tools
When adding new test scenarios:
- Follow the established logging patterns
- Include timeout protection for long-running operations
- Provide both summary and detailed logging
- Update this README with new methodologies or findings
This testing suite helps ensure development workflows remain functional when using Zscaler network security solutions.