name: Make Release on: workflow_dispatch: inputs: version: description: "Release version (Example: 1.0.0, must match app/gradle.build 'versionName')" required: true default: '1.0.0' jobs: release-build: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v2 with: submodules: 'recursive' - name: Load secrets run: | rm ./app/google-services.json echo $GSERVICES > ./app/google-services.json echo $KEYSTORE | base64 -di > ./app/$KEYSTORE_FILENAME echo "$KEYSTORE_PROPERTIES" > ./keystore.properties env: GSERVICES: ${{ secrets.GSERVICES }} KEYSTORE: ${{ secrets.KEYSTORE }} KEYSTORE_FILENAME: ${{ secrets.KEYSTORE_FILENAME }} KEYSTORE_PROPERTIES: ${{ secrets.KEYSTORE_PROPERTIES }} - name: Set up JDK 11 uses: actions/setup-java@v2 with: java-version: 11 distribution: 'adopt' # Note: we don't use caches on release builds because we don't want to accidentally not have a virgin build machine - name: Find firmware release tag id: firmware_version uses: oprypin/find-latest-tag@v1 with: repository: meshtastic/Meshtastic-device releases-only: true token: ${{ secrets.GITHUB_TOKEN }} - name: Create version strings run: | echo "CUR_FIRMWARE_VERSION=$(echo ${{ steps.firmware_version.outputs.tag }}|sed -e 's/^v//')" >> $GITHUB_ENV echo "SHORT_FIRMWARE_VERSION=$(echo ${{ steps.firmware_version.outputs.tag }}|sed -e 's/^v//' -e 's/.\{8\}$//')" >> $GITHUB_ENV - name: Create curfirmwareversion.xml run: | rm ./app/src/main/res/values/curfirmwareversion.xml echo -e "\n ${{ env.CUR_FIRMWARE_VERSION }}\n ${{ env.SHORT_FIRMWARE_VERSION }}\n" > ./app/src/main/res/values/curfirmwareversion.xml # - name: Fetch firmware release # uses: dsaltares/fetch-gh-release-asset@master # with: # repo: meshtastic/Meshtastic-device # file: firmware-${{ env.CUR_FIRMWARE_VERSION }}.zip # version: tags/${{ steps.firmware_version.outputs.tag }} # target: firmware.zip # token: ${{ secrets.GITHUB_TOKEN }} # - name: Unzip firmware into assets/firmware # run: | # rm -rf ./app/src/main/assets/firmware # mkdir -p ./app/src/main/assets/firmware # unzip -qq ./firmware.zip 'littlefs-*.bin' 'firmware-heltec*.bin' 'firmware-tbeam*.bin' 'firmware-tlora*.bin' 'firmware-nano*.bin' -d ./app/src/main/assets/firmware # rm ./firmware.zip - name: Mock firmware assets for release run: | rm -rf ./app/src/main/assets/firmware mkdir -p ./app/src/main/assets/firmware - name: Validate Gradle wrapper uses: gradle/wrapper-validation-action@v1 - name: Gradle bundleRelease run: ./gradlew bundleRelease - name: Gradle assembleRelease run: ./gradlew assembleRelease # - name: Upload Release to Play Store # run: cp ./app/src/main/play/release-notes/en-US/production.txt ./app/src/main/play/release-notes/whatsnew-en-US.txt # - uses: r0adkll/upload-google-play@v1 # with: # serviceAccountJsonPlainText: ${{ secrets.GSERVICES }} # packageName: com.geeksville.mesh # releaseFiles: app/build/outputs/bundle/release/app-release.aab # track: internal # whatsNewDirectory: app/src/main/play/release-notes # mappingFile: app/build/outputs/mapping/release/mapping.txt - name: Create GitHub release uses: actions/create-release@v1 id: create_release with: draft: true prerelease: true release_name: Meshtastic Android ${{ github.event.inputs.version}} alpha tag_name: ${{ github.event.inputs.version}} body: | Autogenerated by github action, developer should edit as required before publishing... env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Add AAB to release uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ steps.create_release.outputs.upload_url }} asset_path: app/build/outputs/bundle/release/app-release.aab asset_name: app-release-${{ github.event.inputs.version}}.aab asset_content_type: application/zip - name: Add APK to release uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ steps.create_release.outputs.upload_url }} asset_path: app/build/outputs/apk/release/app-release.apk asset_name: app-release-${{ github.event.inputs.version}}.apk asset_content_type: application/zip # - name: Gradle publishBundle # run: ./gradlew publishBundle