diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d5fc4949..90f67d8f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -114,6 +114,10 @@ jobs: ENVIRONMENT: ${{ steps.branch.outputs.branch }} LC_ALL: en_US.UTF-8 LANG: en_US.UTF-8 + ANDROID_KEYSTORE: ${{ secrets.ANDROID_KEYSTORE }} + ANDROID_KEYSTORE_PASSWORD: ${{ secrets.ANDROID_KEYSTORE_PASSWORD }} + ANDROID_KEYSTORE_ALIAS: ${{ secrets.ANDROID_KEYSTORE_ALIAS }} + ANDROID_KEYSTORE_KEY_PASSWORD: ${{ secrets.ANDROID_KEYSTORE_KEY_PASSWORD }} GH_PAT_GET_RELEASE: ${{ secrets.GH_PAT_GET_RELEASE }} FL_GITHUB_RELEASE_API_BEARER: ${{ secrets.GITHUB_TOKEN }} run: yarn app:build release diff --git a/fastlane/Fastfile b/fastlane/Fastfile index 69f335b6..73a2dea4 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -43,24 +43,6 @@ private_lane :prepare_playstore_android do android_set_version_code( version_code: BUILD_NUMBER, gradle_file: "./android/app/build.gradle" ) end -desc "Create new GitHub release" -private_lane :github_release do |options| - set_github_release( - repository_name: GITHUB_REPO, - name: GITHUB_RELEASE, - tag_name: GITHUB_RELEASE, - description: "No changelog provided", - commitish: git_branch, - is_prerelease: options[:prerelease], - upload_assets: ["#{File.expand_path('..', Dir.pwd)}/tooot.apk"] - ) -end - -desc "Expo release" -private_lane :expo_release do - yarn( package_path: "./package.json", flags: "release", command: RELEASE_CHANNEL ) -end - desc "Build and deploy iOS app" private_lane :build_ios do BUILD_DIRECTORY = "./ios/build" @@ -146,22 +128,6 @@ private_lane :build_android do skip_upload_images: true, skip_upload_screenshots: true ) - build_android_app( - task: 'assemble', - build_type: 'release', - project_dir: "./android", - print_command: false, - print_command_output: false, - properties: { - "expoSDK" => VERSIONS[:expo], - "releaseChannel" => RELEASE_CHANNEL, - "android.injected.signing.store.file" => "#{File.expand_path('..', Dir.pwd)}/android/tooot.jks", - "android.injected.signing.store.password" => ENV["ANDROID_KEYSTORE_PASSWORD"], - "android.injected.signing.key.alias" => ENV["ANDROID_KEYSTORE_ALIAS"], - "android.injected.signing.key.password" => ENV["ANDROID_KEYSTORE_KEY_PASSWORD"], - } - ) - sh "mv #{lane_context[SharedValues::GRADLE_APK_OUTPUT_PATH]} #{File.expand_path('..', Dir.pwd)}/tooot-#{GITHUB_RELEASE}.apk" when "release" prepare_playstore_android build_android_app( @@ -183,6 +149,34 @@ private_lane :build_android do track: "production", skip_upload_changelogs: true ) + end +end + +desc "Build Android apk" +private_lane :build_android_apk do + sh("echo #{ENV["ANDROID_KEYSTORE"]} | base64 -d | tee #{File.expand_path('..', Dir.pwd)}/android/tooot.jks >/dev/null", log: false) + + case ENVIRONMENT + when "candidate" + prepare_playstore_android + build_android_app( + task: 'assemble', + build_type: 'release', + project_dir: "./android", + print_command: false, + print_command_output: false, + properties: { + "expoSDK" => VERSIONS[:expo], + "releaseChannel" => RELEASE_CHANNEL, + "android.injected.signing.store.file" => "#{File.expand_path('..', Dir.pwd)}/android/tooot.jks", + "android.injected.signing.store.password" => ENV["ANDROID_KEYSTORE_PASSWORD"], + "android.injected.signing.key.alias" => ENV["ANDROID_KEYSTORE_ALIAS"], + "android.injected.signing.key.password" => ENV["ANDROID_KEYSTORE_KEY_PASSWORD"], + } + ) + sh "mv #{lane_context[SharedValues::GRADLE_APK_OUTPUT_PATH]} #{File.expand_path('..', Dir.pwd)}/tooot.apk" + when "release" + prepare_playstore_android build_android_app( task: 'assemble', build_type: 'release', @@ -199,17 +193,6 @@ private_lane :build_android do } ) sh "mv #{lane_context[SharedValues::GRADLE_APK_OUTPUT_PATH]} #{File.expand_path('..', Dir.pwd)}/tooot.apk" - else - if !is_ci - build_android_app( - task: 'assemble', - build_type: 'release', - project_dir: "./android" - ) - adb( - command: "install #{lane_context[SharedValues::GRADLE_APK_OUTPUT_PATH]}" - ) - end end end @@ -239,13 +222,17 @@ end lane :release do releaseExists = get_github_release(url: GITHUB_REPO, version: "v#{VERSION}", api_token: ENV['GH_PAT_GET_RELEASE']) if !releaseExists - case ENVIRONMENT - when "candidate" - github_release(prerelease: true) - when "release" - github_release(prerelease: false) - end + build_android_apk + set_github_release( + repository_name: GITHUB_REPO, + name: GITHUB_RELEASE, + tag_name: GITHUB_RELEASE, + description: "No changelog provided", + commitish: git_branch, + is_prerelease: ENVIRONMENT == 'candidate', + upload_assets: ["#{File.expand_path('..', Dir.pwd)}/tooot.apk"] + ) end - expo_release + yarn( package_path: "./package.json", flags: "release", command: RELEASE_CHANNEL ) rocket end