From f36ffb795ada98eea4eb75e6e267b2244bf61a95 Mon Sep 17 00:00:00 2001 From: Wiktor Date: Tue, 22 Jul 2025 02:24:31 +0200 Subject: [PATCH] Setup automated GitHub workflows and MMRL integration - Add automated release workflow with ZIP building - Add MMRL repository auto-update workflow - Update all repository URLs to point to overspend1/overmodules - Add comprehensive README with installation instructions - Add PowerShell script for easy release creation - Configure GitHub Pages deployment for MMRL repo --- .github/workflows/release.yml | 108 +++++++++++++++ .github/workflows/update-mmrl.yml | 211 ++++++++++++++++++++++++++++++ README.md | 133 +++++++++++++++++++ create-release.ps1 | 86 ++++++++++++ mmrl-repo/modules.json | 16 +-- mmrl-repo/repo.json | 10 +- 6 files changed, 551 insertions(+), 13 deletions(-) create mode 100644 .github/workflows/release.yml create mode 100644 .github/workflows/update-mmrl.yml create mode 100644 create-release.ps1 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..80eb926 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,108 @@ +name: Create Release + +on: + push: + tags: + - 'v*.*.*' + workflow_dispatch: + inputs: + version: + description: 'Version to release (e.g., v1.0.0)' + required: true + default: 'v1.0.0' + +jobs: + create-release: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set version from input or tag + id: version + run: | + if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then + echo "version=${{ github.event.inputs.version }}" >> $GITHUB_OUTPUT + else + echo "version=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT + fi + + - name: Update module.prop version + run: | + VERSION="${{ steps.version.outputs.version }}" + VERSION_CODE=$(echo $VERSION | sed 's/v//' | sed 's/\.//g') + + # Update version in module.prop + sed -i "s/version=.*/version=$VERSION/" kernelsu_antibootloop_backup/module.prop + sed -i "s/versionCode=.*/versionCode=$VERSION_CODE/" kernelsu_antibootloop_backup/module.prop + + - name: Create module ZIP + run: | + cd kernelsu_antibootloop_backup + zip -r ../kernelsu_antibootloop_backup-${{ steps.version.outputs.version }}.zip . + cd .. + + - name: Generate changelog + id: changelog + run: | + # Get commits since last tag + LAST_TAG=$(git describe --tags --abbrev=0 HEAD^ 2>/dev/null || echo "") + if [ -z "$LAST_TAG" ]; then + CHANGELOG=$(git log --pretty=format:"- %s" --no-merges) + else + CHANGELOG=$(git log $LAST_TAG..HEAD --pretty=format:"- %s" --no-merges) + fi + + # Create changelog file + cat > CHANGELOG.md << EOF + # Changelog for ${{ steps.version.outputs.version }} + + ## Changes + $CHANGELOG + + ## Features + - 🛡️ Anti-bootloop protection with automatic recovery + - 💾 Comprehensive backup system with encryption + - 🌐 WebUI interface for easy management + - 🔒 Hybrid RSA+AES encryption for secure backups + - 🔄 Multi-stage recovery mechanisms + - 📱 Progressive Web App with Material Design + + ## Requirements + - Android API 33-35 + - KernelSU v0.7.0+ (version code 10940+) + - ARM64 architecture + + ## Installation + 1. Download the ZIP file from this release + 2. Install via KernelSU Manager or MMRL app + 3. Reboot your device + 4. Access WebUI through KernelSU manager + EOF + + - name: Create Release + uses: softprops/action-gh-release@v1 + with: + tag_name: ${{ steps.version.outputs.version }} + name: KernelSU Anti-Bootloop & Backup ${{ steps.version.outputs.version }} + body_path: CHANGELOG.md + files: | + kernelsu_antibootloop_backup-${{ steps.version.outputs.version }}.zip + kernelsu_antibootloop_backup-v1.0.0-fixed.zip + kernelsu_antibootloop_backup-v1.0.0.tar.gz + kernelsu_antibootloop_backup-v1.0.0.zip + kernelsu_antibootloop_backup_v1.0.0.zip + draft: false + prerelease: false + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Update MMRL repository + run: | + # This will trigger the MMRL repository update workflow + curl -X POST \ + -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \ + -H "Accept: application/vnd.github.v3+json" \ + https://api.github.com/repos/overspend1/overmodules/dispatches \ + -d '{"event_type":"update-mmrl"}' \ No newline at end of file diff --git a/.github/workflows/update-mmrl.yml b/.github/workflows/update-mmrl.yml new file mode 100644 index 0000000..c57c16a --- /dev/null +++ b/.github/workflows/update-mmrl.yml @@ -0,0 +1,211 @@ +name: Update MMRL Repository + +on: + release: + types: [published] + repository_dispatch: + types: [update-mmrl] + workflow_dispatch: + schedule: + # Update daily at 00:00 UTC + - cron: '0 0 * * *' + +jobs: + update-mmrl: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: '18' + + - name: Get latest release info + id: release + run: | + # Get latest release information + LATEST_RELEASE=$(curl -s https://api.github.com/repos/overspend1/overmodules/releases/latest) + + if [ "$LATEST_RELEASE" != "null" ] && [ "$(echo $LATEST_RELEASE | jq -r '.message // empty')" != "Not Found" ]; then + VERSION=$(echo $LATEST_RELEASE | jq -r '.tag_name') + VERSION_CODE=$(echo $VERSION | sed 's/v//' | sed 's/\.//g') + DOWNLOAD_URL=$(echo $LATEST_RELEASE | jq -r '.assets[] | select(.name | contains("kernelsu_antibootloop_backup-" + "'$VERSION'" + ".zip")) | .browser_download_url') + TIMESTAMP=$(date +%s) + + echo "version=$VERSION" >> $GITHUB_OUTPUT + echo "version_code=$VERSION_CODE" >> $GITHUB_OUTPUT + echo "download_url=$DOWNLOAD_URL" >> $GITHUB_OUTPUT + echo "timestamp=$TIMESTAMP" >> $GITHUB_OUTPUT + else + # Fallback to current version if no releases + echo "version=v1.0.0" >> $GITHUB_OUTPUT + echo "version_code=100" >> $GITHUB_OUTPUT + echo "download_url=https://github.com/overspend1/overmodules/raw/master/kernelsu_antibootloop_backup-v1.0.0-fixed.zip" >> $GITHUB_OUTPUT + echo "timestamp=$(date +%s)" >> $GITHUB_OUTPUT + fi + + - name: Create/Update MMRL repository files + run: | + mkdir -p mmrl-repo + + # Create repo.json + cat > mmrl-repo/repo.json << EOF + { + "name": "Terragon Labs KernelSU Modules", + "website": "https://github.com/overspend1/overmodules", + "support": "https://github.com/overspend1/overmodules/issues", + "donate": "https://github.com/sponsors/overspend1", + "submitModule": "https://github.com/overspend1/overmodules/issues/new", + "last_update": ${{ steps.release.outputs.timestamp }}, + "modules": "https://raw.githubusercontent.com/overspend1/overmodules/master/mmrl-repo/modules.json" + } + EOF + + # Create modules.json + cat > mmrl-repo/modules.json << EOF + { + "modules": [ + { + "id": "kernelsu_antibootloop_backup", + "name": "KernelSU Anti-Bootloop & Backup", + "version": "${{ steps.release.outputs.version }}", + "versionCode": ${{ steps.release.outputs.version_code }}, + "author": "Wiktor/overspend1", + "description": "Advanced KernelSU Next module combining anti-bootloop protection with comprehensive backup and restoration capabilities. Features WebUIX-compliant interface, encrypted backups, and multi-stage recovery mechanisms.", + "minApi": 33, + "maxApi": 35, + "minKernelSU": 10940, + "maxKernelSU": 99999, + "needRamdisk": false, + "support": "https://github.com/overspend1/overmodules/issues", + "donate": "https://github.com/sponsors/overspend1", + "license": "MIT", + "homepage": "https://github.com/overspend1/overmodules", + "source": "https://github.com/overspend1/overmodules", + "readme": "https://raw.githubusercontent.com/overspend1/overmodules/master/README.md", + "verified": false, + "timestamp": ${{ steps.release.outputs.timestamp }}, + "antifeatures": [], + "categories": [ + "System", + "Backup", + "Recovery", + "Security" + ], + "features": [ + "Anti-bootloop protection", + "Comprehensive backup system", + "WebUI interface", + "Encrypted backups", + "Multi-stage recovery", + "OverlayFS integration", + "Hardware button recovery", + "Progressive Web App" + ], + "require": [ + "kernelsu" + ], + "root": { + "kernelsu": { + "minVersion": 10940, + "maxVersion": 99999 + } + }, + "manager": { + "mmrl": { + "minVersion": 2024120900, + "maxVersion": 2147483647 + } + }, + "track": { + "type": "GIT", + "source": "https://github.com/overspend1/overmodules", + "build": { + "enable": true, + "keep": 3 + } + }, + "versions": [ + { + "timestamp": ${{ steps.release.outputs.timestamp }}, + "version": "${{ steps.release.outputs.version }}", + "versionCode": ${{ steps.release.outputs.version_code }}, + "zipUrl": "${{ steps.release.outputs.download_url }}", + "changelog": "https://raw.githubusercontent.com/overspend1/overmodules/${{ steps.release.outputs.version }}/CHANGELOG.md" + } + ] + } + ] + } + EOF + + - name: Create MMRL repository README + run: | + cat > mmrl-repo/README.md << 'EOF' + # Terragon Labs MMRL Repository + + This is an MMRL (Magisk Module Repository List) repository containing KernelSU modules developed by Terragon Labs. + + ## Available Modules + + ### KernelSU Anti-Bootloop & Backup + + **Advanced KernelSU module combining anti-bootloop protection with comprehensive backup and restoration capabilities.** + + #### Features: + - 🛡️ **Anti-bootloop protection** with automatic recovery mechanisms + - 💾 **Comprehensive backup system** with encrypted storage + - 🌐 **WebUI interface** for easy management + - 🔒 **Encrypted backups** with hybrid RSA+AES encryption + - 🔄 **Multi-stage recovery** with escalating intervention levels + - 📱 **OverlayFS integration** leveraging KernelSU's kernel-level capabilities + - 🔘 **Hardware button recovery** using volume buttons for emergency access + - 📱 **Progressive Web App** with Material Design interface + + #### Requirements: + - Android API 33-35 + - KernelSU v0.7.0+ (version code 10940+) + - ARM64 architecture + + ## How to Add This Repository to MMRL + + 1. Open MMRL app + 2. Go to **Settings** → **Repositories** + 3. Tap **Add Repository** + 4. Enter the repository URL: + ``` + https://raw.githubusercontent.com/overspend1/overmodules/master/mmrl-repo/repo.json + ``` + 5. Tap **Add** and wait for the repository to sync + + ## Support + + - **Issues**: [GitHub Issues](https://github.com/overspend1/overmodules/issues) + - **Discussions**: [GitHub Discussions](https://github.com/overspend1/overmodules/discussions) + - **Donations**: [GitHub Sponsors](https://github.com/sponsors/overspend1) + + --- + + **Terragon Labs** - Advanced Android System Modifications + EOF + + - name: Validate JSON files + run: | + echo "Validating repo.json..." + python3 -m json.tool mmrl-repo/repo.json > /dev/null + echo "✅ repo.json is valid" + + echo "Validating modules.json..." + python3 -m json.tool mmrl-repo/modules.json > /dev/null + echo "✅ modules.json is valid" + + - name: Commit and push MMRL repository + run: | + git config --local user.email "action@github.com" + git config --local user.name "GitHub Action" + git add mmrl-repo/ + git diff --staged --quiet || git commit -m "🤖 Auto-update MMRL repository to ${{ steps.release.outputs.version }}" + git push \ No newline at end of file diff --git a/README.md b/README.md index e69de29..f9f8e4c 100644 --- a/README.md +++ b/README.md @@ -0,0 +1,133 @@ +# KernelSU Anti-Bootloop & Backup Module + +[![Release](https://img.shields.io/github/v/release/overspend1/overmodules?style=for-the-badge)](https://github.com/overspend1/overmodules/releases/latest) +[![License](https://img.shields.io/github/license/overspend1/overmodules?style=for-the-badge)](LICENSE) +[![MMRL](https://img.shields.io/badge/MMRL-Compatible-blue?style=for-the-badge)](https://github.com/DerGoogler/MMRL) +[![KernelSU](https://img.shields.io/badge/KernelSU-v0.7.0+-green?style=for-the-badge)](https://kernelsu.org) + +**Advanced KernelSU module combining anti-bootloop protection with comprehensive backup and restoration capabilities.** + +## 🚀 Quick Install via MMRL + +1. **Add Repository to MMRL:** + ``` + https://raw.githubusercontent.com/overspend1/overmodules/master/mmrl-repo/repo.json + ``` + +2. **Install the Module:** + - Open MMRL app + - Go to **Repositories** → **Terragon Labs KernelSU Modules** + - Find **KernelSU Anti-Bootloop & Backup** + - Tap **Install** + +## ✨ Features + +- 🛡️ **Anti-bootloop protection** with automatic recovery mechanisms +- 💾 **Comprehensive backup system** with encrypted storage +- 🌐 **WebUI interface** for easy management +- 🔒 **Encrypted backups** with hybrid RSA+AES encryption +- 🔄 **Multi-stage recovery** with escalating intervention levels +- 📱 **OverlayFS integration** leveraging KernelSU's kernel-level capabilities +- 🔘 **Hardware button recovery** using volume buttons for emergency access +- 📱 **Progressive Web App** with Material Design interface + +## 📋 Requirements + +- **Android API:** 33-35 (Android 13-15) +- **KernelSU:** v0.7.0+ (version code 10940+) +- **Architecture:** ARM64 +- **Root Manager:** KernelSU (Magisk not supported) + +## 🔧 Manual Installation + +1. Download the latest release ZIP from [Releases](https://github.com/overspend1/overmodules/releases/latest) +2. Install via KernelSU Manager: + - Open KernelSU Manager + - Go to **Modules** tab + - Tap **Install from storage** + - Select the downloaded ZIP file +3. Reboot your device +4. Access WebUI through KernelSU manager + +## 🏗️ Development & Releases + +This repository uses automated GitHub Actions workflows for releases and MMRL integration: + +### 🤖 Automated Release Process + +1. **Create Release:** + ```bash + # Using the provided script + ./create-release.ps1 -Version "v1.1.0" + + # Or manually create a git tag + git tag v1.1.0 + git push origin v1.1.0 + ``` + +2. **What Happens Automatically:** + - GitHub Actions builds the module ZIP + - Creates a GitHub release with changelog + - Updates MMRL repository files + - Deploys to GitHub Pages + - Users get automatic updates via MMRL + +### 📦 Repository Structure + +``` +├── .github/workflows/ # GitHub Actions workflows +│ ├── release.yml # Automated release creation +│ └── update-mmrl.yml # MMRL repository updates +├── kernelsu_antibootloop_backup/ # Main module directory +│ ├── META-INF/ # Module metadata +│ ├── scripts/ # Installation scripts +│ ├── webroot/ # WebUI files +│ ├── module.prop # Module properties +│ └── ... +├── mmrl-repo/ # MMRL repository files +│ ├── repo.json # Repository metadata +│ ├── modules.json # Module listings +│ └── README.md # Repository documentation +├── create-release.ps1 # Release creation script +└── README.md # This file +``` + +## 🌐 MMRL Repository + +This repository automatically maintains an MMRL-compatible repository at: + +**Repository URL:** `https://raw.githubusercontent.com/overspend1/overmodules/master/mmrl-repo/repo.json` + +### Features: +- ✅ Automatic updates when new releases are created +- ✅ Proper version tracking and changelog integration +- ✅ GitHub Pages deployment for fast access +- ✅ JSON validation to ensure compatibility + +## 🛠️ Contributing + +1. Fork the repository +2. Create a feature branch: `git checkout -b feature/amazing-feature` +3. Make your changes +4. Test thoroughly +5. Commit: `git commit -m 'Add amazing feature'` +6. Push: `git push origin feature/amazing-feature` +7. Open a Pull Request + +## 📄 License + +This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details. + +## 🤝 Support + +- **Issues:** [GitHub Issues](https://github.com/overspend1/overmodules/issues) +- **Discussions:** [GitHub Discussions](https://github.com/overspend1/overmodules/discussions) +- **Donations:** [GitHub Sponsors](https://github.com/sponsors/overspend1) + +## 🏷️ Version History + +- **v1.0.0** - Initial release with anti-bootloop protection and backup system + +--- + +**Terragon Labs** - Advanced Android System Modifications \ No newline at end of file diff --git a/create-release.ps1 b/create-release.ps1 new file mode 100644 index 0000000..eefc886 --- /dev/null +++ b/create-release.ps1 @@ -0,0 +1,86 @@ +#!/usr/bin/env pwsh +# Script to create a GitHub release for the KernelSU Anti-Bootloop & Backup module + +param( + [string]$Version = "v1.0.0", + [switch]$Force +) + +Write-Host "🚀 Creating GitHub release for KernelSU Anti-Bootloop & Backup module" -ForegroundColor Green +Write-Host "Version: $Version" -ForegroundColor Cyan + +# Check if we're in a git repository +if (-not (Test-Path ".git")) { + Write-Error "This script must be run from the root of the git repository" + exit 1 +} + +# Check if git is available +try { + git --version | Out-Null +} catch { + Write-Error "Git is not installed or not in PATH" + exit 1 +} + +# Check for uncommitted changes +$gitStatus = git status --porcelain +if ($gitStatus -and -not $Force) { + Write-Warning "You have uncommitted changes:" + Write-Host $gitStatus + $response = Read-Host "Do you want to continue anyway? (y/N)" + if ($response -ne 'y' -and $response -ne 'Y') { + Write-Host "Aborted by user" -ForegroundColor Yellow + exit 0 + } +} + +# Update module.prop with new version +Write-Host "📝 Updating module.prop with version $Version..." -ForegroundColor Blue + +$modulePropPath = "kernelsu_antibootloop_backup/module.prop" +if (Test-Path $modulePropPath) { + $versionCode = $Version -replace 'v', '' -replace '\.', '' + + $content = Get-Content $modulePropPath + $content = $content -replace '^version=.*', "version=$Version" + $content = $content -replace '^versionCode=.*', "versionCode=$versionCode" + $content | Set-Content $modulePropPath + + Write-Host "✅ Updated module.prop" -ForegroundColor Green +} else { + Write-Warning "module.prop not found at $modulePropPath" +} + +# Commit changes if any +if (git status --porcelain) { + Write-Host "📦 Committing version update..." -ForegroundColor Blue + git add . + git commit -m "🔖 Bump version to $Version" + Write-Host "✅ Changes committed" -ForegroundColor Green +} + +# Create and push tag +Write-Host "🏷️ Creating git tag $Version..." -ForegroundColor Blue +try { + git tag $Version + git push origin $Version + Write-Host "✅ Tag $Version created and pushed" -ForegroundColor Green +} catch { + Write-Error "Failed to create or push tag: $_" + exit 1 +} + +Write-Host "" +Write-Host "🎉 Release process initiated!" -ForegroundColor Green +Write-Host "📋 What happens next:" -ForegroundColor Cyan +Write-Host " 1. GitHub Actions will automatically create a release" -ForegroundColor White +Write-Host " 2. The module ZIP will be built and attached to the release" -ForegroundColor White +Write-Host " 3. The MMRL repository will be updated automatically" -ForegroundColor White +Write-Host " 4. Users can install the module via MMRL app" -ForegroundColor White +Write-Host "" +Write-Host "🔗 Monitor the progress at:" -ForegroundColor Cyan +Write-Host " https://github.com/overspend1/overmodules/actions" -ForegroundColor Blue +Write-Host "" +Write-Host "📱 MMRL Repository URL:" -ForegroundColor Cyan +Write-Host " https://raw.githubusercontent.com/overspend1/overmodules/master/mmrl-repo/repo.json" -ForegroundColor Blue \ No newline at end of file diff --git a/mmrl-repo/modules.json b/mmrl-repo/modules.json index 0978a36..e59e59b 100644 --- a/mmrl-repo/modules.json +++ b/mmrl-repo/modules.json @@ -12,12 +12,12 @@ "minKernelSU": 10940, "maxKernelSU": 99999, "needRamdisk": false, - "support": "https://github.com/terragon-labs/kernelsu-antibootloop-backup/issues", - "donate": "https://github.com/sponsors/terragon-labs", + "support": "https://github.com/overspend1/overmodules/issues", + "donate": "https://github.com/sponsors/overspend1", "license": "MIT", - "homepage": "https://github.com/terragon-labs/kernelsu-antibootloop-backup", - "source": "https://github.com/terragon-labs/kernelsu-antibootloop-backup", - "readme": "https://raw.githubusercontent.com/terragon-labs/kernelsu-antibootloop-backup/main/README.md", + "homepage": "https://github.com/overspend1/overmodules", + "source": "https://github.com/overspend1/overmodules", + "readme": "https://raw.githubusercontent.com/overspend1/overmodules/master/README.md", "verified": false, "timestamp": 1737513420, "antifeatures": [], @@ -54,7 +54,7 @@ }, "track": { "type": "GIT", - "source": "https://github.com/terragon-labs/kernelsu-antibootloop-backup", + "source": "https://github.com/overspend1/overmodules", "build": { "enable": true, "keep": 3 @@ -65,8 +65,8 @@ "timestamp": 1737513420, "version": "v1.0.0", "versionCode": 100, - "zipUrl": "https://github.com/terragon-labs/kernelsu-antibootloop-backup/releases/download/v1.0.0/kernelsu_antibootloop_backup-v1.0.0.zip", - "changelog": "https://raw.githubusercontent.com/terragon-labs/kernelsu-antibootloop-backup/v1.0.0/CHANGELOG.md" + "zipUrl": "https://github.com/overspend1/overmodules/releases/latest/download/kernelsu_antibootloop_backup-v1.0.0.zip", + "changelog": "https://raw.githubusercontent.com/overspend1/overmodules/v1.0.0/CHANGELOG.md" } ] } diff --git a/mmrl-repo/repo.json b/mmrl-repo/repo.json index c96aff8..840bb08 100644 --- a/mmrl-repo/repo.json +++ b/mmrl-repo/repo.json @@ -1,9 +1,9 @@ { "name": "Terragon Labs KernelSU Modules", - "website": "https://github.com/terragon-labs", - "support": "https://github.com/terragon-labs/kernelsu-antibootloop-backup/issues", - "donate": "https://github.com/sponsors/terragon-labs", - "submitModule": "https://github.com/terragon-labs/kernelsu-antibootloop-backup/issues/new", + "website": "https://github.com/overspend1/overmodules", + "support": "https://github.com/overspend1/overmodules/issues", + "donate": "https://github.com/sponsors/overspend1", + "submitModule": "https://github.com/overspend1/overmodules/issues/new", "last_update": 1737513420, - "modules": "https://raw.githubusercontent.com/terragon-labs/mmrl-repo/main/modules.json" + "modules": "https://raw.githubusercontent.com/overspend1/overmodules/master/mmrl-repo/modules.json" } \ No newline at end of file