Thank you for considering contributing to n8n Cloud Deploy! This document provides guidelines and instructions for contributing.
- Code of Conduct
- How Can I Contribute?
- Development Setup
- Pull Request Process
- Coding Standards
- Testing
This project follows a simple code of conduct:
- Be respectful and inclusive
- Focus on constructive feedback
- Help others learn and grow
- Keep discussions professional
Before creating a bug report:
- Check the existing issues
- Review the troubleshooting guide
- Ensure you're using the latest version
When creating a bug report, include:
- Clear, descriptive title
- Steps to reproduce
- Expected vs. actual behavior
- Environment details (OS, gcloud version, etc.)
- Relevant logs or error messages
Enhancement suggestions are welcome! Please:
- Check if the feature has already been suggested
- Provide a clear use case
- Explain why it would be useful to others
- Consider implementation details if possible
We actively welcome your pull requests! Here's how:
- Fork the repository
- Create a feature branch from
main - Make your changes
- Test thoroughly
- Submit a pull request
- Bash 4.0+
- Google Cloud SDK
- Access to a GCP project for testing
- A test domain (optional but recommended)
# Clone your fork
git clone https://github.com/YOUR_USERNAME/n8n-cloud-deploy.git
cd n8n-cloud-deploy
# Add upstream remote
git remote add upstream https://github.com/llmx-de/n8n-cloud-deploy.git
# Create a branch for your changes
git checkout -b feature/your-feature-nameBefore submitting:
- Shellcheck your scripts:
# Install shellcheck
brew install shellcheck # macOS
sudo apt install shellcheck # Ubuntu
# Check scripts
shellcheck provision-cloud.sh
shellcheck setup-instance.sh
shellcheck cleanup.sh
shellcheck install.sh- Manual testing:
# Test deployment (use a test project!)
bash provision-cloud.sh
# Test cleanup
bash cleanup.sh
# Test one-liner (if changed install.sh)
curl -fsSL http://localhost:8000/install.sh | bash # Use local server- Documentation:
- Update README.md if user-facing changes
- Update INSTALL.md for installation process changes
- Update CLAUDE.md for architectural changes
- Code follows shell scripting best practices
- All scripts pass shellcheck
- Changes have been tested manually
- Documentation has been updated
- Commit messages are clear and descriptive
Use clear, descriptive commit messages:
Add DNS propagation verification to provision script
- Implements auto-retry logic with 10 attempts
- Shows progress to user
- Allows user to continue or cancel
- Fixes #123
Good commit messages:
- Start with a verb (Add, Fix, Update, Remove, etc.)
- Keep first line under 50 characters
- Provide context in the body if needed
- Reference issues when applicable
Bad commit messages:
- "fix bug"
- "changes"
- "wip"
## Description
Brief description of what this PR does.
## Type of Change
- [ ] Bug fix
- [ ] New feature
- [ ] Documentation update
- [ ] Refactoring
## Testing Done
- [ ] Tested deployment from scratch
- [ ] Tested cleanup functionality
- [ ] Tested with existing resources
- [ ] Shellcheck passed
## Related Issues
Fixes #(issue number)
## Screenshots (if applicable)- Maintainers will review your PR
- Address any requested changes
- Once approved, your PR will be merged
- Delete your feature branch after merge
1. Use Bash explicitly:
#!/bin/bash2. Enable strict mode:
set -e # Exit on error3. Quote variables:
# Good
gcloud compute instances create "$INSTANCE_NAME"
# Bad
gcloud compute instances create $INSTANCE_NAME4. Use meaningful variable names:
# Good
INSTANCE_NAME="n8n-instance"
REGION="us-central1"
# Bad
NAME="n8n-instance"
R="us-central1"5. Add comments for complex logic:
# Check if static IP already exists to avoid duplicate creation
if gcloud compute addresses describe "$STATIC_IP_NAME" --region="$REGION" &>/dev/null; then
echo "Static IP already exists. Using existing IP..."
fi6. Validate user input:
if [ -z "$DOMAIN_NAME" ]; then
echo "Error: Domain name cannot be empty."
exit 1
fi7. Provide helpful error messages:
# Good
echo "❌ Error: gcloud CLI not found!"
echo ""
echo "Please install Google Cloud SDK first:"
echo " https://cloud.google.com/sdk/docs/install"
# Bad
echo "Error"8. Use functions for repeated code:
download_file() {
local file=$1
local url="$REPO_URL/$file"
if curl -fsSL "$url" -o "$file" 2>/dev/null; then
echo "✓ Downloaded: $file"
return 0
else
echo "❌ Failed to download: $file"
return 1
fi
}- Use clear, simple language
- Provide code examples where helpful
- Include expected output for commands
- Add troubleshooting tips for common issues
- Keep formatting consistent
Before submitting a PR, test these scenarios:
- Fresh deployment with all default options
- Fresh deployment with custom machine type
- Fresh deployment with existing static IP
- Fresh deployment with existing firewall rule
- Deployment with invalid domain name (should fail gracefully)
- Deployment with non-propagated DNS (should retry/warn)
- Delete all resources
- Delete only instance (keep IP and firewall)
- Delete with no resources present (should exit gracefully)
- Cancel cleanup at various stages
- No gcloud installed (should error helpfully)
- Not authenticated to gcloud (should error helpfully)
- No GCP projects available (should error helpfully)
- Network timeout during resource creation
- Ctrl+C during deployment (cleanup state)
Use a dedicated GCP project for testing:
- Project name:
n8n-deploy-testingor similar - Keep costs low (use e2-micro for testing)
- Clean up resources after testing
- Don't test in production projects!
Looking for ideas? Here are areas that need help:
- Add support for other cloud providers (AWS, Azure, DigitalOcean)
- Implement automated backup scheduling
- Add monitoring/alerting setup
- Create upgrade path for deployed instances
- Add support for custom Docker Compose configurations
- Implement database backend options (PostgreSQL, MySQL)
- Add support for n8n Queue Mode
- Create Terraform version of deployment
- Add video tutorial
- Create architecture diagrams
- Add more troubleshooting scenarios
- Translate documentation to other languages
- Create automated test suite
- Add integration tests
- Implement CI/CD pipeline
- 💬 Start a discussion
- 📧 Contact maintainers via GitHub issues
- 📖 Read the detailed guide
By contributing, you agree that your contributions will be licensed under the MIT License.
Thank you for contributing! 🙏