Merge pull request #335 from tooot-app/main

Release v4.1
This commit is contained in:
xmflsct 2022-06-11 23:36:13 +02:00 committed by GitHub
commit ac18abcb47
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 98 additions and 149 deletions

View File

@ -18,7 +18,7 @@ jobs:
- name: -- Step 2 -- Setup node - name: -- Step 2 -- Setup node
uses: actions/setup-node@v3 uses: actions/setup-node@v3
with: with:
node-version: 16 node-version-file: '.nvmrc'
- name: -- Step 3 -- Install node dependencies - name: -- Step 3 -- Install node dependencies
run: yarn install run: yarn install
- name: -- Step 4 -- Install ruby dependencies - name: -- Step 4 -- Install ruby dependencies
@ -53,7 +53,7 @@ jobs:
- name: -- Step 2 -- Setup node - name: -- Step 2 -- Setup node
uses: actions/setup-node@v3 uses: actions/setup-node@v3
with: with:
node-version: 16 node-version-file: '.nvmrc'
- name: -- Step 3 -- Setup Java - name: -- Step 3 -- Setup Java
uses: actions/setup-java@v3 uses: actions/setup-java@v3
with: with:
@ -88,21 +88,30 @@ jobs:
- name: -- Step 2 -- Setup node - name: -- Step 2 -- Setup node
uses: actions/setup-node@v3 uses: actions/setup-node@v3
with: with:
node-version: 16 node-version-file: '.nvmrc'
- name: -- Step 3 -- Use Expo action - name: -- Step 3 -- Setup Java
uses: actions/setup-java@v3
with:
distribution: 'zulu'
java-version: '11'
- name: -- Step 4 -- Use Expo action
uses: expo/expo-github-action@v7 uses: expo/expo-github-action@v7
with: with:
expo-version: latest expo-version: latest
token: ${{ secrets.EXPO_TOKEN }} token: ${{ secrets.EXPO_TOKEN }}
- name: -- Step 4 -- Install node dependencies - name: -- Step 5 -- Install node dependencies
run: yarn install run: yarn install
- name: -- Step 5 -- Install ruby dependencies - name: -- Step 6 -- Install ruby dependencies
run: bundle install run: bundle install
- name: -- Step 6 -- Run fastlane - name: -- Step 7 -- Run fastlane
env: env:
ENVIRONMENT: ${{ steps.branch.outputs.branch }} ENVIRONMENT: ${{ steps.branch.outputs.branch }}
LC_ALL: en_US.UTF-8 LC_ALL: en_US.UTF-8
LANG: 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 }} GH_PAT_GET_RELEASE: ${{ secrets.GH_PAT_GET_RELEASE }}
FL_GITHUB_RELEASE_API_BEARER: ${{ secrets.GITHUB_TOKEN }} FL_GITHUB_RELEASE_API_BEARER: ${{ secrets.GITHUB_TOKEN }}
run: yarn app:build release run: yarn app:build release

1
.nvmrc Normal file
View File

@ -0,0 +1 @@
16

View File

@ -19,67 +19,41 @@ XCODEPROJ = "./ios/tooot.xcodeproj"
INFO_PLIST = "./ios/tooot/Info.plist" INFO_PLIST = "./ios/tooot/Info.plist"
EXPO_PLIST = "./ios/tooot/Supporting/Expo.plist" EXPO_PLIST = "./ios/tooot/Supporting/Expo.plist"
desc "IOS: Prepare app store"
private_lane :prepare_appstore_ios do
set_info_plist_value( path: INFO_PLIST, key: "CFBundleShortVersionString", value: VERSION )
set_info_plist_value(
path: INFO_PLIST,
key: "NSAppTransportSecurity",
value: {}
)
increment_build_number( xcodeproj: XCODEPROJ, build_number: BUILD_NUMBER )
app_store_connect_api_key
end
desc 'IOS: Update expo information'
private_lane :update_expo_ios do
set_info_plist_value( path: EXPO_PLIST, key: "EXUpdatesSDKVersion", value: VERSIONS[:expo] )
set_info_plist_value( path: EXPO_PLIST, key: "EXUpdatesReleaseChannel", value: RELEASE_CHANNEL )
end
desc "ANDROID: Prepare play store" desc "ANDROID: Prepare play store"
private_lane :prepare_playstore_android do private_lane :prepare_playstore_android do
android_set_version_name( version_name: VERSION, gradle_file: "./android/app/build.gradle" ) android_set_version_name( version_name: VERSION, gradle_file: "./android/app/build.gradle" )
android_set_version_code( version_code: BUILD_NUMBER, gradle_file: "./android/app/build.gradle" ) android_set_version_code( version_code: BUILD_NUMBER, gradle_file: "./android/app/build.gradle" )
end 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-#{GITHUB_RELEASE}.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" desc "Build and deploy iOS app"
private_lane :build_ios do private_lane :build_ios do
BUILD_DIRECTORY = "./ios/build" BUILD_DIRECTORY = "./ios/build"
IPA_FILE = "#{BUILD_DIRECTORY}/tooot.ipa" IPA_FILE = "#{BUILD_DIRECTORY}/tooot.ipa"
DSYM_FILE = "#{BUILD_DIRECTORY}/tooot.app.dSYM.zip" DSYM_FILE = "#{BUILD_DIRECTORY}/tooot.app.dSYM.zip"
update_expo_ios set_info_plist_value( path: EXPO_PLIST, key: "EXUpdatesSDKVersion", value: VERSIONS[:expo] )
setup_ci set_info_plist_value( path: EXPO_PLIST, key: "EXUpdatesReleaseChannel", value: RELEASE_CHANNEL )
case ENVIRONMENT setup_ci
when "candidate" set_info_plist_value( path: INFO_PLIST, key: "CFBundleShortVersionString", value: VERSION )
prepare_appstore_ios set_info_plist_value(
path: INFO_PLIST,
key: "NSAppTransportSecurity",
value: {}
)
increment_build_number( xcodeproj: XCODEPROJ, build_number: BUILD_NUMBER )
app_store_connect_api_key
match( type: "appstore", readonly: true ) match( type: "appstore", readonly: true )
build_ios_app( build_ios_app(
export_method: "app-store", export_method: "app-store",
include_symbols: true, include_symbols: true,
output_directory: BUILD_DIRECTORY, output_directory: BUILD_DIRECTORY,
silent: true silent: false
) )
case ENVIRONMENT
when "candidate"
sentry_upload_dsym( sentry_upload_dsym(
org_slug: ENV["SENTRY_ORGANIZATION"], org_slug: ENV["SENTRY_ORGANIZATION"],
project_slug: ENV["SENTRY_PROJECT"], project_slug: ENV["SENTRY_PROJECT"],
@ -94,26 +68,19 @@ private_lane :build_ios do
changelog: "感谢帮忙测试 tooot 🙏" changelog: "感谢帮忙测试 tooot 🙏"
) )
when "release" when "release"
prepare_appstore_ios upload_to_app_store(
match( type: "appstore", readonly: true ) ipa: IPA_FILE,
build_ios_app( app_version: VERSION
export_method: "app-store", )
include_bitcode: true, download_dsyms(
output_directory: BUILD_DIRECTORY, version: VERSION,
silent: true build_number: BUILD_NUMBER,
wait_for_dsym_processing: true
) )
upload_to_app_store( ipa: IPA_FILE, app_version: VERSION )
download_dsyms( version: VERSION, build_number: BUILD_NUMBER, wait_for_dsym_processing: true )
sentry_upload_dsym( sentry_upload_dsym(
org_slug: ENV["SENTRY_ORGANIZATION"], org_slug: ENV["SENTRY_ORGANIZATION"],
project_slug: ENV["SENTRY_PROJECT"], project_slug: ENV["SENTRY_PROJECT"],
) )
else
if !is_ci
match( type: "adhoc", readonly: true )
build_ios_app( export_method: "ad-hoc", output_directory: BUILD_DIRECTORY, silent: true )
install_on_device( skip_wifi: true )
end
end end
end end
@ -121,9 +88,8 @@ desc "Build and deploy Android app"
private_lane :build_android do private_lane :build_android do
sh("echo #{ENV["ANDROID_KEYSTORE"]} | base64 -d | tee #{File.expand_path('..', Dir.pwd)}/android/tooot.jks >/dev/null", log: false) 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 prepare_playstore_android
build_android_app( build_android_app(
task: 'clean bundle', task: 'clean bundle',
build_type: 'release', build_type: 'release',
@ -139,6 +105,9 @@ private_lane :build_android do
"android.injected.signing.key.password" => ENV["ANDROID_KEYSTORE_KEY_PASSWORD"], "android.injected.signing.key.password" => ENV["ANDROID_KEYSTORE_KEY_PASSWORD"],
} }
) )
case ENVIRONMENT
when "candidate"
upload_to_play_store( upload_to_play_store(
track: "alpha", track: "alpha",
skip_upload_metadata: true, skip_upload_metadata: true,
@ -146,43 +115,20 @@ private_lane :build_android do
skip_upload_images: true, skip_upload_images: true,
skip_upload_screenshots: 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" when "release"
prepare_playstore_android
build_android_app(
task: 'clean bundle',
build_type: 'release',
project_dir: "./android",
print_command: true,
print_command_output: true,
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"],
}
)
upload_to_play_store( upload_to_play_store(
track: "production", track: "production",
skip_upload_changelogs: true 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)
prepare_playstore_android
build_android_app( build_android_app(
task: 'assemble', task: 'assemble',
build_type: 'release', build_type: 'release',
@ -198,19 +144,8 @@ private_lane :build_android do
"android.injected.signing.key.password" => ENV["ANDROID_KEYSTORE_KEY_PASSWORD"], "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" sh "mv #{lane_context[SharedValues::GRADLE_APK_OUTPUT_PATH]} #{File.expand_path('..', Dir.pwd)}/tooot-#{GITHUB_RELEASE}.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 end
lane :ios do lane :ios do
@ -239,13 +174,17 @@ end
lane :release do lane :release do
releaseExists = get_github_release(url: GITHUB_REPO, version: "v#{VERSION}", api_token: ENV['GH_PAT_GET_RELEASE']) releaseExists = get_github_release(url: GITHUB_REPO, version: "v#{VERSION}", api_token: ENV['GH_PAT_GET_RELEASE'])
if !releaseExists if !releaseExists
case ENVIRONMENT build_android_apk
when "candidate" set_github_release(
github_release(prerelease: true) repository_name: GITHUB_REPO,
when "release" name: GITHUB_RELEASE,
github_release(prerelease: false) tag_name: GITHUB_RELEASE,
description: "No changelog provided",
commitish: git_branch,
is_prerelease: ENVIRONMENT == 'candidate',
upload_assets: ["#{File.expand_path('..', Dir.pwd)}/tooot-#{GITHUB_RELEASE}.apk"]
)
end end
end yarn( package_path: "./package.json", flags: "release", command: RELEASE_CHANNEL )
expo_release
rocket rocket
end end