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 "\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: Mock curfirmware version for CI run: | rm ./app/src/main/res/values/curfirmwareversion.xml cp ./app/special/curfirmwareversion.xml ./app/src/main/res/values/ - 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: Fetch firmware latest tag_name id: firmware_latest uses: gregziegan/fetch-latest-release@v2.0.0 with: repo_path: meshtastic/Meshtastic-device github_token: ${{ secrets.GITHUB_TOKEN }} - name: Get version strings from tags run: echo "FIRMWARE_VERSION=$(echo ${{ steps.firmware_latest.outputs.tag_name }}|sed -e 's/^v//')" >> $GITHUB_ENV - name: Pull firmware latest uses: dsaltares/fetch-gh-release-asset@master with: repo: meshtastic/Meshtastic-device file: firmware-${{ env.FIRMWARE_VERSION }}.zip target: firmware.zip token: ${{ secrets.GITHUB_TOKEN }} - name: Unzip firmware into assets/firmware run: | rm -f app/src/main/assets/firmware mkdir -p app/src/main/assets/firmware unzip -qq firmware.zip 'firmware-*.bin' 'spiffs-*.bin' -d app/src/main/assets/firmware rm firmware.zip - name: Validate Gradle wrapper uses: gradle/wrapper-validation-action@v1 - name: Build Release 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 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