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 rm ./app/src/main/res/values/mapbox-token.xml echo -e "\n $MAPBOXTOKEN\n" > ./app/src/main/res/values/mapbox-token.xml mkdir -p ~/.gradle echo "MAPBOX_DOWNLOADS_TOKEN=$MAPBOXTOKEN" >> ~/.gradle/gradle.properties echo $KEYSTORE | base64 -di > ./app/$KEYSTORE_FILENAME echo "$KEYSTORE_PROPERTIES" > ./keystore.properties env: GSERVICES: ${{ secrets.GSERVICES }} MAPBOXTOKEN: ${{ secrets.MAPBOXTOKEN }} 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 'spiffs-*.bin' 'firmware-heltec*.bin' 'firmware-tbeam*.bin' 'firmware-tlora*.bin' -d ./app/src/main/assets/firmware rm ./firmware.zip - 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 # uses: r0adkll/upload-google-play@v1 # with: # serviceAccountJsonPlainText: ${{ secrets.GSERVICES }} # packageName: # TODO put your package name here # releaseFiles: app/build/outputs/bundle/release/app-release.apk # track: # TODO specify track here - name: Create GitHub release uses: actions/create-release@v1 id: create_release with: draft: true prerelease: true release_name: ${{ 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