A powerful, plug-and-play GitHub Actions workflow for building custom Linux distribution ISOs with dynamic content discovery and multi-organization support.
The BigCommunity ISO Builder is a sophisticated automation system that streamlines the creation of custom Linux installation images. Built on GitHub Actions, it features a plug-and-play architecture that automatically discovers available build options from ISO profile repositories via GitHub API, making it incredibly easy for any organization to create their own custom Linux distributions.
This system eliminates the complexity of manual ISO building by providing an intelligent workflow that handles everything from environment setup to final release distribution, with comprehensive monitoring and notification capabilities.
- Zero-configuration setup for new organizations
- Dynamic content discovery via GitHub API
- Automatic detection of available build directories and desktop editions
- Real-time validation against live repository contents
- BigCommunity Linux: Community-driven BigLinux-based distribution
- BigLinux: Performance-optimized Brazilian Linux distribution
- Extensible framework for additional distributions
- Automatically discovers available editions from ISO profiles
- Common options: KDE, XFCE, GNOME, Cinnamon, Hyprland, Deepin, COSMIC
- No hardcoded limitations - supports any edition in your profiles
- Kernel Selection: Latest, LTS, Old LTS, Xanmod variants
- Branch Management: Stable, Testing, Development builds
- Compression Optimization: Automatic level adjustment based on branch
- Custom Repository Integration: Community and BigLinux package sources
- Real-time Telegram notifications with build progress
- Detailed logging with colored terminal output
- GitHub Actions integration with artifact management
- Automatic MD5 verification and package manifests
- tmate integration for live debugging sessions
- Verbose build output with step-by-step tracking
- Environment inspection tools and diagnostics
- GitRepo Package: Essential for triggering ISO builds
# Install the GitRepo package from: # https://github.com/big-comm/gitrepo # The package includes: # - gitrepo-iso: Command-line tool for ISO generation # - Interactive menu system # - Organization management # - Automatic GitHub Actions triggering
-
Secrets Configuration:
TOKEN_BOT
: Telegram bot token for build notificationsCHAT_ID
: Telegram chat ID for status updatesTOKEN_RELEASE
: GitHub personal access token with repository and workflow permissionsGITHUB_TOKEN
: Automatically provided by GitHub Actions
-
Repository Structure:
your-repo/ βββ .github/workflows/edition.yml # Main workflow file βββ action.yml # Custom action definition βββ build-iso.sh # Core build script βββ README.md # Documentation
-
Install GitRepo package:
# Download and install from: # https://github.com/big-comm/gitrepo sudo pacman -U gitrepo-*.pkg.tar.zst
-
Run Interactive Mode:
gitrepo-iso
-
Automatic Mode:
gitrepo-iso -o your-organization --auto
The workflow is designed to be triggered programmatically via the GitRepo tool, but can also be triggered via repository dispatch events with proper payload formatting.
To add your organization to the ISO builder, simply edit the config.py
file in the GitRepo package:
ORG_DEFAULT_CONFIGS = {
# Existing organizations...
"your-organization": {
"distroname": "bigcommunity", # or "biglinux"
"iso_profiles_repo": "https://github.com/your-org/iso-profiles",
"branches": {
"manjaro": "stable", # stable, testing, unstable
"community": "stable", # stable, testing, unstable (leave "" if not used)
"biglinux": "stable" # stable, testing, unstable (leave "" if not used)
},
"kernel": "latest", # latest, lts, oldlts, xanmod
"build_dir": "bigcommunity", # directory name in your iso-profiles
"edition": "xfce" # your preferred default desktop
}
}
Parameter | Description | Options |
---|---|---|
distroname |
Base distribution | bigcommunity , biglinux |
iso_profiles_repo |
ISO profiles repository URL | Any valid GitHub repository |
manjaro_branch |
Manjaro base system branch | stable , testing , unstable |
community_branch |
BigCommunity customizations | stable , testing , "" |
biglinux_branch |
BigLinux customizations | stable , testing , "" |
kernel |
Default kernel type | latest , lts , oldlts , xanmod |
build_dir |
ISO profiles directory | Validated against repository |
edition |
Default desktop environment | Validated against repository |
The ISO builder generates several artifacts:
- ISO Image:
[distro]_[type]_[edition]_[date]_k[kernel].iso
- MD5 Hash: Verification checksum for integrity
- Package Manifest: Complete list of included packages
- Split Archives: 7z compressed files for easier distribution
- STABLE:
stable/stable
branch combination - BETA:
stable/testing
or mixed stable/testing - DEVELOPMENT: Any unstable branch combination
bigcommunity_STABLE_xfce_2025-01-15_klatest.iso
bigcommunity_STABLE_xfce_2025-01-15_klatest.iso.md5
bigcommunity_STABLE_xfce_2025-01-15_klatest.iso.pkgs
- Environment preparation and dependency installation
- Telegram notification with build parameters
- Repository validation and branch verification
- Dynamic content discovery from ISO profiles repository
- Package repository configuration based on branches
- Kernel configuration and optimization
- ISO compilation with manjaro-tools integration
- Artifact compression and packaging
- GitHub release creation with automatic versioning
- Progress notifications and completion status
-
GitHub Action (
action.yml
):- Defines reusable build action
- Handles environment setup and validation
- Manages terminal utilities and logging
-
Workflow (
edition.yml
):- Orchestrates complete build pipeline
- Manages Telegram notifications
- Handles artifact creation and release
-
Build Script (
build-iso.sh
):- Core ISO building functionality
- Repository configuration and management
- Package optimization and cleanup
- GitHub Actions: Workflow automation platform
- Manjaro Tools: Core ISO building framework
- Docker Container: Isolated build environment (
talesam/community-build:1.7.1
) - Telegram API: Real-time notification system
The system provides comprehensive build monitoring through Telegram:
- π Build Start: Parameters and configuration summary
- β³ Progress Updates: Current build phase and timing
- β Success Notification: Completion time, file size, download links
- π¨ Failure Alerts: Error details and troubleshooting links
Detailed build logs are available in the GitHub Actions interface, including:
- Step-by-step execution tracking
- Terminal output with color coding
- Resource usage and timing information
- Artifact generation and upload status
Enable interactive debugging by setting the tmate option:
gitrepo-iso -o your-org --auto -t # Enable tmate session
This provides SSH access to the build environment during execution.
Issue | Cause | Solution |
---|---|---|
Profile not found | Invalid build_dir or edition | Verify against repository API |
Authentication failed | Invalid GitHub token | Check token permissions and expiry |
Package conflicts | Repository configuration | Review branch compatibility |
Build timeout | Large ISO or slow network | Increase GitHub Actions timeout |
We welcome contributions to improve the ISO Builder system:
- Fork the repository
- Create a feature branch
- Implement your improvements
- Test thoroughly with different configurations
- Submit a pull request with detailed description
- Maintain backward compatibility
- Add comprehensive error handling
- Update documentation for new features
- Test with multiple organizations and configurations
This project is licensed under the GNU General Public License v3.0. See the LICENSE file for complete terms and conditions.
- BigCommunity Website: Main project website
- BigLinux Website: BigLinux distribution homepage
- GitRepo Package: Required command-line tools
- ISO Profiles - BigCommunity: BigCommunity ISO configuration profiles
- ISO Profiles - BigLinux: BigLinux ISO configuration profiles
- Build Container: Docker image for build environment
- GitHub Actions Documentation: GitHub Actions reference
- Manjaro Tools Guide: Core build tools documentation
- Telegram Bot API: Notification system API reference
Built with β€οΈ by the BigCommunity Team
Empowering custom Linux distribution creation through automation