name: PurrfectSnap Debug CI on: workflow_dispatch: inputs: ci_upload: description: 'Upload to CI channel' required: false type: boolean jobs: job_armv8: runs-on: ubuntu-latest outputs: armv8_apk: ${{ steps.upload_apk.outputs.artifact-paths }} steps: - name: Checkout repo uses: actions/checkout@v4 with: submodules: 'recursive' - name: Set up JDK 21 uses: actions/setup-java@v4 with: java-version: '21' distribution: 'temurin' cache: gradle - name: Grant execute permission for gradlew run: chmod +x gradlew - name: Setup NPM Dependencies run: npm install typescript -g - name: Add Android targets for Rust run: rustup target add armv7-linux-androideabi aarch64-linux-android - name: Build run: ./gradlew --configuration-cache assembleArmv8Debug - name: Determine the latest Build Tools version installed shell: bash run: echo "BUILD_TOOL_VERSION=$(ls "$ANDROID_HOME/build-tools/" | tail -n 1)" >> $GITHUB_ENV - name: Sign APK id: sign_app uses: SnapEnhance/sign-android-release@master with: releaseDirectory: app/build/outputs/apk/armv8/debug/ signingKeyBase64: ${{ secrets.PS_BASE_64 }} alias: ${{ secrets.PS_RELEASE_KEY_ALIAS }} keyStorePassword: ${{ secrets.PS_RELEASE_STORE_PASSWORD }} keyPassword: ${{ secrets.PS_RELEASE_KEY_PASSWORD }} env: BUILD_TOOLS_VERSION: ${{ env.BUILD_TOOL_VERSION }} - name: Get current build version id: version-env run: | ./gradlew --configuration-cache getVersion echo "version=$(cat app/build/version.txt)" >> $GITHUB_ENV - name: Delete unsigned APK file and rename the signed one run: | find app/build/outputs/apk/armv8/debug/ -type f ! -name '*-signed*' -delete mv ${{steps.sign_app.outputs.signedReleaseFile}} app/build/outputs/apk/armv8/debug/purrfectsnap-${{ env.version }}-armv8-${GITHUB_SHA::7}.apk - name: Upload artifact id: upload_apk uses: actions/upload-artifact@v4 with: name: purrfectsnap-armv8-debug path: app/build/outputs/apk/armv8/debug/*.apk job_armv7: runs-on: ubuntu-latest outputs: armv7_apk: ${{ steps.upload_apk.outputs.artifact-paths }} steps: - name: Checkout repo uses: actions/checkout@v4 with: submodules: 'recursive' - name: Set up JDK 21 uses: actions/setup-java@v4 with: java-version: '21' distribution: 'temurin' cache: gradle - name: Grant execute permission for gradlew run: chmod +x gradlew - name: Setup NPM Dependencies run: npm install typescript -g - name: Add Android targets for Rust run: rustup target add armv7-linux-androideabi aarch64-linux-android - name: Build run: ./gradlew --configuration-cache assembleArmv7Debug - name: Determine the latest Build Tools version installed shell: bash run: echo "BUILD_TOOL_VERSION=$(ls \"$ANDROID_HOME/build-tools/\" | tail -n 1)" >> $GITHUB_ENV - name: Sign APK id: sign_app uses: SnapEnhance/sign-android-release@master with: releaseDirectory: app/build/outputs/apk/armv7/debug/ signingKeyBase64: ${{ secrets.PS_BASE_64 }} alias: ${{ secrets.PS_RELEASE_KEY_ALIAS }} keyStorePassword: ${{ secrets.PS_RELEASE_STORE_PASSWORD }} keyPassword: ${{ secrets.PS_RELEASE_KEY_PASSWORD }} env: BUILD_TOOLS_VERSION: ${{ env.BUILD_TOOL_VERSION }} - name: Get current build version id: version-env run: | ./gradlew --configuration-cache getVersion echo "version=$(cat app/build/version.txt)" >> $GITHUB_ENV - name: Delete unsigned APK file and rename the signed one run: | find app/build/outputs/apk/armv7/debug/ -type f ! -name '*-signed*' -delete mv ${{steps.sign_app.outputs.signedReleaseFile}} app/build/outputs/apk/armv7/debug/purrfectsnap-${{ env.version }}-armv7-${GITHUB_SHA::7}.apk - name: Upload artifact id: upload_apk uses: actions/upload-artifact@v4 with: name: purrfectsnap-armv7-debug path: app/build/outputs/apk/armv7/debug/*.apk job_manager: runs-on: ubuntu-latest outputs: manager_apk: ${{ steps.upload_apk.outputs.artifact-paths }} steps: - name: Checkout repo uses: actions/checkout@v4 with: submodules: 'recursive' - name: Set up JDK 21 uses: actions/setup-java@v4 with: java-version: '21' distribution: 'temurin' cache: gradle - name: Grant execute permission for gradlew run: chmod +x gradlew - name: Build run: ./gradlew --configuration-cache manager:assembleDebug - name: Upload artifact id: upload_apk uses: actions/upload-artifact@v4 with: name: manager path: manager/build/outputs/apk/debug/*.apk job_core: runs-on: ubuntu-latest outputs: core_apk: ${{ steps.upload_apk.outputs.artifact-paths }} steps: - name: Checkout repo uses: actions/checkout@v4 with: submodules: 'recursive' - name: Set up JDK 21 uses: actions/setup-java@v4 with: java-version: '21' distribution: 'temurin' cache: gradle - name: Grant execute permission for gradlew run: chmod +x gradlew - name: Add Android targets for Rust run: rustup target add armv7-linux-androideabi aarch64-linux-android - name: Build run: ./gradlew --configuration-cache assembleCoreDebug - name: Upload artifact id: upload_apk uses: actions/upload-artifact@v4 with: name: core path: app/build/outputs/apk/core/debug/*.apk make_prerelease: needs: [job_armv7, job_armv8, job_manager, job_core] runs-on: ubuntu-latest steps: - name: Download all build artifacts uses: actions/download-artifact@v4 with: path: ./all-apks - name: Display all files for debug run: find ./all-apks - name: Set up GitHub CLI run: | sudo apt-get install -y gh - name: Create Debug Prerelease with all APKs env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | VERSION="debug-${{ github.run_id }}-${{ github.sha }}" TITLE="Debug CI $VERSION" NOTE="Auto-generated debug prerelease including all APKs from jobs." APKLIST=$(find ./all-apks -type f -name '*.apk' | tr '\n' ' ') echo "APKS: $APKLIST" gh release create "$VERSION" $APKLIST --repo ${{ github.repository }} --title "$TITLE" --notes "$NOTE" --prerelease