# Zabbix APK Builder Automated Alpine Linux package builder for Zabbix Agent and Proxy with CI/CD pipeline integration. ## Features - ๐Ÿ”„ **Automatic Version Detection**: Monitors Zabbix releases using official Bitbucket API - ๐Ÿ—๏ธ **Docker-based Building**: Consistent, reproducible builds in isolated environment - ๐Ÿš€ **CI/CD Pipeline**: Full automation from version detection to package deployment - ๐Ÿ“ฆ **Multi-package Support**: Builds agent, proxy, and main packages - ๐Ÿงช **Automated Testing**: Tests package installation in Alpine containers - ๐Ÿ“Š **Gitea Integration**: Publishes packages to your private Gitea repository ## Quick Start ### 1. Repository Setup ```bash # Clone this repository git clone cd zabbix-apk-builder # Make build script executable chmod +x build.sh setup-cicd.sh ``` ### 2. Manual Build ```bash # Build packages locally ./build.sh # Packages will be in ./packages/ ls -la packages/ ``` ### 3. CI/CD Setup ```bash # Run the setup script ./setup-cicd.sh # Follow the prompts to configure GitHub secrets ``` ## Package Information ### Built Packages 1. **zabbix-agent** - Zabbix Agent only 2. **zabbix-proxy** - Zabbix Proxy (without LDAP) 3. **zabbix** - Main package with libraries ### Current Version - **Zabbix Version**: 7.4.2 - **Alpine Base**: 3.18 - **Architecture**: x86_64 ### Dependencies Removed - LDAP support removed from proxy build - Simplified configuration for smaller footprint ## CI/CD Pipeline ### Automatic Triggers - **Daily**: Checks for new Zabbix versions at 6 AM UTC - **Push**: Builds when code changes in main/test branches - **Manual**: Force builds via GitHub Actions ### Version Detection Uses Zabbix Bitbucket API: ```bash https://git.zabbix.com/rest/api/1.0/projects/ZBX/repos/zabbix/tags ``` ### Pipeline Jobs 1. **check-version**: Detects new Zabbix releases 2. **update-version**: Updates APKBUILD automatically 3. **build-packages**: Builds APK packages 4. **publish-to-gitea**: Deploys to your repository 5. **deploy-test**: Tests installation (test branch) ## Configuration ### GitHub Secrets Required ```bash GITEA_SSH_KEY # SSH private key for Gitea access ``` ### File Structure ``` . โ”œโ”€โ”€ APKBUILD # Alpine package definition โ”œโ”€โ”€ build.sh # Build automation script โ”œโ”€โ”€ Dockerfile # Build environment โ”œโ”€โ”€ .github/workflows/ # CI/CD pipeline โ”œโ”€โ”€ packages/ # Built packages โ”œโ”€โ”€ zabbix-agent.initd # Agent init script โ”œโ”€โ”€ zabbix-agent.confd # Agent config โ”œโ”€โ”€ zabbix-proxy.initd # Proxy init script โ””โ”€โ”€ zabbix-proxy.confd # Proxy config ``` ## Usage ### Install Packages ```bash # Add repository echo "http://gitea-repo/mbuz/Zabbix/raw/branch/main/alpine/v3.18/main" >> /etc/apk/repositories # Update and install apk update apk add zabbix-agent # Enable and start rc-update add zabbix-agent default rc-service zabbix-agent start ``` ### Configuration ```bash # Configure agent vim /etc/zabbix/zabbix_agentd.conf # Set server IP Server=your.zabbix.server # Restart service rc-service zabbix-agent restart ``` ## Development ### Local Testing ```bash # Test build locally ./build.sh # Test in Docker docker run --rm -it \ -v $(pwd)/packages:/packages \ alpine:3.18 sh -c " apk add --allow-untrusted /packages/zabbix-agent-*.apk zabbix_agentd --version " ``` ### Branch Strategy - **main**: Production releases, auto-deployed - **test**: Testing and validation, no auto-deploy ### Making Changes 1. Create feature branch from `test` 2. Test changes thoroughly 3. Merge to `test` for CI validation 4. Merge to `main` for production release ## Troubleshooting ### Build Issues ```bash # Check build logs docker logs $(docker ps -l -q) # Manual build debug docker run -it --rm -v $(pwd):/build alpine:3.18 sh cd /build && ./build.sh ``` ### Version Detection ```bash # Test API manually curl -s "https://git.zabbix.com/rest/api/1.0/projects/ZBX/repos/zabbix/tags?limit=100" | \ jq -r '.values[].displayId' | \ grep -E '^[0-9]+\.[0-9]+\.[0-9]+$' | \ sort -V | tail -1 ``` ### CI/CD Issues 1. Check GitHub Actions logs 2. Verify SSH key permissions 3. Test Gitea connectivity 4. Validate APKBUILD syntax ## Documentation - **[CI-CD-DOCS.md](CI-CD-DOCS.md)**: Comprehensive CI/CD documentation - **[setup-cicd.sh](setup-cicd.sh)**: Setup script for CI/CD configuration ## Security - Uses SSH keys for Gitea access - Minimal package dependencies - Regular security updates via automated builds - No secrets stored in repository ## Contributing 1. Fork the repository 2. Create feature branch 3. Test changes in `test` branch 4. Submit pull request to `main` ## License This project follows the same license as Zabbix (GPL v2). ## Support For issues: 1. Check troubleshooting section 2. Review CI/CD logs 3. Test manual build process 4. Check Zabbix API connectivity --- **Built with โค๏ธ for Alpine Linux and Zabbix monitoring**