diff --git a/.github/workflows/build_and_github_release.yml b/.github/workflows/build_and_github_release.yml new file mode 100644 index 0000000..301a270 --- /dev/null +++ b/.github/workflows/build_and_github_release.yml @@ -0,0 +1,86 @@ +name: Build and Github Release +run-name: Cooking the next version + +on: + push: + tags: + - 'v*' +jobs: + build: + name: Build APK + runs-on: ubuntu-latest + steps: + - name: Enable KVM group perms + run: | + echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules + sudo udevadm control --reload-rules + sudo udevadm trigger --name-match=kvm + ls /dev/kvm + + - name: Checkout repository + uses: actions/checkout@v4.1.4 + + - name: Set up JDK 21 + uses: actions/setup-java@v4.2.1 + with: + java-version: '21' + distribution: 'temurin' + + - name: Setup Android SDK + uses: android-actions/setup-android@v3.2.1 + + - name: Download Android NDK + run: sdkmanager --install "ndk;25.2.9519653" + + - name: Download CMake + run: sdkmanager --install "cmake;3.22.1" + + - name: Download OpenCV SDK + uses: gamedev-thingy/Download-Extract@done + with: + url: https://github.com/opencv/opencv/releases/download/4.10.0/opencv-4.10.0-android-sdk.zip + destination: .\opencv-sdk + ZIPname: opencv-4.10.0-android-sdk.zip + + - name: Config OpenCV SDK + run: echo "$GITHUB_WORKSPACE\opencv-sdk" > "opencv.properties" + + - name: Grant execute permission for gradlew + run: chmod +x gradlew + + - name: Decode and persist temporarily Keystore + run: | + DEST_FILE_PATH="${RUNNER_TEMP}"/release-key.jks + echo "KEYSTORE_FILE_PATH=$DEST_FILE_PATH" >> "$GITHUB_ENV" + base64 -d <<< "${{ secrets.RELEASE_STORE_FILE_BASE64 }}" > $DEST_FILE_PATH + + - name: Assemble release variant + run: ./gradlew :app:assembleRelease + env: + RELEASE_STORE_FILE_PATH: ${{ env.KEYSTORE_FILE_PATH }} + RELEASE_KEY_ALIAS: ${{ secrets.RELEASE_KEY_ALIAS }} + RELEASE_KEY_PASS: ${{ secrets.RELEASE_KEY_PASS }} + RELEASE_STORE_PASS: ${{ secrets.RELEASE_STORE_PASS }} + + - name: Upload APK + uses: actions/upload-artifact@v4.3.3 + with: + name: app-release + path: app/build/outputs/apk/release/app-release.apk + + release: + name: Release + needs: build + permissions: + contents: write + runs-on: ubuntu-latest + steps: + - name: Download APK from build + uses: actions/download-artifact@v4.1.7 + with: + name: app-release + + - name: Create release + uses: softprops/action-gh-release@v2.0.4 + with: + files: app-release.apk