refactor: reorganize categorization settings with subpage navigation #81
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI | |
| on: | |
| push: | |
| branches: | |
| - '*-dev' | |
| paths-ignore: | |
| - '.idea/**' | |
| - '.gitattributes' | |
| - '.github/**.json' | |
| - '.gitignore' | |
| - '.gitmodules' | |
| - '**.md' | |
| - 'LICENSE' | |
| - 'NOTICE' | |
| pull_request: | |
| paths-ignore: | |
| - '.idea/**' | |
| - '.gitattributes' | |
| - '.github/**.json' | |
| - '.gitignore' | |
| - '.gitmodules' | |
| - '**.md' | |
| - 'LICENSE' | |
| - 'NOTICE' | |
| workflow_dispatch: | |
| workflow_call: | |
| jobs: | |
| build-debug-apk: | |
| permissions: | |
| contents: read | |
| runs-on: ubuntu-latest | |
| continue-on-error: true | |
| timeout-minutes: 20 | |
| steps: | |
| - uses: actions/checkout@v6 | |
| with: | |
| submodules: true | |
| fetch-depth: 1 | |
| - name: Free disk space | |
| run: | | |
| sudo rm -rf /usr/share/dotnet | |
| sudo rm -rf /opt/ghc | |
| - name: Setup ccache | |
| uses: hendrikmuhs/ccache-action@v1.2 | |
| with: | |
| key: ${{ runner.os }}-ccache | |
| max-size: 2G | |
| - uses: actions/setup-java@v5 | |
| with: | |
| distribution: 'zulu' | |
| java-version: 21 | |
| - uses: gradle/actions/setup-gradle@v5 | |
| with: | |
| cache-encryption-key: Da25KUVSE5jbGds2zXmfXw== | |
| cache-read-only: ${{ github.ref != 'refs/heads/15-dev' }} | |
| - name: Write sign info | |
| run: | | |
| if [ ! -z "${{ secrets.KEYSTORE }}" ]; then | |
| echo storePassword='${{ secrets.KEYSTORE_PASSWORD }}' >> keystore.properties | |
| echo keyAlias='${{ secrets.KEY_ALIAS }}' >> keystore.properties | |
| echo keyPassword='${{ secrets.KEY_PASSWORD }}' >> keystore.properties | |
| echo storeFile='${{ github.workspace }}/key.jks' >> keystore.properties | |
| echo "${{ secrets.KEYSTORE }}" | base64 --decode > ${{ github.workspace }}/key.jks | |
| fi | |
| - name: Build debug APK | |
| run: | | |
| export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" | |
| ./gradlew assembleLawnWithQuickstepGithubDebug --parallel --build-cache | |
| env: | |
| CCACHE_DIR: ${{ github.workspace }}/.ccache | |
| - name: Upload artifact | |
| uses: actions/upload-artifact@v5 | |
| with: | |
| name: Debug APK | |
| path: build/outputs/apk/**/*.apk | |
| check-style: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| with: | |
| submodules: true | |
| - uses: actions/setup-java@v5 | |
| with: | |
| distribution: 'zulu' | |
| java-version: 21 | |
| - uses: gradle/actions/setup-gradle@v5 | |
| with: | |
| cache-read-only: true | |
| - run: ./gradlew spotlessCheck --no-configuration-cache | |
| autocat-release: | |
| runs-on: ubuntu-latest | |
| if: github.repository_owner == 'thejaustin' && github.event_name == 'push' && github.ref == 'refs/heads/15-dev' | |
| needs: build-debug-apk | |
| permissions: | |
| contents: write | |
| steps: | |
| - uses: actions/checkout@v6 | |
| with: | |
| fetch-depth: 10 | |
| submodules: false | |
| - uses: actions/download-artifact@v6 | |
| with: | |
| name: Debug APK | |
| path: apk-artifacts | |
| - name: Prepare APK and version info | |
| run: | | |
| # Find the GitHub debug APK (installable variant) | |
| APK_FILE=$(find apk-artifacts -name "*GithubDebug.apk" | head -1) | |
| if [ -z "$APK_FILE" ]; then | |
| echo "No GitHub Debug APK found, trying any debug APK" | |
| APK_FILE=$(find apk-artifacts -name "*debug.apk" | head -1) | |
| fi | |
| # Version info | |
| SHORT_SHA=$(echo ${{ github.sha }} | cut -c1-7) | |
| VERSION_TAG="v15.0.b1-autocat.${{ github.run_number }}" | |
| APK_NAME="AutoCat-${VERSION_TAG}-${SHORT_SHA}.apk" | |
| DEV_APK_NAME="AutoCat-dev-latest.apk" | |
| # Copy APK with versioned name | |
| cp "$APK_FILE" "./$APK_NAME" | |
| cp "$APK_FILE" "./$DEV_APK_NAME" | |
| # Export variables | |
| echo "APK_NAME=$APK_NAME" >> $GITHUB_ENV | |
| echo "DEV_APK_NAME=$DEV_APK_NAME" >> $GITHUB_ENV | |
| echo "SHORT_SHA=$SHORT_SHA" >> $GITHUB_ENV | |
| echo "VERSION_TAG=$VERSION_TAG" >> $GITHUB_ENV | |
| - name: Create versioned release | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| run: | | |
| # Create permanent versioned release | |
| gh release create "$VERSION_TAG" "./$APK_NAME" \ | |
| --title "AutoCat $VERSION_TAG" \ | |
| --notes "**AutoCat Build #${{ github.run_number }}** | |
| ### Version Info | |
| - **Version**: $VERSION_TAG | |
| - **Commit**: [\`$SHORT_SHA\`](https://github.com/${{ github.repository }}/commit/${{ github.sha }}) | |
| - **Branch**: ${{ github.ref_name }} | |
| - **Build Date**: $(date -u +'%Y-%m-%d %H:%M UTC') | |
| ### Installation | |
| 1. Download \`$APK_NAME\` below | |
| 2. Enable 'Install from Unknown Sources' in Android settings | |
| 3. Install the APK | |
| ### Changes in this build | |
| $(git log -1 --pretty=format:'**%s**%n%n%b') | |
| ### What's in AutoCat $VERSION_TAG | |
| - **Base**: Lawnchair 15.0 Beta 1 (b1) | |
| - **Features**: Room database foundation for app categorization | |
| - **Infrastructure**: Development logs system, versioning | |
| --- | |
| 📥 **[Download Latest](https://github.com/${{ github.repository }}/releases/tag/dev-latest)** | 📝 **[All Releases](https://github.com/${{ github.repository }}/releases)**" | |
| - name: Update dev-latest rolling release | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| run: | | |
| # Delete old dev-latest | |
| gh release view "dev-latest" && gh release delete "dev-latest" -y --cleanup-tag || true | |
| # Create new dev-latest pointing to same build | |
| gh release create "dev-latest" "./$DEV_APK_NAME" \ | |
| --prerelease \ | |
| --title "AutoCat Development Build (Latest)" \ | |
| --notes "**🔄 Rolling release - Always points to latest build** | |
| Current version: **$VERSION_TAG** from commit [\`$SHORT_SHA\`](https://github.com/${{ github.repository }}/commit/${{ github.sha }}) | |
| ### Quick Install | |
| 1. Download \`$DEV_APK_NAME\` below | |
| 2. Install on your Android device | |
| 3. Test and report issues | |
| ### This Build | |
| - **Build**: #${{ github.run_number }} | |
| - **Date**: $(date -u +'%Y-%m-%d %H:%M UTC') | |
| $(git log -1 --pretty=format:'**Changes**: %s') | |
| --- | |
| 💡 **Want a specific version?** See [all versioned releases](https://github.com/${{ github.repository }}/releases) | |
| ⚠️ **Development Build** - For testing only" |