fastlane-plugin-match_keystore 0.2.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 13f57b6db57c10e142d53885360cb1416f676402fd7f234b61a549720501d9c6
|
4
|
+
data.tar.gz: 2809854cf748f5ba4931fd4cbe8dfc6292cfea2f4e5d556a887ed422ebfcacc2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 97a47758d5a39ebf414ae7a232e8767cb0dfa6ac7c484f3180b8e3149d3e879fb3ce3b27d363eae444703e9f3a9bad5b4ddc5d66f2987ed5fa0ed29b04bd4c74
|
7
|
+
data.tar.gz: 2c27e6a39112bdef3c44c6ed8abd77a31e19c9ce52a002040562d9f4aee229b4cf0e60cbe868196493acc983ca61b39acdfadebd2914e5a9ba15d40dd1024751
|
data/README.md
CHANGED
@@ -50,6 +50,8 @@ The keystore properties are encrypted with AES in order to secure sensitive data
|
|
50
50
|
end
|
51
51
|
```
|
52
52
|
|
53
|
+
You can build aab files as well by providing an `aab_path` instead of an `apk_path`.
|
54
|
+
|
53
55
|
## Example
|
54
56
|
|
55
57
|
Check out the [example `Fastfile`](fastlane/Fastfile) to see how to use this plugin. Try it by cloning the repo, running `fastlane install_plugins` and `bundle exec fastlane test`.
|
@@ -12,6 +12,7 @@ module Fastlane
|
|
12
12
|
MATCH_KEYSTORE_PATH = :MATCH_KEYSTORE_PATH
|
13
13
|
MATCH_KEYSTORE_ALIAS_NAME = :MATCH_KEYSTORE_ALIAS_NAME
|
14
14
|
MATCH_KEYSTORE_APK_SIGNED = :MATCH_KEYSTORE_APK_SIGNED
|
15
|
+
MATCH_KEYSTORE_AAB_SIGNED = :MATCH_KEYSTORE_AAB_SIGNED
|
15
16
|
end
|
16
17
|
|
17
18
|
class MatchKeystoreAction < Action
|
@@ -299,6 +300,22 @@ module Fastlane
|
|
299
300
|
apk_path_signed
|
300
301
|
end
|
301
302
|
|
303
|
+
def self.sign_aab(aab_path, keystore_path, key_password, alias_name, alias_password)
|
304
|
+
|
305
|
+
aab_path_signed = aab_path.gsub('.aab', '-signed.aab')
|
306
|
+
aab_path_signed = aab_path_signed.gsub('unsigned', '')
|
307
|
+
aab_path_signed = aab_path_signed.gsub('--', '-')
|
308
|
+
`rm -f '#{aab_path_signed}'`
|
309
|
+
|
310
|
+
UI.message("Signing AAB (input): #{aab_path}")
|
311
|
+
aabsigner_opts = ""
|
312
|
+
output = `jarsigner -keystore '#{keystore_path}' -storepass '#{key_password}' -keypass '#{alias_password}' -signedjar '#{aab_path_signed}' '#{aab_path}' '#{alias_name}'`
|
313
|
+
puts ""
|
314
|
+
puts output
|
315
|
+
|
316
|
+
aab_path_signed
|
317
|
+
end
|
318
|
+
|
302
319
|
def self.resolve_dir(path)
|
303
320
|
if !File.directory?(path)
|
304
321
|
path = File.join(Dir.pwd, path)
|
@@ -322,6 +339,34 @@ module Fastlane
|
|
322
339
|
data
|
323
340
|
end
|
324
341
|
|
342
|
+
def self.resolve_aab_path(aab_path)
|
343
|
+
|
344
|
+
# Set default AAB path if not set:
|
345
|
+
if aab_path.to_s.strip.empty?
|
346
|
+
aab_path = '/app/build/outputs/bundle/release/'
|
347
|
+
end
|
348
|
+
|
349
|
+
if !aab_path.to_s.end_with?('.aab')
|
350
|
+
|
351
|
+
aab_path = self.resolve_dir(aab_path)
|
352
|
+
|
353
|
+
pattern = File.join(aab_path, '*.aab')
|
354
|
+
files = Dir[pattern]
|
355
|
+
|
356
|
+
for file in files
|
357
|
+
if file.to_s.end_with?('.aab') && !file.to_s.end_with?("-signed.aab")
|
358
|
+
apk_path = file
|
359
|
+
break
|
360
|
+
end
|
361
|
+
end
|
362
|
+
|
363
|
+
else
|
364
|
+
aab_path = self.resolve_file(aab_path)
|
365
|
+
end
|
366
|
+
|
367
|
+
aab_path
|
368
|
+
end
|
369
|
+
|
325
370
|
def self.resolve_apk_path(apk_path)
|
326
371
|
|
327
372
|
# Set default APK path if not set:
|
@@ -366,6 +411,7 @@ module Fastlane
|
|
366
411
|
git_url = params[:git_url]
|
367
412
|
package_name = params[:package_name]
|
368
413
|
apk_path = params[:apk_path]
|
414
|
+
aab_path = params[:aab_path]
|
369
415
|
existing_keystore = params[:existing_keystore]
|
370
416
|
match_secret = params[:match_secret]
|
371
417
|
override_keystore = params[:override_keystore]
|
@@ -575,13 +621,13 @@ module Fastlane
|
|
575
621
|
File.delete(properties_path)
|
576
622
|
end
|
577
623
|
|
578
|
-
# Resolve path to the APK to sign:
|
579
|
-
output_signed_apk = ''
|
580
|
-
apk_path = self.resolve_apk_path(apk_path)
|
581
|
-
|
582
624
|
# Sign APK:
|
583
|
-
if File.file?(apk_path)
|
625
|
+
if apk_path && File.file?(apk_path)
|
584
626
|
UI.message("APK to sign: " + apk_path)
|
627
|
+
|
628
|
+
# Resolve path to the APK to sign:
|
629
|
+
output_signed_apk = ''
|
630
|
+
apk_path = self.resolve_apk_path(apk_path)
|
585
631
|
|
586
632
|
if File.file?(keystore_path)
|
587
633
|
|
@@ -598,16 +644,44 @@ module Fastlane
|
|
598
644
|
)
|
599
645
|
puts ''
|
600
646
|
end
|
601
|
-
else
|
602
|
-
UI.message("No APK file found at: #{apk_path}")
|
603
|
-
end
|
604
647
|
|
605
|
-
|
606
|
-
|
607
|
-
|
608
|
-
|
648
|
+
# Prepare contect shared values for next lanes:
|
649
|
+
Actions.lane_context[SharedValues::MATCH_KEYSTORE_PATH] = keystore_path
|
650
|
+
Actions.lane_context[SharedValues::MATCH_KEYSTORE_ALIAS_NAME] = alias_name
|
651
|
+
Actions.lane_context[SharedValues::MATCH_KEYSTORE_APK_SIGNED] = output_signed_apk
|
609
652
|
|
610
|
-
|
653
|
+
output_signed_apk
|
654
|
+
# Sign AAB
|
655
|
+
elsif aab_path && File.file?(aab_path)
|
656
|
+
UI.message('AAB to sign: '+ aab_path)
|
657
|
+
|
658
|
+
# Resolve path to the AAB to sign:
|
659
|
+
output_signed_aab = ''
|
660
|
+
aab_path = self.resolve_aab_path(aab_path)
|
661
|
+
|
662
|
+
if File.file?(keystore_path)
|
663
|
+
|
664
|
+
UI.message("Signing the AAB...")
|
665
|
+
puts ''
|
666
|
+
output_signed_aab = self.sign_aab(
|
667
|
+
aab_path,
|
668
|
+
keystore_path,
|
669
|
+
key_password,
|
670
|
+
alias_name,
|
671
|
+
alias_password
|
672
|
+
)
|
673
|
+
puts ''
|
674
|
+
end
|
675
|
+
|
676
|
+
# Prepare contect shared values for next lanes:
|
677
|
+
Actions.lane_context[SharedValues::MATCH_KEYSTORE_PATH] = keystore_path
|
678
|
+
Actions.lane_context[SharedValues::MATCH_KEYSTORE_ALIAS_NAME] = alias_name
|
679
|
+
Actions.lane_context[SharedValues::MATCH_KEYSTORE_AAB_SIGNED] = output_signed_aab
|
680
|
+
|
681
|
+
output_signed_aab
|
682
|
+
else
|
683
|
+
UI.message("No APK or AAB file found")
|
684
|
+
end
|
611
685
|
end
|
612
686
|
|
613
687
|
def self.description
|
@@ -615,7 +689,7 @@ module Fastlane
|
|
615
689
|
end
|
616
690
|
|
617
691
|
def self.authors
|
618
|
-
["Christopher NEY"]
|
692
|
+
["Christopher NEY", "Simon Scherzinger"]
|
619
693
|
end
|
620
694
|
|
621
695
|
def self.return_value
|
@@ -626,7 +700,8 @@ module Fastlane
|
|
626
700
|
[
|
627
701
|
['MATCH_KEYSTORE_PATH', 'File path of the Keystore fot the App.'],
|
628
702
|
['MATCH_KEYSTORE_ALIAS_NAME', 'Keystore Alias Name.'],
|
629
|
-
['MATCH_KEYSTORE_APK_SIGNED', 'Path of the signed APK.']
|
703
|
+
['MATCH_KEYSTORE_APK_SIGNED', 'Path of the signed APK.'],
|
704
|
+
['MATCH_KEYSTORE_AAB_SIGNED', 'Path of the signed AAB.']
|
630
705
|
]
|
631
706
|
end
|
632
707
|
|
@@ -652,6 +727,11 @@ module Fastlane
|
|
652
727
|
description: "Path of the APK file to sign",
|
653
728
|
optional: true,
|
654
729
|
type: String),
|
730
|
+
FastlaneCore::ConfigItem.new(key: :aab_path,
|
731
|
+
env_name: "MATCH_KEYSTORE_AAB_PATH",
|
732
|
+
description: "Path of the AAB file to sign",
|
733
|
+
optional: true,
|
734
|
+
type: String),
|
655
735
|
FastlaneCore::ConfigItem.new(key: :match_secret,
|
656
736
|
env_name: "MATCH_KEYSTORE_SECRET",
|
657
737
|
description: "Secret to decrypt keystore.properties file (CI)",
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fastlane-plugin-match_keystore
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Christopher NEY
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-09-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: pry
|
@@ -167,7 +167,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
167
167
|
- !ruby/object:Gem::Version
|
168
168
|
version: '0'
|
169
169
|
requirements: []
|
170
|
-
rubygems_version: 3.2.
|
170
|
+
rubygems_version: 3.2.17
|
171
171
|
signing_key:
|
172
172
|
specification_version: 4
|
173
173
|
summary: Easily sync your Android keystores across your team
|