Files

4.6 KiB

Cloudron Packaging Workspace

This workspace contains development tools and upstream source repositories for Cloudron application packaging.

🏗️ Workspace Structure

PackagingForCloudronWorkspace/
├── README.md                      # This file
├── Docker/ (gitignored)           # Upstream application sources (many apps)
├── NonDocker/ (gitignored)        # Non-Docker application sources
├── UpstreamVendor-Clone.sh        # Clone all upstream repositories
└── UpstreamVendor-Update.sh       # Update existing repositories

🚀 Setup Instructions

Initial Setup

cd PackagingForCloudronWorkspace/

# Create Docker directory for upstream sources
mkdir -p Docker

# Make scripts executable
chmod +x *.sh

# Clone all upstream vendor repositories
./UpstreamVendor-Clone.sh

This clones upstream vendor repositories used when packaging applications for Cloudron.

Keeping Sources Updated

# Update all existing checkouts to latest versions
./UpstreamVendor-Update.sh

📦 Available Applications

The workspace contains ~56 upstream application repositories including:

High Priority Applications

  • apisix - Apache APISIX API Gateway
  • jenkins - Jenkins CI/CD Platform
  • grist-core - Grist Database/Spreadsheet
  • rundeck - Rundeck Job Scheduler
  • reviewboard - ReviewBoard Code Review
  • consuldemocracy - Consul Democracy Platform

Development & Infrastructure Tools

  • InvenTree - Inventory Management System
  • elabftw - Laboratory Management
  • netbox-docker - Network Documentation
  • signoz - Observability Platform
  • healthchecks - Health Monitoring
  • fleet - Device Management

Productivity & Specialized Applications

  • huginn - Web Automation
  • windmill - Workflow Automation
  • docassemble - Document Assembly
  • jamovi - Statistical Analysis
  • And many more...

🛠️ Development Workflow

Using the Workspace

  1. Source Access: All upstream sources are available in Docker/[appname]/
  2. Development: Use the tsys-cloudron-packaging container for all work
  3. Package Creation: Create packages in separate temporary directories
  4. Git Exclusion: All upstream sources are gitignored to keep repository clean

Container Development

# Access development container
docker exec -it tsys-cloudron-packaging bash

# Navigate to workspace
cd /workspace

# Access application source
cd CloudronPackagingWorkspace/Docker/[appname]/

# Create new package (outside of workspace)
cd /workspace
mkdir -p [appname]_package_new

📋 Workspace Management

Adding New Applications

  1. Update UpstreamVendor-Clone.sh with the new repository URL
  2. Run the clone script to fetch the new application

Removing Applications

  1. Remove directory from Docker/
  2. Update clone script to prevent future re-cloning

Repository Updates

  • Run ./UpstreamVendor-Update.sh periodically or before starting packaging work
  • Check for breaking changes in upstream before building

⚠️ Important Notes

Git Exclusions

  • Docker/ and NonDocker/ are gitignored (see repo .gitignore)
  • Keeps the repo slim while preserving local sources

Repository Integrity

  • Never commit upstream sources to the repository
  • Develop packages outside of Docker/ (e.g., directly under CloudronPackages/<AppName>)

Source Licenses

  • Each upstream repository maintains its own license
  • Review license compatibility before packaging
  • Include appropriate license information in final packages

🔧 Script Maintenance

UpstreamVendor-Clone.sh

  • Contains git clone commands for all upstream repositories
  • Handles both GitHub and other git hosting platforms
  • Includes error handling for failed clones

UpstreamVendor-Update.sh

  • Updates existing repositories to latest versions
  • Skips missing directories gracefully
  • Provides summary of update status

Customization

Edit scripts as needed to:

  • Add new repository sources
  • Change clone depth or branch targets
  • Modify update behavior
  • Handle special cases

📊 Notes

  • Number of upstream repositories and size vary over time.

🤝 Team Usage

For Developers

  1. Use ./UpstreamVendor-Clone.sh on first setup
  2. Run ./UpstreamVendor-Update.sh weekly or before new package work
  3. Always work in the containerized environment
  4. Never commit workspace contents to git

For DevOps

  1. Monitor disk space usage of workspace
  2. Ensure container environment has access to workspace
  3. Backup workspace if needed for disaster recovery
  4. Update scripts when adding/removing applications

Maintained By: KNEL/TSYS Development Team