main.yml 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. name: Android CI
  2. on:
  3. push:
  4. branches: [ master ]
  5. pull_request:
  6. branches: [ master ]
  7. jobs:
  8. build:
  9. runs-on: ubuntu-latest
  10. env:
  11. SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
  12. steps:
  13. - uses: actions/checkout@v4
  14. with:
  15. persist-credentials: false
  16. - name: set up JDK 1.8
  17. uses: actions/setup-java@v2
  18. with:
  19. java-version: 1.8
  20. distribution: 'adopt'
  21. - name: Install NDK
  22. run: echo "y" | sudo /usr/local/lib/android/sdk/tools/bin/sdkmanager --install "ndk;21.0.6113669" --sdk_root=${ANDROID_SDK_ROOT}
  23. - name: Validate checksum gradle wrapper
  24. uses: gradle/wrapper-validation-action@v1
  25. - name: Gradle cache
  26. id: cache
  27. uses: actions/cache@v2
  28. with:
  29. path: ~/.gradle/caches
  30. key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*') }}
  31. restore-keys: |
  32. ${{ runner.os }}-gradle-
  33. - name: Enable KVM group perms
  34. run: |
  35. echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
  36. sudo udevadm control --reload-rules
  37. sudo udevadm trigger --name-match=kvm
  38. - name: Build Debug APK
  39. run: |
  40. chmod +x gradlew
  41. ./gradlew assembleDebug
  42. - name: Build Release AAB
  43. id: buildRelease
  44. run: ./gradlew bundleRelease
  45. - name: Sign AAB
  46. id: sign
  47. uses: r0adkll/sign-android-release@v1
  48. with:
  49. releaseDirectory: app/build/outputs/bundle/release
  50. signingKeyBase64: ${{ secrets.SIGNING_KEY }}
  51. alias: ${{ secrets.ALIAS }}
  52. keyStorePassword: ${{ secrets.KEY_STORE_PASSWORD }}
  53. keyPassword: ${{ secrets.KEY_PASSWORD }}
  54. - name: Upload AAB/APK
  55. id: uploadArtifact
  56. uses: actions/upload-artifact@v4
  57. with:
  58. name: artifact
  59. path: |
  60. app/build/outputs/apk/release/app-release.apk
  61. app/build/outputs/bundle/release/app-release.aab
  62. - name: Releasing using Hub
  63. uses: ShaunLWM/action-release-debugapk@master
  64. env:
  65. GITHUB_TOKEN: ${{ secrets.GITHUB_RElEASE_TOKEN }}
  66. APP_FOLDER: app
  67. RELEASE_TITLE: Version
  68. - name: Create service_account.json
  69. id: createServiceAccount
  70. run: echo '${{ secrets.SERVICE_ACCOUNT_JSON }}' > service_account.json
  71. - name: Deploy to Play Store (BETA)
  72. id: deploy
  73. uses: r0adkll/upload-google-play@v1
  74. with:
  75. serviceAccountJson: service_account.json
  76. packageName: com.package
  77. releaseFile: app/build/outputs/bundle/release/app-release.aab
  78. track: beta
  79. whatsNewDirectory: whatsnew/
  80. - name: Notify on Slack
  81. uses: act10ns/slack@v1
  82. with:
  83. status: ${{ job.status }}
  84. steps: ${{ toJson(steps) }}
  85. if: always()