name: Android CI on: push: branches: [ master ] pull_request: branches: [ master ] jobs: build: runs-on: ubuntu-latest env: SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} steps: - uses: actions/checkout@v4 with: persist-credentials: false - name: set up JDK 1.8 uses: actions/setup-java@v2 with: java-version: 1.8 distribution: 'adopt' - name: Install NDK run: echo "y" | sudo /usr/local/lib/android/sdk/tools/bin/sdkmanager --install "ndk;21.0.6113669" --sdk_root=${ANDROID_SDK_ROOT} - name: Validate checksum gradle wrapper uses: gradle/wrapper-validation-action@v1 - name: Gradle cache id: cache uses: actions/cache@v2 with: path: ~/.gradle/caches key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*') }} restore-keys: | ${{ runner.os }}-gradle- - 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 - name: Build Debug APK run: | chmod +x gradlew ./gradlew assembleDebug - name: Build Release AAB id: buildRelease run: ./gradlew bundleRelease - name: Sign AAB id: sign uses: r0adkll/sign-android-release@v1 with: releaseDirectory: app/build/outputs/bundle/release signingKeyBase64: ${{ secrets.SIGNING_KEY }} alias: ${{ secrets.ALIAS }} keyStorePassword: ${{ secrets.KEY_STORE_PASSWORD }} keyPassword: ${{ secrets.KEY_PASSWORD }} - name: Upload AAB/APK id: uploadArtifact uses: actions/upload-artifact@v4 with: name: artifact path: | app/build/outputs/apk/release/app-release.apk app/build/outputs/bundle/release/app-release.aab - name: Releasing using Hub uses: ShaunLWM/action-release-debugapk@master env: GITHUB_TOKEN: ${{ secrets.GITHUB_RElEASE_TOKEN }} APP_FOLDER: app RELEASE_TITLE: Version - name: Create service_account.json id: createServiceAccount run: echo '${{ secrets.SERVICE_ACCOUNT_JSON }}' > service_account.json - name: Deploy to Play Store (BETA) id: deploy uses: r0adkll/upload-google-play@v1 with: serviceAccountJson: service_account.json packageName: com.package releaseFile: app/build/outputs/bundle/release/app-release.aab track: beta whatsNewDirectory: whatsnew/ - name: Notify on Slack uses: act10ns/slack@v1 with: status: ${{ job.status }} steps: ${{ toJson(steps) }} if: always()