Fix Build script apk location (#2819)

This commit is contained in:
Elias Nahum 2019-05-22 14:49:56 -04:00
parent 146af60a32
commit 44ab3ffa2a
No known key found for this signature in database
GPG key ID: E038DB71E0B61702

View file

@ -7,6 +7,7 @@ fastlane_require 'json'
skip_docs
configured = false
is_build_pr = false
# Executes before anything else use to setup the script
before_all do |lane, options|
@ -14,6 +15,7 @@ before_all do |lane, options|
pr = options[:pr]
UI.success("Building #{pr}")
ENV['BRANCH_TO_BUILD'] = pr
is_build_pr = true
end
# Raises an error is git is not clean
@ -347,6 +349,7 @@ platform :ios do
def build_ios()
app_name = ENV['APP_NAME'] || 'Mattermost Beta'
app_name_sub = app_name.gsub(" ", "_")
config_mode = ENV['BUILD_FOR_RELEASE'] == 'true' ? 'Release' : 'Debug'
method = ENV['IOS_BUILD_EXPORT_METHOD'].nil? || ENV['IOS_BUILD_EXPORT_METHOD'].empty? ? 'ad-hoc' : ENV['IOS_BUILD_EXPORT_METHOD']
@ -357,7 +360,7 @@ platform :ios do
workspace: './ios/Mattermost.xcworkspace',
export_method: method,
skip_profile_detection: true,
output_name: "#{app_name}.ipa",
output_name: "#{app_name_sub}.ipa",
export_options: {
signingStyle: 'manual',
iCloudContainerEnvironment: 'Production'
@ -511,10 +514,12 @@ platform :android do
def move_apk_to_root
app_name = ENV['APP_NAME'] || 'Mattermost Beta'
app_name_sub = app_name.gsub(" ", "_")
apk_path = lane_context[SharedValues::GRADLE_APK_OUTPUT_PATH]
unless apk_path.nil?
sh "mv #{apk_path} \"../#{app_name}.apk\""
sh "mv #{apk_path} \"../#{app_name_sub}.apk\""
lane_context[SharedValues::GRADLE_APK_OUTPUT_PATH] = "../#{app_name_sub}.apk"
end
end
@ -584,6 +589,9 @@ def submit_to_store
apk_path = lane_context[SharedValues::GRADLE_APK_OUTPUT_PATH]
ipa_path = lane_context[SharedValues::IPA_OUTPUT_PATH]
app_name = ENV['APP_NAME'] || 'Mattermost Beta'
app_name_sub = app_name.gsub(" ", "_")
s3_region = ENV['AWS_REGION']
s3_bucket = ENV['AWS_BUCKET_NAME']
@ -600,7 +608,7 @@ def submit_to_store
build_number = android_get_version_code(gradle_file: './android/app/build.gradle')
s3_folder = "#{ENV['AWS_FOLDER_NAME']}/#{version_number}/#{build_number}"
public_link = "https://#{s3_bucket}/#{s3_folder}/Mattermost.apk"
public_link = "https://#{s3_bucket}/#{s3_folder}/#{app_name_sub}}.apk"
# Send a build message to Mattermost
pretext = '#### New Android released ready to be published'
@ -633,7 +641,7 @@ def submit_to_store
build_number = get_build_number(xcodeproj: './ios/Mattermost.xcodeproj')
s3_folder = "#{ENV['AWS_FOLDER_NAME']}/#{version_number}/#{build_number}"
public_link = "https://#{s3_bucket}/#{s3_folder}/Mattermost.ipa"
public_link = "https://#{s3_bucket}/#{s3_folder}/#{app_name_sub}.ipa"
# Send a build message to Mattermost
pretext = '#### New iOS released ready to be published'
@ -680,36 +688,37 @@ end
desc 'Upload file to s3'
lane :upload_file_to_s3 do |options|
os_type = options[:os_type]
filename = options[:filename]
filename_plist = ""
file = options[:file]
file_plist = ""
if filename.nil? || filename.empty?
UI.message("Filename empty")
if file.nil? || file.empty?
app_name = ENV['APP_NAME'] || 'Mattermost Beta'
filename = app_name.gsub(" ", "_")
if os_type == 'Android'
filename = "#{app_name}.apk"
file = "#{filename}.apk"
elsif os_type == 'iOS'
filename = "#{app_name}.ipa"
filename_plist = "#{app_name}.plist"
file = "#{filename}.ipa"
file_plist = "#{filename}.plist"
end
end
build_folder_path = Dir[File.expand_path('..')].first
file_path = "#{build_folder_path}/#{filename}"
file_path = "#{build_folder_path}/#{file}"
unless ENV['AWS_BUCKET_NAME'].nil? || ENV['AWS_BUCKET_NAME'].empty? || ENV['AWS_REGION'].nil? || ENV['AWS_REGION'].empty? || file_path.nil?
s3_region = ENV['AWS_REGION']
s3_bucket = ENV['AWS_BUCKET_NAME']
s3_folder = ''
if ENV['BRANCH_TO_BUILD'] == 'pr'
if is_build_pr
s3_folder = "#{ENV['AWS_FOLDER_NAME']}/#{ENV['BRANCH_TO_BUILD']}"
else
if os_type == 'Android'
version_number = android_get_version_name(gradle_file: './android/app/build.gradle')
build_number = android_get_version_code(gradle_file: './android/app/build.gradle')
else
elsif os_type == 'iOS'
version_number = get_version_number(xcodeproj: './ios/Mattermost.xcodeproj', target: 'Mattermost')
build_number = get_build_number(xcodeproj: './ios/Mattermost.xcodeproj')
end
@ -718,25 +727,30 @@ lane :upload_file_to_s3 do |options|
end
s3 = Aws::S3::Resource.new(region: s3_region)
file_obj = s3.bucket(s3_bucket).object("#{s3_folder}/#{filename}")
file_obj = s3.bucket(s3_bucket).object("#{s3_folder}/#{file}")
file_obj.upload_file("#{file_path}")
if ENV['BRANCH_TO_BUILD'] == 'pr'
plist_template = File.read('plist.erb')
plist_body = ERB.new(plist_template).result(binding)
if is_build_pr
if os_type == 'Android'
install_url = "https://#{s3_bucket}/#{s3_folder}/#{file}"
elsif os_type == 'iOS'
current_build_number = get_build_number(xcodeproj: './ios/Mattermost.xcodeproj')
plist_template = File.read('plist.erb')
plist_body = ERB.new(plist_template).result(binding)
plist_obj = s3.bucket(s3_bucket).object("#{s3_folder}/#{filename_plist}")
plist_obj.put(body: plist_body)
plist_obj = s3.bucket(s3_bucket).object("#{s3_folder}/#{file_plist}")
plist_obj.put(body: plist_body)
ios_plist_install_url = "itms-services://?action=download-manifest&url=https://#{s3_bucket}/#{s3_folder}/#{filename}.plist"
install_url = "itms-services://?action=download-manifest&url=https://#{s3_bucket}/#{s3_folder}/#{file_plist}"
end
qa_build_message({
:os_type => os_type,
:install_url => ios_plist_install_url
:install_url => install_url
})
end
UI.success("S3 bucket @#{s3_bucket}, object @#{s3_folder}/#{filename}")
UI.success("S3 public path: https://#{s3_bucket}/#{s3_folder}/#{filename}")
UI.success("S3 bucket @#{s3_bucket}, object @#{s3_folder}/#{file}")
UI.success("S3 public path: https://#{s3_bucket}/#{s3_folder}/#{file}")
end
end