From 41ba3ccff8192bea6424965c2dec27d3d895629c Mon Sep 17 00:00:00 2001 From: DaoLQ Date: Wed, 2 Oct 2019 09:05:28 +0700 Subject: [PATCH] Config Circle CI 2.0 --- .circleci/config.yml | 87 ++++++ .swiftlint.yml | 40 +++ Dangerfile | 11 + Gemfile | 6 + Gemfile.lock | 252 ++++++++++++++++++ Structure_IOS.xcodeproj/project.pbxproj | 25 +- certificates/Certificates.p12 | Bin 0 -> 3247 bytes .../JobChatStgAdHocProvision.mobileprovision | Bin 0 -> 8805 bytes fastlane/Appfile | 6 + fastlane/Fastfile | 67 +++++ 10 files changed, 493 insertions(+), 1 deletion(-) create mode 100644 .circleci/config.yml create mode 100644 .swiftlint.yml create mode 100644 Dangerfile create mode 100644 Gemfile create mode 100644 Gemfile.lock create mode 100644 certificates/Certificates.p12 create mode 100644 certificates/JobChatStgAdHocProvision.mobileprovision create mode 100644 fastlane/Appfile create mode 100644 fastlane/Fastfile diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 0000000..6fb7505 --- /dev/null +++ b/.circleci/config.yml @@ -0,0 +1,87 @@ +version: 2 + +defaults: &defaults + macos: + xcode: "10.2.0" + working_directory: /Users/distiller/project + environment: + FL_OUTPUT_DIR: /Users/distiller/project/output + GYM_OUTPUT_NAME: app + # For fix ruby error + shell: /bin/bash --login -eo pipefail + +jobs: + build: + <<: *defaults + steps: + - checkout + + - run: + name: Set Ruby Version + command: echo "ruby-2.4" > .ruby-version + + - restore_cache: + keys: + - v1-gems-{{ checksum "Gemfile.lock" }} + - v1-gems- + - run: + name: Install RubyGems + command: bundle install --path vendor/bundle + - save_cache: + key: v1-gems-{{ checksum "Gemfile.lock" }} + paths: + - vendor/bundle + + # - run: + # name: Install SwiftLint + # command: brew install swiftlint + + # - run: + # name: Decrypt resource + # command: openssl aes-256-cbc -k $DECRYPT_KEY -d -in JobChat/Resources/Staging/encrypted_GoogleService-Info.plist -out JobChat/Resources/Staging/GoogleService-Info.plist + + # - run: + # name: Run unit test + # command: bundle exec fastlane test + - run: + name: Run Danger + command: bundle exec danger + + - store_artifacts: + path: /Users/distiller/project/output + destination: output + - store_test_results: + path: /Users/distiller/project/output/scan + + - persist_to_workspace: + root: /Users/distiller/project + paths: + - . + + deploy: + <<: *defaults + steps: + - attach_workspace: + at: /Users/distiller/project + # - run: + # command: base64 -D -o certificates/Certificates.p12 <<< $Certificates + # - run: + # command: base64 -D -o certificates/JobChatStgAdHocProvision.mobileprovision <<< $profile + - run: + name: Build ipa & upload + command: bundle exec fastlane beta + - store_artifacts: + path: /Users/distiller/project/output + destination: output + +workflows: + version: 2 + build_and_deploy: + jobs: + - build: + filters: + tags: + only: /^v.*/ + - deploy: + requires: + - build diff --git a/.swiftlint.yml b/.swiftlint.yml new file mode 100644 index 0000000..74ea59f --- /dev/null +++ b/.swiftlint.yml @@ -0,0 +1,40 @@ +disabled_rules: +- identifier_name +- trailing_whitespace + +excluded: # paths to ignore during linting. Takes precedence over `included`. +- Pods +- Carthage +- JobChat/Utils/Libraries + +opt_in_rules: +- empty_count +- empty_string + +line_length: + warning: 150 + error: 200 + ignores_function_declarations: true + ignores_comments: true + ignores_urls: true + +function_body_length: + warning: 50 + error: 100 + +type_body_length: + warning: 300 + error: 500 + +cyclomatic_complexity: + warning: 15 + error: 25 + ignores_case_statements: true + +function_parameter_count: + warning: 4 + error: 6 + +file_length: + warning: 1000 + error: 1500 diff --git a/Dangerfile b/Dangerfile new file mode 100644 index 0000000..facc84c --- /dev/null +++ b/Dangerfile @@ -0,0 +1,11 @@ +# github comment settings +github.dismiss_out_of_range_messages + +# for PR +if github.pr_title.include?('[WIP]') || github.pr_labels.include?('WIP') + warn('PR is classed as Work in Progress') +end + +# Warn when there is a big PR +warn('a large PR') if git.lines_of_code > 500 + diff --git a/Gemfile b/Gemfile new file mode 100644 index 0000000..9c338aa --- /dev/null +++ b/Gemfile @@ -0,0 +1,6 @@ +source "https://rubygems.org" + +gem 'cocoapods' +gem 'fastlane' +gem 'danger' +gem 'danger-swiftlint' diff --git a/Gemfile.lock b/Gemfile.lock new file mode 100644 index 0000000..5bebba2 --- /dev/null +++ b/Gemfile.lock @@ -0,0 +1,252 @@ +GEM + remote: https://rubygems.org/ + specs: + CFPropertyList (3.0.0) + activesupport (4.2.11.1) + i18n (~> 0.7) + minitest (~> 5.1) + thread_safe (~> 0.3, >= 0.3.4) + tzinfo (~> 1.1) + addressable (2.5.2) + public_suffix (>= 2.0.2, < 4.0) + atomos (0.1.3) + babosa (1.0.2) + claide (1.0.2) + claide-plugins (0.9.2) + cork + nap + open4 (~> 1.3) + cocoapods (1.6.1) + activesupport (>= 4.0.2, < 5) + claide (>= 1.0.2, < 2.0) + cocoapods-core (= 1.6.1) + cocoapods-deintegrate (>= 1.0.2, < 2.0) + cocoapods-downloader (>= 1.2.2, < 2.0) + cocoapods-plugins (>= 1.0.0, < 2.0) + cocoapods-search (>= 1.0.0, < 2.0) + cocoapods-stats (>= 1.0.0, < 2.0) + cocoapods-trunk (>= 1.3.1, < 2.0) + cocoapods-try (>= 1.1.0, < 2.0) + colored2 (~> 3.1) + escape (~> 0.0.4) + fourflusher (>= 2.2.0, < 3.0) + gh_inspector (~> 1.0) + molinillo (~> 0.6.6) + nap (~> 1.0) + ruby-macho (~> 1.4) + xcodeproj (>= 1.8.1, < 2.0) + cocoapods-core (1.6.1) + activesupport (>= 4.0.2, < 6) + fuzzy_match (~> 2.0.4) + nap (~> 1.0) + cocoapods-deintegrate (1.0.4) + cocoapods-downloader (1.2.2) + cocoapods-plugins (1.0.0) + nap + cocoapods-search (1.0.0) + cocoapods-stats (1.1.0) + cocoapods-trunk (1.3.1) + nap (>= 0.8, < 2.0) + netrc (~> 0.11) + cocoapods-try (1.1.0) + colored (1.2) + colored2 (3.1.2) + commander-fastlane (4.4.6) + highline (~> 1.7.2) + concurrent-ruby (1.1.5) + cork (0.3.0) + colored2 (~> 3.1) + danger (6.0.6) + claide (~> 1.0) + claide-plugins (>= 0.9.2) + colored2 (~> 3.1) + cork (~> 0.1) + faraday (~> 0.9) + faraday-http-cache (~> 1.0) + git (~> 1.5) + kramdown (~> 2.0) + kramdown-parser-gfm (~> 1.0) + no_proxy_fix + octokit (~> 4.7) + terminal-table (~> 1) + danger-swiftlint (0.20.1) + danger + rake (> 10) + thor (~> 0.19) + declarative (0.0.10) + declarative-option (0.1.0) + digest-crc (0.4.1) + domain_name (0.5.20180417) + unf (>= 0.0.5, < 1.0.0) + dotenv (2.7.2) + emoji_regex (1.0.1) + escape (0.0.4) + excon (0.64.0) + faraday (0.15.4) + multipart-post (>= 1.2, < 3) + faraday-cookie_jar (0.0.6) + faraday (>= 0.7.4) + http-cookie (~> 1.0.0) + faraday-http-cache (1.3.1) + faraday (~> 0.8) + faraday_middleware (0.13.1) + faraday (>= 0.7.4, < 1.0) + fastimage (2.1.5) + fastlane (2.121.1) + CFPropertyList (>= 2.3, < 4.0.0) + addressable (>= 2.3, < 3.0.0) + babosa (>= 1.0.2, < 2.0.0) + bundler (>= 1.12.0, < 3.0.0) + colored + commander-fastlane (>= 4.4.6, < 5.0.0) + dotenv (>= 2.1.1, < 3.0.0) + emoji_regex (>= 0.1, < 2.0) + excon (>= 0.45.0, < 1.0.0) + faraday (~> 0.9) + faraday-cookie_jar (~> 0.0.6) + faraday_middleware (~> 0.9) + fastimage (>= 2.1.0, < 3.0.0) + gh_inspector (>= 1.1.2, < 2.0.0) + google-api-client (>= 0.21.2, < 0.24.0) + google-cloud-storage (>= 1.15.0, < 2.0.0) + highline (>= 1.7.2, < 2.0.0) + json (< 3.0.0) + mini_magick (~> 4.5.1) + multi_json + multi_xml (~> 0.5) + multipart-post (~> 2.0.0) + plist (>= 3.1.0, < 4.0.0) + public_suffix (~> 2.0.0) + rubyzip (>= 1.2.2, < 2.0.0) + security (= 0.1.3) + simctl (~> 1.6.3) + slack-notifier (>= 2.0.0, < 3.0.0) + terminal-notifier (>= 2.0.0, < 3.0.0) + terminal-table (>= 1.4.5, < 2.0.0) + tty-screen (>= 0.6.3, < 1.0.0) + tty-spinner (>= 0.8.0, < 1.0.0) + word_wrap (~> 1.0.0) + xcodeproj (>= 1.8.1, < 2.0.0) + xcpretty (~> 0.3.0) + xcpretty-travis-formatter (>= 0.0.3) + fourflusher (2.2.0) + fuzzy_match (2.0.4) + gh_inspector (1.1.3) + git (1.5.0) + google-api-client (0.23.9) + addressable (~> 2.5, >= 2.5.1) + googleauth (>= 0.5, < 0.7.0) + httpclient (>= 2.8.1, < 3.0) + mime-types (~> 3.0) + representable (~> 3.0) + retriable (>= 2.0, < 4.0) + signet (~> 0.9) + google-cloud-core (1.3.0) + google-cloud-env (~> 1.0) + google-cloud-env (1.0.5) + faraday (~> 0.11) + google-cloud-storage (1.16.0) + digest-crc (~> 0.4) + google-api-client (~> 0.23) + google-cloud-core (~> 1.2) + googleauth (>= 0.6.2, < 0.10.0) + googleauth (0.6.7) + faraday (~> 0.12) + jwt (>= 1.4, < 3.0) + memoist (~> 0.16) + multi_json (~> 1.11) + os (>= 0.9, < 2.0) + signet (~> 0.7) + highline (1.7.10) + http-cookie (1.0.3) + domain_name (~> 0.5) + httpclient (2.8.3) + i18n (0.9.5) + concurrent-ruby (~> 1.0) + json (2.2.0) + jwt (2.1.0) + kramdown (2.1.0) + kramdown-parser-gfm (1.0.1) + kramdown (~> 2.0) + memoist (0.16.0) + mime-types (3.2.2) + mime-types-data (~> 3.2015) + mime-types-data (3.2019.0331) + mini_magick (4.5.1) + minitest (5.11.3) + molinillo (0.6.6) + multi_json (1.13.1) + multi_xml (0.6.0) + multipart-post (2.0.0) + nanaimo (0.2.6) + nap (1.1.0) + naturally (2.2.0) + netrc (0.11.0) + no_proxy_fix (0.1.2) + octokit (4.14.0) + sawyer (~> 0.8.0, >= 0.5.3) + open4 (1.3.4) + os (1.0.1) + plist (3.5.0) + public_suffix (2.0.5) + rake (12.3.2) + representable (3.0.4) + declarative (< 0.1.0) + declarative-option (< 0.2.0) + uber (< 0.2.0) + retriable (3.1.2) + rouge (2.0.7) + ruby-macho (1.4.0) + rubyzip (1.2.2) + sawyer (0.8.1) + addressable (>= 2.3.5, < 2.6) + faraday (~> 0.8, < 1.0) + security (0.1.3) + signet (0.11.0) + addressable (~> 2.3) + faraday (~> 0.9) + jwt (>= 1.5, < 3.0) + multi_json (~> 1.10) + simctl (1.6.5) + CFPropertyList + naturally + slack-notifier (2.3.2) + terminal-notifier (2.0.0) + terminal-table (1.8.0) + unicode-display_width (~> 1.1, >= 1.1.1) + thor (0.20.3) + thread_safe (0.3.6) + tty-cursor (0.6.1) + tty-screen (0.6.5) + tty-spinner (0.9.0) + tty-cursor (~> 0.6.0) + tzinfo (1.2.5) + thread_safe (~> 0.1) + uber (0.1.0) + unf (0.1.4) + unf_ext + unf_ext (0.0.7.6) + unicode-display_width (1.5.0) + word_wrap (1.0.0) + xcodeproj (1.8.2) + CFPropertyList (>= 2.3.3, < 4.0) + atomos (~> 0.1.3) + claide (>= 1.0.2, < 2.0) + colored2 (~> 3.1) + nanaimo (~> 0.2.6) + xcpretty (0.3.0) + rouge (~> 2.0.7) + xcpretty-travis-formatter (1.0.0) + xcpretty (~> 0.2, >= 0.0.7) + +PLATFORMS + ruby + +DEPENDENCIES + cocoapods + danger + danger-swiftlint + fastlane + +BUNDLED WITH + 1.16.1 diff --git a/Structure_IOS.xcodeproj/project.pbxproj b/Structure_IOS.xcodeproj/project.pbxproj index ddbccd7..6fd301a 100644 --- a/Structure_IOS.xcodeproj/project.pbxproj +++ b/Structure_IOS.xcodeproj/project.pbxproj @@ -8,6 +8,10 @@ /* Begin PBXBuildFile section */ 95EBCB25DD5E94C08069B703 /* Pods_Structure_IOS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 12350BBD90D5323169389B9C /* Pods_Structure_IOS.framework */; }; + BF4EB10B23443AE20056BC95 /* Dangerfile in Resources */ = {isa = PBXBuildFile; fileRef = BF4EB10A23443AE20056BC95 /* Dangerfile */; }; + BF4EB10E23443AFC0056BC95 /* fastlane in Resources */ = {isa = PBXBuildFile; fileRef = BF4EB10C23443AFC0056BC95 /* fastlane */; }; + BF4EB10F23443AFC0056BC95 /* Gemfile in Resources */ = {isa = PBXBuildFile; fileRef = BF4EB10D23443AFC0056BC95 /* Gemfile */; }; + BF4EB11123443B1B0056BC95 /* certificates in Resources */ = {isa = PBXBuildFile; fileRef = BF4EB11023443B1B0056BC95 /* certificates */; }; BFACA53F1F9B2499003EB555 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFACA53E1F9B2499003EB555 /* AppDelegate.swift */; }; BFACA5411F9B2499003EB555 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFACA5401F9B2499003EB555 /* ViewController.swift */; }; BFACA5441F9B2499003EB555 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = BFACA5421F9B2499003EB555 /* Main.storyboard */; }; @@ -19,6 +23,10 @@ 12350BBD90D5323169389B9C /* Pods_Structure_IOS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Structure_IOS.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 2699674AA73EF5A16274B415 /* Pods-Structure_IOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Structure_IOS.release.xcconfig"; path = "Target Support Files/Pods-Structure_IOS/Pods-Structure_IOS.release.xcconfig"; sourceTree = ""; }; ACEB269FB87DA33989737CD6 /* Pods-Structure_IOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Structure_IOS.debug.xcconfig"; path = "Target Support Files/Pods-Structure_IOS/Pods-Structure_IOS.debug.xcconfig"; sourceTree = ""; }; + BF4EB10A23443AE20056BC95 /* Dangerfile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Dangerfile; sourceTree = SOURCE_ROOT; }; + BF4EB10C23443AFC0056BC95 /* fastlane */ = {isa = PBXFileReference; lastKnownFileType = folder; path = fastlane; sourceTree = SOURCE_ROOT; }; + BF4EB10D23443AFC0056BC95 /* Gemfile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Gemfile; sourceTree = SOURCE_ROOT; }; + BF4EB11023443B1B0056BC95 /* certificates */ = {isa = PBXFileReference; lastKnownFileType = folder; path = certificates; sourceTree = SOURCE_ROOT; }; BFACA53B1F9B2499003EB555 /* Structure_IOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Structure_IOS.app; sourceTree = BUILT_PRODUCTS_DIR; }; BFACA53E1F9B2499003EB555 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; BFACA5401F9B2499003EB555 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; @@ -46,7 +54,6 @@ ACEB269FB87DA33989737CD6 /* Pods-Structure_IOS.debug.xcconfig */, 2699674AA73EF5A16274B415 /* Pods-Structure_IOS.release.xcconfig */, ); - name = Pods; path = Pods; sourceTree = ""; }; @@ -58,9 +65,21 @@ name = Frameworks; sourceTree = ""; }; + BF4EB10923443AD30056BC95 /* CI */ = { + isa = PBXGroup; + children = ( + BF4EB11023443B1B0056BC95 /* certificates */, + BF4EB10C23443AFC0056BC95 /* fastlane */, + BF4EB10D23443AFC0056BC95 /* Gemfile */, + BF4EB10A23443AE20056BC95 /* Dangerfile */, + ); + path = CI; + sourceTree = ""; + }; BFACA5321F9B2499003EB555 = { isa = PBXGroup; children = ( + BF4EB10923443AD30056BC95 /* CI */, BFACA53D1F9B2499003EB555 /* Structure_IOS */, BFACA53C1F9B2499003EB555 /* Products */, 2703D795CE736C68E8BCC318 /* Pods */, @@ -151,9 +170,13 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + BF4EB11123443B1B0056BC95 /* certificates in Resources */, + BF4EB10F23443AFC0056BC95 /* Gemfile in Resources */, BFACA5491F9B2499003EB555 /* LaunchScreen.storyboard in Resources */, BFACA5461F9B2499003EB555 /* Assets.xcassets in Resources */, BFACA5441F9B2499003EB555 /* Main.storyboard in Resources */, + BF4EB10B23443AE20056BC95 /* Dangerfile in Resources */, + BF4EB10E23443AFC0056BC95 /* fastlane in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/certificates/Certificates.p12 b/certificates/Certificates.p12 new file mode 100644 index 0000000000000000000000000000000000000000..ae42505d211446de6173cc3e07b0fe383bafe048 GIT binary patch literal 3247 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 OaANNX1g-`G0{;i2$q6(7 literal 0 HcmV?d00001 diff --git a/certificates/JobChatStgAdHocProvision.mobileprovision b/certificates/JobChatStgAdHocProvision.mobileprovision new file mode 100644 index 0000000000000000000000000000000000000000..989d531f46527c5ff34e8220a448551a5db1528d GIT binary patch literal 8805 zcmc&)33yXwx^B8qTA&p{DtlT$v8Byfva(dq$(|-@_9g)t&z9t5Z}tQgS_D*Z9293n z5DG;Q#kDMo$_O%m%LP$TS>(Eas4OZf%ZPISbVsVrbDw)>+UDu`*Khg1<^8`CsJVjZ zS5!G)HUGjOPGN3KbA<_NuF&UlIPd_ds9!-l}tX^ty806frpN+=21}m;r zOSu)*JRTMf`xzcjW|46XTD9521$*##a(xB2!V`;yC-Zp8WU_|H&Z?n8f$YR6&kzZP znMf?H1)Eia1vPYxt^i~@cE5@p&`YyathTsls*g$60&;4Zo(M2gdD$lDjm9E?*;-AA zlzNDmIp&_q>+I@T;%6x$1|(F|Ofbf}SSDhKFfKOLy$KPC5WROZC`5J<(jbs1dhf>T zo|dI8jWF$-%7|DGH#BI}A`mR8h9uR9zyd>)A;DyX@0`kOAL``E;3s0PP$X~-1Kskl z_2%Cut&ZBk88JE{NVplgdlMJok21V2RmqqHNMjTGN6m=%*kY(yM0V6lj^(1>?Ep*I#qPo zskFLHN*m&ANF^wxEv;5){G?I=5e2EUO|O5#8la>A~MsDPgZ^ur{=7pfI_$kD)en^ZP|T8hhPAg?ox zg{*Q1+90FSwv1I^Vtpxj1~YZ+7rlm-Qie5jjD>VExR3oZa;*;Ywd)V}=%hBAF6nm5 zSsex`rRGMZSxurcqa4SKRt)2-aaj_auUlS+g@7#>WwuNTk_f9XD@zB^kbwoNZ;V6~ zCbzxLD}<6hgh<-yMt;3tC9IF=oqSb7fguK+H)0O3R+}Lf7K>m)=F`^0#)!fX^HG?^ zWFD5ER;JY+VH$I$VVlKGD-$9#?za2UsubXqa;eigjlHfxER3au?s~5@Xh9n5Gxd+0lq z1g%T(6k$nYqeiZCvPnYi!xb90BNR{h<2VsC>e8@ZOV}c0N`T?QD!WXZNySY@gA+Bn ztWFj&!(tZktMyugOX1^b!#>vQOt~WNc)ZGD4r30LU7BJ{hL{vKR(bd?x29g3fT*B2 zh6qH$fQW%z0Z1Ee$Y5?Aj$ul#+pS6g|HDNV449SPrZRzkmspN@G0-8-o*Au98XY>E zz!YkCP>~FTV;+y2t;$5=38$)ovYBml^}t5ON~tue1ZSwglX4uF>5@7NmcZTa2=10E za3ht(91bs`GC`Cql+Yp)FNI=pM~5%P9f%~>*_Q-5KxxF3)>-6PJD}V7GGlV^Y|Zj2 zmr13VG1+Z94#cRyEK-~Y{3DrksOypr95-53AdV#6q(kQ>^;v%mI~oLD-~$Pg#UVoJ z�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 PROVISIONING_PROFILE_NAME + } + }, + xcargs: "DEVELOPMENT_TEAM='#{TEAM_ID}' PROVISIONING_PROFILE_SPECIFIER='#{PROVISIONING_PROFILE_NAME}'" + ) + + crashlytics( + api_token: ENV['CRASHLYTICS_API_KEY'], + build_secret: ENV['CRASHLYTICS_SECRET'], + groups: "QA3C", + notes: "Automatic iOS Build" + ) + end + + private_lane :setup_provisioning_profiles do |options| + next unless Helper.ci? + + import_certificate( + keychain_name: 'fastlane_tmp_keychain', + certificate_path: 'certificates/Certificates.p12', + certificate_password: ENV['IOS_CERTIFICATES_KEY_PASSWORD'], + keychain_password: ENV['MATCH_KEYCHAIN_PASSWORD']) + + Dir.glob('../certificates/*.mobileprovision').each {|filename| + puts filename + FastlaneCore::ProvisioningProfile.install(filename) + } + end +end