- 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.
177 lines
3.9 KiB
Markdown
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.
|