Files
next.orly.dev/docs/DEPLOYMENT_TESTING.md
mleku 44d22a383e
Some checks failed
Go / build (push) Has been cancelled
Go / release (push) Has been cancelled
Update dependencies and enhance deployment scripts
- Bumped versions of several dependencies in go.mod, including golang.org/x/crypto to v0.43.0 and golang.org/x/net to v0.46.0.
- Added new indirect dependencies for improved functionality.
- Removed outdated files: package.json, POLICY_TESTS_SUCCESS.md, and POLICY_TESTS_SUMMARY.md.
- Introduced a comprehensive deployment script for automated setup and configuration.
- Added testing scripts for deployment validation and policy system tests.
- Bumped version to v0.19.0.
2025-10-24 21:03:44 +01:00

177 lines
3.9 KiB
Markdown

# Deployment Testing
This directory contains tools for testing the ORLY deployment script to ensure it works correctly across different environments.
## Test Scripts
### Local Testing (Recommended)
```bash
./scripts/test-deploy-local.sh
```
This script tests the deployment functionality locally without requiring Docker. It validates:
- ✅ Script help functionality
- ✅ Required files and permissions
- ✅ Go download URL accessibility
- ✅ Environment file generation
- ✅ Systemd service file creation
- ✅ Go module configuration
- ✅ Build capability (if Go is available)
### Docker Testing
```bash
./scripts/test-deploy-docker.sh
```
This script creates a clean Ubuntu 22.04 container and tests the full deployment process. Requires Docker to be installed and accessible.
If you get permission errors, try:
```bash
sudo ./scripts/test-deploy-docker.sh
```
Or add your user to the docker group:
```bash
sudo usermod -aG docker $USER
newgrp docker
```
## Docker Files
### `scripts/Dockerfile.deploy-test`
A comprehensive Docker image that:
- Starts with Ubuntu 22.04
- Creates a non-root test user
- Copies the project files
- Runs extensive deployment validation tests
- Generates a detailed test report
### `.dockerignore`
Optimizes Docker builds by excluding unnecessary files like:
- Build artifacts
- IDE files
- Git history
- Node modules (rebuilt during test)
- Documentation files
## Test Coverage
The tests validate all aspects of the deployment script:
1. **Environment Setup**
- Go installation detection
- Directory creation
- Environment file generation
- Shell configuration
2. **Dependency Management**
- Go download URL validation
- Build dependency scripts
- Web UI build process
3. **System Integration**
- Systemd service creation
- Capability setting for port 443
- Binary installation
- Security hardening
4. **Error Handling**
- Invalid directory detection
- Missing file validation
- Permission checks
- Network accessibility
## Usage Examples
### Quick Validation
```bash
# Test locally (fastest)
./scripts/test-deploy-local.sh
# View the generated report
cat deployment-test-report.txt
```
### Full Environment Testing
```bash
# Test in clean Docker environment
./scripts/test-deploy-docker.sh
# Test with different architectures
docker build --platform linux/arm64 -f scripts/Dockerfile.deploy-test -t orly-deploy-test-arm64 .
docker run --rm orly-deploy-test-arm64
```
### CI/CD Integration
```bash
# In your CI pipeline
./scripts/test-deploy-local.sh || exit 1
echo "Deployment script validation passed"
```
## Troubleshooting
### Docker Permission Issues
```bash
# Add user to docker group
sudo usermod -aG docker $USER
newgrp docker
# Or run with sudo
sudo ./scripts/test-deploy-docker.sh
```
### Missing Dependencies
```bash
# Install curl for URL testing
sudo apt install curl
# Install Docker
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
```
### Build Test Failures
The build test may be skipped if:
- Go is not installed
- Build dependencies are missing
- Network is unavailable
This is normal for testing environments and doesn't affect deployment validation.
## Test Reports
Both test scripts generate detailed reports:
- **Local**: `deployment-test-report.txt`
- **Docker**: Displayed in container output
Reports include:
- System information
- Test results summary
- Validation status for each component
- Deployment readiness confirmation
## Integration with Deployment
These tests are designed to validate the deployment script before actual deployment:
```bash
# 1. Test the deployment script
./scripts/test-deploy-local.sh
# 2. If tests pass, deploy to production
./scripts/deploy.sh
# 3. Configure and start the service
export ORLY_TLS_DOMAINS=relay.example.com
sudo systemctl start orly
```
The tests ensure that the deployment script will work correctly in production environments.