Switch from SFTP to s3 in Fastlane for publishing release to server
[ci skip]
This commit is contained in:
parent
d72b39c1b0
commit
8d7700331a
18
Gemfile.lock
18
Gemfile.lock
@ -4,10 +4,12 @@ GEM
|
||||
CFPropertyList (3.0.3)
|
||||
addressable (2.7.0)
|
||||
public_suffix (>= 2.0.2, < 5.0)
|
||||
apktools (0.7.4)
|
||||
rubyzip (~> 2.0)
|
||||
artifactory (3.0.15)
|
||||
atomos (0.1.3)
|
||||
aws-eventstream (1.1.0)
|
||||
aws-partitions (1.424.0)
|
||||
aws-partitions (1.426.0)
|
||||
aws-sdk-core (3.112.0)
|
||||
aws-eventstream (~> 1, >= 1.0.2)
|
||||
aws-partitions (~> 1, >= 1.239.0)
|
||||
@ -50,7 +52,7 @@ GEM
|
||||
faraday_middleware (1.0.0)
|
||||
faraday (~> 1.0)
|
||||
fastimage (2.2.2)
|
||||
fastlane (2.173.0)
|
||||
fastlane (2.174.0)
|
||||
CFPropertyList (>= 2.3, < 4.0.0)
|
||||
addressable (>= 2.3, < 3.0.0)
|
||||
artifactory (~> 3.0)
|
||||
@ -87,6 +89,10 @@ GEM
|
||||
xcodeproj (>= 1.13.0, < 2.0.0)
|
||||
xcpretty (~> 0.3.0)
|
||||
xcpretty-travis-formatter (>= 0.0.3)
|
||||
fastlane-plugin-aws_s3 (1.8.0)
|
||||
apktools (~> 0.7)
|
||||
aws-sdk-s3 (~> 1)
|
||||
mime-types (~> 3.3)
|
||||
fastlane-plugin-get_version_name (0.2.2)
|
||||
gh_inspector (1.1.3)
|
||||
google-api-client (0.38.0)
|
||||
@ -109,7 +115,7 @@ GEM
|
||||
webrick
|
||||
google-apis-iamcredentials_v1 (0.1.0)
|
||||
google-apis-core (~> 0.1)
|
||||
google-apis-storage_v1 (0.1.0)
|
||||
google-apis-storage_v1 (0.2.0)
|
||||
google-apis-core (~> 0.1)
|
||||
google-cloud-core (1.5.0)
|
||||
google-cloud-env (~> 1.0)
|
||||
@ -125,7 +131,7 @@ GEM
|
||||
google-cloud-core (~> 1.2)
|
||||
googleauth (~> 0.9)
|
||||
mini_mime (~> 1.0)
|
||||
googleauth (0.15.0)
|
||||
googleauth (0.15.1)
|
||||
faraday (>= 0.17.3, < 2.0)
|
||||
jwt (>= 1.4, < 3.0)
|
||||
memoist (~> 0.16)
|
||||
@ -140,6 +146,9 @@ GEM
|
||||
json (2.5.1)
|
||||
jwt (2.2.2)
|
||||
memoist (0.16.2)
|
||||
mime-types (3.3.1)
|
||||
mime-types-data (~> 3.2015)
|
||||
mime-types-data (3.2020.1104)
|
||||
mini_magick (4.11.0)
|
||||
mini_mime (1.0.2)
|
||||
multi_json (1.15.0)
|
||||
@ -204,6 +213,7 @@ DEPENDENCIES
|
||||
bcrypt_pbkdf
|
||||
ed25519
|
||||
fastlane
|
||||
fastlane-plugin-aws_s3
|
||||
fastlane-plugin-get_version_name
|
||||
net-sftp
|
||||
|
||||
|
@ -12,8 +12,10 @@ SIGNING_UPDATE_APK_STORE_KEY_PATH=
|
||||
SIGNING_UPDATE_APK_STORE_PUB_KEY_PATH=
|
||||
APK_STORE_BASIC_URL=
|
||||
|
||||
FTP_SERVER_USERNAME=
|
||||
FTP_SERVER_KEY_FILE=
|
||||
FTP_SERVER_PORT=
|
||||
S3_BUCKET=
|
||||
S3_ENDPOINT=
|
||||
S3_REGION=
|
||||
S3_ACCESS_KEY=
|
||||
S3_SECRET_ACCESS_KEY=
|
||||
|
||||
SLACK_URL=
|
||||
|
@ -20,14 +20,14 @@ platform :android do |options|
|
||||
gradle(task: "test")
|
||||
end
|
||||
|
||||
desc "Deploy new version to Google Play and APK Store options: beta:false scheduled:false (default)"
|
||||
desc "Deploy new version to Google Play and APK Store options: beta:false (default)"
|
||||
lane :deploy do |options|
|
||||
release_note_path_en = "metadata/android/en-US/changelogs/default.txt"
|
||||
|
||||
# use english-change-log for french language too
|
||||
FileUtils.cp(release_note_path_en, "metadata/android/fr-FR/changelogs/default.txt")
|
||||
|
||||
deployToPlaystore(scheduled:options[:scheduled], beta:options[:beta])
|
||||
deployToPlaystore(beta:options[:beta])
|
||||
|
||||
if options[:beta]
|
||||
puts "Skipping deployment to server cause there isn't currently a beta channel"
|
||||
@ -40,8 +40,8 @@ platform :android do |options|
|
||||
}
|
||||
)
|
||||
else
|
||||
deployToServer(scheduled:options[:scheduled], beta:options[:beta])
|
||||
deployToFDroid(scheduled:options[:scheduled], beta:options[:beta])
|
||||
deployToServer(beta:options[:beta])
|
||||
deployToFDroid(beta:options[:beta])
|
||||
|
||||
slack(
|
||||
default_payloads: [], # reduce the notification to the minimum
|
||||
@ -55,7 +55,7 @@ platform :android do |options|
|
||||
end
|
||||
|
||||
desc "Deploy new version to Play Store"
|
||||
private_lane :deployToPlaystore do |options|
|
||||
lane :deployToPlaystore do |options|
|
||||
deploy_target = "production"
|
||||
|
||||
if options[:beta]
|
||||
@ -96,7 +96,7 @@ platform :android do |options|
|
||||
end
|
||||
|
||||
desc "Deploy new version to server"
|
||||
private_lane :deployToServer do |options|
|
||||
lane :deployToServer do |options|
|
||||
gradle(task: "clean")
|
||||
|
||||
gradle(
|
||||
@ -112,13 +112,12 @@ platform :android do |options|
|
||||
}
|
||||
)
|
||||
|
||||
FileUtils.cp(lane_context[SharedValues::GRADLE_APK_OUTPUT_PATH], "release/Cryptomator-#{version}.apk")
|
||||
|
||||
server_host = ENV["APK_STORE_BASIC_URL"]
|
||||
server_relative_folder = "/mnt/data/android/"
|
||||
base_url = "https://#{server_host}/android/"
|
||||
apk_url = "#{base_url}#{version}/Cryptomator-#{version}.apk"
|
||||
relative_apk_url = "#{server_relative_folder}#{version}/Cryptomator-#{version}.apk"
|
||||
release_note_url = "#{base_url}#{version}/release-notes.html"
|
||||
relative_release_note_url = "#{server_relative_folder}#{version}/release-notes.html"
|
||||
|
||||
claims = {
|
||||
"version": version,
|
||||
@ -129,44 +128,47 @@ platform :android do |options|
|
||||
private_key = OpenSSL::PKey.read(File.read(ENV["SIGNING_UPDATE_APK_STORE_KEY_PATH"]))
|
||||
token = JWT.encode claims, private_key, "ES256"
|
||||
|
||||
latest_version_filename = "latest-version.json"
|
||||
if options[:scheduled]
|
||||
latest_version_filename = "latest-version-#{version}.json"
|
||||
puts "Scheduled upload activated, uploading latest-version.json to #{latest_version_filename} with claims #{claims}"
|
||||
else
|
||||
puts "#{latest_version_filename} has claims #{claims}"
|
||||
end
|
||||
latest_version_filename = "latest-version-#{version}.json"
|
||||
|
||||
latest_version_jsn = File.new("latest_versions/#{latest_version_filename}","w")
|
||||
latest_version_jsn.write(token)
|
||||
latest_version_jsn.close
|
||||
latest_version_jsn = File.open("latest_versions/#{latest_version_filename}","r")
|
||||
|
||||
release_note_path = "release_notes_apkstore_en.html"
|
||||
release_note_file = File.open(release_note_path,"r")
|
||||
puts "Uploading APK and release note"
|
||||
|
||||
puts latest_version_filename
|
||||
aws_s3(
|
||||
bucket: ENV['S3_BUCKET'],
|
||||
endpoint: ENV['S3_ENDPOINT'],
|
||||
region: ENV['S3_REGION'],
|
||||
access_key: ENV['S3_ACCESS_KEY'],
|
||||
secret_access_key: ENV['S3_SECRET_ACCESS_KEY'],
|
||||
path: "android/#{version}",
|
||||
files: [
|
||||
"fastlane/release/Cryptomator-#{version}.apk",
|
||||
"fastlane/release-notes.html"
|
||||
],
|
||||
skip_html_upload: true,
|
||||
apk: ''
|
||||
)
|
||||
|
||||
Net::SFTP.start(
|
||||
ENV["FTP_SERVER_URL"],
|
||||
ENV["FTP_SERVER_USERNAME"],
|
||||
:keys=>[ENV["FTP_SERVER_KEY_FILE"]],
|
||||
keys_only: true,
|
||||
verify_host_key: :never,
|
||||
:port=>ENV["FTP_SERVER_PORT"]
|
||||
) do |sftp|
|
||||
puts "Uploading files to server..."
|
||||
sftp.mkdir! "#{server_relative_folder}#{version}"
|
||||
sftp.upload!(lane_context[SharedValues::GRADLE_APK_OUTPUT_PATH], relative_apk_url)
|
||||
sftp.upload!(release_note_file, relative_release_note_url)
|
||||
sftp.upload!(latest_version_jsn, "#{server_relative_folder}#{latest_version_filename}")
|
||||
end
|
||||
puts "Uploading #{latest_version_filename} with claims #{claims}"
|
||||
puts "Rename #{latest_version_filename} to latest-version.json for deployment"
|
||||
|
||||
latest_version_jsn.close
|
||||
release_note_file.close
|
||||
|
||||
FileUtils.cp(lane_context[SharedValues::GRADLE_APK_OUTPUT_PATH], "release/Cryptomator-#{version}_signed.apk")
|
||||
aws_s3(
|
||||
bucket: ENV['S3_BUCKET'],
|
||||
endpoint: ENV['S3_ENDPOINT'],
|
||||
region: ENV['S3_REGION'],
|
||||
access_key: ENV['S3_ACCESS_KEY'],
|
||||
secret_access_key: ENV['S3_SECRET_ACCESS_KEY'],
|
||||
path: "android",
|
||||
files: [
|
||||
"fastlane/latest_versions/#{latest_version_filename}"
|
||||
],
|
||||
skip_html_upload: true,
|
||||
apk: ''
|
||||
)
|
||||
|
||||
FileUtils.mv("release/Cryptomator-#{version}.apk", "release/Cryptomator-#{version}_signed.apk")
|
||||
end
|
||||
|
||||
desc "Deploy new version to F-Droid"
|
||||
@ -187,7 +189,6 @@ platform :android do |options|
|
||||
)
|
||||
|
||||
FileUtils.cp(lane_context[SharedValues::GRADLE_APK_OUTPUT_PATH], "release/Cryptomator-#{version}_fdroid_signed.apk")
|
||||
|
||||
end
|
||||
|
||||
after_all do |lane|
|
||||
|
@ -3,3 +3,4 @@
|
||||
# Ensure this file is checked in to source control!
|
||||
|
||||
gem 'fastlane-plugin-get_version_name'
|
||||
gem 'fastlane-plugin-aws_s3'
|
||||
|
@ -25,7 +25,17 @@ Run all the tests
|
||||
```
|
||||
fastlane android deploy
|
||||
```
|
||||
Deploy new version to Google Play and APK Store options: beta:false scheduled:false (default)
|
||||
Deploy new version to Google Play and APK Store options: beta:false (default)
|
||||
### android deployToPlaystore
|
||||
```
|
||||
fastlane android deployToPlaystore
|
||||
```
|
||||
Deploy new version to Play Store
|
||||
### android deployToServer
|
||||
```
|
||||
fastlane android deployToServer
|
||||
```
|
||||
Deploy new version to server
|
||||
### android deployToFDroid
|
||||
```
|
||||
fastlane android deployToFDroid
|
||||
|
Loading…
x
Reference in New Issue
Block a user