×÷Ϊ¼Ü¹¹Ê¦µÄÎÒÃdz£³£ÒªÃæÁÙµÄÒ»¸öÄÑÌâ¾ÍÊǼ¼ÊõÑ¡ÐÍ¡£ÏÖÔÚÎÞÂÛÊÇÉÌÒµÏîĿҲºÃ£¬¿ªÔ´ÏîĿҲºÃ£¬¿É¹©Ñ¡ÔñµÄ·½°¸ÊµÔÚÊÇÌ«¶à£¬ÆäÖÐÓÅÐãµÄ·½°¸Ò²ÊDzã³ö²»ÇÕâ¾ÍÒªÇóÎÒÃÇÔÚ×ö¼¼ÊõÑ¡Ð͵Äʱºò£¬ÐèÒª´Ó¶à¸öά¶È½øÐп¼Á¿£¬ÆäÖÐÁ¼ºÃµÄÀ©Õ¹ÐÔÊÇÎÒÃÇÖØµã¿¼Á¿µÄ¶ÔÏó¡£
ÈκÎÒ»¸öÓÅÐãµÄ¿ò¼Ü»òƽ̨¶¼Ó¦¸Ã¾ßÓÐÁ¼ºÃµÄÀ©Õ¹ÐÔ£¬ÒÔÂú×ã²»¶Ï±ä»¯µÄÒµÎñ³¡¾°ºÍ¸öÐÔ»¯ÒªÇ󣬶øÕâÖÖÀ©Õ¹ÐÔµÄÆäÖÐÒ»¸ö·½ÃæÔòÌåÏÖÔÚ£ºÊÇ·ñÄܹ»ÌṩһÖÖ»úÖÆ£¬ÕâÖÖ»úÖÆ¼ÈÄÜÂú×ã¶þ´Î¿ª·¢µÄ±ã½ÝÐÔ£¬ÓÖ×îС»¯ÉõÖÁ²»»á¶ÔÔÓеÄϵͳ²úÉúÈκεÄÇÖÈë»òÆÆ»µ¡£
Õ¾ÔÚÕâ¸ö½Ç¶ÈÉÏ£¬½ñÌìÎÒÃǾÍÀ´½éÉÜÒ»ÏÂFastlaneµÄÁ½ÖÖÀ©Õ¹»úÖÆ£¬ActionºÍPlugin¡£
FastlaneµÄAction»úÖÆ
Fastlane±¾Éí°üº¬Á½´óÄ£¿é£¬Ò»¸öÊÇÆäÄں˲¿·Ö£¬ÁíÍâÒ»¸ö¾ÍÊÇActionÁË¡£ActionÊÇFastlane×Ô¶¯»¯Á÷³ÌÖеÄ×îСִÐе¥Ôª£¬Ö±¹ÛÉÏÀ´½²¾ÍÊÇFastfile½Å±¾ÖеÄÒ»¸ö¸öÃüÁ±ÈÈ磺git_pull£¬deliver£¬pod_installµÈµÈ£¬¶øÕâЩÃüÁî±³ºó¶¼¶ÔÓ¦Ò»¸öÓÃRuby±àдµÄ½Å±¾¡£
ÎÒ²ÂÏ룬FastlaneµÄ×÷ÕßÃÇÔÚÏîÄ¿µÄÔçÆÚÉõÖÁ¹æ»®µÄ½×¶Î£¬Ó¦¸Ã¾Í¿¼Âǵ½ÁËÕâÒ»µã£ºÔÚÒÆ¶¯¿ª·¢ÖУ¬×Ô¶¯»¯µÄÒµÎñ³¡¾°Ì«¶à£¬Ã¿¸öÍŶӶ¼ÓÐ×Ô¼ºµÄÌØÊâÒªÇ󣬵¥¿¿Ò»Á½¸öÈ˵ÄÁ¦Á¿ÊÇÎÞ·¨Âú×ãµÄ£¬ËùÒÔÈçºÎ½«Éæ¼°µ½Êµ¼ÊÒµÎñµÄ¹¦ÄÜ¿ª·¢£¬ÓÃÓÅÑŵķ½Ê½½»¸ø¿ªÔ´ÉçÇøÖÐÅӴ󹤳ÌʦÃÇÀ´Î¬»¤£¬³ÉΪFastlane¼Ü¹¹ÖÐÐèÒªÖØµã¿¼ÂǵÄÄÚÈÝ¡£
ÓÚÊǾ¹ý²»¶ÏµÄ̽Ë÷£¬ÌÖÂÛºÍʵ¼ù£¬ActionÕâÖÖÀ©Õ¹»úÖÆÓ¦Ô˶øÉú¡£ÎÒÃÇ¿ÉÒÔÀí½âΪFastlane½¨Á¢ÁËÒ»Ì×ÍêÕûµÄ¹æÔò£¬Õâ¸ö¹æÔòÊÇÈç´ËµÄ¼òµ¥Ò×ÐУ¬ÎÞÂÛÊǹٷ½µÄ¹¤³Ìʦ»¹ÊÇ¿ªÔ´ÉçÇøµÄ¹¤³ÌʦÃÇ£¬´ó¼Ò¶¼ÔÚÕâ¸ö¹æÔòÀï½øÐÐÓÎÏ·£¬ÕâÑù²»µ«½µµÍÁËÀ©Õ¹µÄÃż÷£¬ÎüÒý¹¤³ÌʦÃÇÀ´ÍêÉÆFastlane±¾Éí£»Í¬Ê±ÓÖÔöÇ¿ÁËÔ¼Êø£¬¼õÉÙ²»±ØÒªµÄ¹µÍ¨ºÍ´úÂë¼ì²é³É±¾¡£ËùÒÔÎÒÃÇ¿ÉÒÔ¿´µ½ÎÞÂÛÊǹٷ½¹±Ï׵쬻¹ÊÇGithubÉçÇø¹±Ï×µÄActionÃÇ£¬ÎÞÒ»ÀýÍâ¶¼Á¥ÊôÓÚActionÀ©Õ¹µÄÒ»²¿·Ö¡£
µ½Ä¿Ç°ÎªÖ¹Fastlane°üº¬´óÔ¼170¶à¸öAction£¬´óÔ¼·ÖΪÈçϼ¸Àࣺ
1.ºÍÒÆ¶¯¶Ë³ÖÐø½»¸¶Ïà¹ØµÄ15¸öºËÐĵŤ¾ßÁ´£ºÈ磺deliver£¨ÉÏ´«ipa£¬½ØÆÁºÍmetaÐÅÏ¢µ½ITC£©£¬supply£¨ÉÏ´«apk£¬½ØÆÁºÍmetaÐÅÏ¢µ½Google
Play£©£¬sigh£¨iOS ProvisioningÎļþ¹ÜÀí£©µÈµÈ£¬ÏêÇéÈçÏ£º
https://github.com/fastlane/fastlane#fastlane-toolchain
2.ºÍiOSÏà¹ØµÄ£¬È磺ipa£¬xcode_installµÈµÈ
3.ºÍAndroidÏà¹ØµÄ£¬È磺gradle£¬adbµÈµÈ
4.ºÍ°æ±¾¿ØÖÆÏà¹ØµÄ£¬Èçgit_pull£¬hg_pushµÈµÈ
5.ºÍiOSÒÀÀµ¿â¹ÜÀíÏà¹ØµÄ£¬È磺cocoapods£¬carthageµÈµÈ
6.µÚÈý·½Æ½Ì¨¶Ô½ÓÏà¹ØµÄ£¬È磺hipchat£¬jira£¬twitter£¬slackµÈµÈ
ÕâЩActionµÄÏêÇéºÍʹÓ÷½·¨¿ÉÒԲ鿴Õâ¸öÁ´½Ó£º https://docs.fastlane.tools/actions/Actions/
Ó¦¸Ã˵¼¸ºõº¸ÇÁËËùÓг£¼ûµÄ³¡¾°£¬µ«ÊÇÈç¹ûÈÔÈ»ÎÞ·¨ÍêÈ«Âú×ãÄãµÄÒªÇóµÄ»°£¬¾ÍµÃ×Ô¼ºÀ´¶¯ÊÖ×Ô¶¨ÒåÒ»¸öÁË¡£
³¡¾°·ÖÎö
ÄÇôÈçºÎÀ´×Ô¶¨ÒåÒ»¸öActionÄØ£¿°´ÕÕϰ¹ß£¬ÎªÁ˱ãÓÚ´ó¼ÒÀí½â£¬ÎÒÃÇ»¹ÊÇÏÈ´ÓÒ»¸öÒµÎñ³¡¾°ÈëÊÖ¡£ÔÚÉÏһƪÎÄÕÂÖУ¬ÎÒÔø¾¾Ù¹ýÒ»¸öÀý×Ó£ºË½ÓÐPodµÄ·¢²¼£¬Æä²½ÖèÈçÏ£º
1.Ôö¼ÓPodspecÖеİ汾ºÅ
2.Ö´ÐÐpod lib lintÃüÁî½øÐпâÑéÖ¤
3.Git Commit´úÂë
4.Git Push´úÂëµ½Ô¶¶Ë
5.´òÒ»¸öGit Tag
6.½«Tag Pushµ½Ô¶¶Ë
7.Ö´ÐÐpod repo pushÃüÁî·¢²¼¿âµ½Ë½Óвֿâ È»ºó¶ÔÓ¦ÒÔÉϵö²½Ö裬ÎÒÃǶ¼¿ÉÒÔÕÒµ½ÏֳɵÄActionÀ´ÊµÏÖ£¬ËùÒÔÎÒÃÇ¿ÉÒÔÔÚFastfileÖÐÔö¼ÓÈçÏÂLane£º
desc "Release new private pod version" lane :do_release_lib do |options| target_version = options[:version] project = options[:project] path = "#{project}.podspec"
git_pull
ensure_git_branch # È·ÈÏ master ·ÖÖ§
pod_install
pod_lib_lint(verbose: true, allow_warnings: true,
sources:
SOURCES, use_bundle_exec: true, fail_fast: true)
version_bump_podspec(path: path, version_number:
target_version) # ¸üРpodspec
git_commit_all(message: "Bump version to
#{target_version}") # Ìá½»°æ±¾ºÅÐÞ¸Ä
add_git_tag(tag: target_version) # ÉèÖÃ tag
push_to_git_remote # ÍÆË͵½ git ²Ö¿â
pod_push(path: path, repo: "GMSpecs",
allow_warnings: true, sources: SOURCES) # Ìá½»µ½Ë½Óвֿâ
end |
×Ô¶¨ÒåAction
½²µ½ÕâÀ´ó¼Ò¿ÉÄÜ»áÎÊ£¬Õâ²»¶¼Ð´ÍêÁËÂð£¬ÄÄÀﻹÐèÒª×Ô¶¨ÒåAction°¡£¿±ð¼±£¬Æäʵ´óÔ¼3¸öÔÂǰ£¬±ÊÕß±àдÕâ¸öFastfileµÄʱºò£¬FastlaneÕýºÃȱÉÙÒ»¸öActionÄܹ»Ö§³ÖCocoapodsµÄÕâ¸öÃüÁ¼´£º
Õâ¸öÃüÁîÊÇÓÃÀ´Ñé֤˽ÓеÄPod¿âÊÇ·ñÕýÈ·£¬ËùÒÔµ±Ê±ÎÞÄÎ֮ϣ¬Ö»ÄÜ×Ô¼º¶¯ÊÖдһ¸öÁË¡£Ð´Íêºó·¢ÏÖ£¬Õâ¸ö¹¤×÷Ò²²¢Ã»ÓÐÏëÏóÖеÄÄÇôÀ§ÄÑ£¬FastlaneÒѾΪÎÒÃÇÌṩÁËÏֳɵÄÄ£°å£¬¼´Ê¹Äã¶ÔRubyµÄÓï·¨²»ÊìϤ£¬Ò²Ã»ÓйØÏµ£¬FastlaneÊÇ¿ªÔ´µÄÂ¿ÉÒÔÖ±½ÓÏÂÔØÔ´Âë¿´¿´±ðÈ˵ÄActionÊÇÔõôдµÄ¾ÍÖªµÀÁË£¬ÎÒÃÇ¿ÉÒÔÔÚÕâ¸öĿ¼ÏÂÕÒµ½ËùÓеÄActionÎļþ£º
fastlane/fastlane/lib/fastlane/actions/ |
×Ô¶¨ÒåActionµÄÁ÷³Ì´óÔ¼ÈçÏ£¬Ê×ÏÈ£¬ÎÒÃÇÔÚÖÕ¶ËÖÐÖ´ÐÐÃüÁî
È»ºó¸ù¾ÝÌáʾ£¬ÔÚÃüÁîÐÐÖÐÇÃÈëactionµÄÃû×Öpod_lib_lint£¬È»ºóFastlane»áÔÚµ±Ç°Ä¿Â¼µÄactionsÎļþ¼ÐÖаïÎÒÃÇ´´½¨ÁËÒ»¸öpod_lib_lint.rbµÄRubyÎļþ£¬ÄÚÈÝ´óÖÂÈçÏ£¨Ê¡ÂÔÁË·ÇÖØµã²¿·Ö£©£º
module Fastlane module Actions class PodLibLintAction < Action def self.run(params) UI.message "Parameter API Token: #{params[:api_token]}" end ......
def self.available_options
[
FastlaneCore::ConfigItem.new(key: :api_token,
env_name: "FL_POD_LIB_LINT_API_TOKEN",
# The name of the environment variable
description: "API Token for PodLibLintAction",
# a short description of this parameter
verify_block: proc do |value|
UI.user_error!("No API token for PodLibLintAction
given,
pass using `api_token: 'token'`") unless
(value and not value.empty?)
end),
......
]
end
end
end |
´ó¼Ò¿ÉÒÔ¿´µ½£¬×Ô¶¨ÒåµÄAction¶¼ÊÇÁ¥ÊôÓÚFastlane/ActionsÕâ¸ömodule£¬²¢ÇҼ̳Ð×ÔActionÕâ¸ö¸¸Àà¡£ËäȻģ°åÖеÄÄÚÈÝ»¹Í¦¶à£¬²»¹ý²»Óõ£ÐÄ£¬´ó²¿·ÖÄÚÈݶ¼ÊÇһЩ¼òµ¥µÄÎı¾ÃèÊö£¬¶ÔÓÚÎÒÃÇÀ´ËµÖ»ÐèÒªÖØµã¹Ø×¢ÕâÁ½¸ö·½·¨¾ÍÐУº
1.self.run·½·¨£ºÕâÀï·ÅÖõÄÊÇʵ¼ÊµÄÒµÎñ´¦Àí´úÂë¡£
2.self.available_options·½·¨£ºÕâÀïÉùÃ÷ÐèÒª¶ÔÍⱩ¶³öµÄ²ÎÊý£¬Ã»ÓÐÉùÃ÷µÄ²ÎÊýÔÚÖ´Ðйý³ÌÖÐÎÞ·¨Ê¹Óá£
ÔÚ¿ªÊ¼±àдʵ¼ÊµÄÒµÎñ´úÂë֮ǰ£¬ÎÒÃÇÐèÒªÁ˽âÇå³þÕâ¸öAction¾ßÌå°üº¬µÄÒµÎñÂß¼£¬ËùÒÔÎÒÃÇÊ×ÏÈÀ´·ÖÎöÒ»ÏÂCocoapodsµÄpod
lib lintÃüÁÔÚÖÕ¶ËÖ´ÐÐ
ÖÕ¶Ë´òÓ¡³ö£¨Ö»±£ÁôÖØµã²¿·Ö£©
Usage:
$ pod lib lint
Validates the Pod using the files in the working
directory.
Options:
--quick Lint skips checks that would
require to download and build
the spec
--allow-warnings Lint validates even if warnings
...... |
¿ÉÒÔ¿´³öÕâ¸öÃüÁî°üº¬Á˲»ÉÙÑ¡ÏOptions£©£¬¶øÎÒÃÇÐèÒª×öµÄÊǽ«ÕâЩѡÏîÓ³Éäµ½actionÖеIJÎÊý£¬ËùÒÔ½ÓÏÂÀ´ÎÒÃǸù¾ÝÑ¡ÏîµÄÀàÐÍ£¬ÔÚself.available_optionsÖнøÐÐÉùÃ÷£¬´úÂëÈçÏ£¨Ö»±£ÁôÖØµã²¿·Ö£©£º
def self.available_options [ FastlaneCore::ConfigItem.new(key: :use_bundle_exec, description: "Use bundle exec when there is a Gemfile presented", is_string: false, default_value: true), FastlaneCore::ConfigItem.new(key: :verbose, description: "Allow ouput detail in console", optional: true, is_string: false) ...... ] end |
ÉùÃ÷Íê±Ïºó£¬ÔÚself.run·½·¨Öбàд×îÖÕµÄÒµÎñÂß¼£¬Í¬Ê±½«ÉÏÃæµÄoptionsͨ¹ýparams±©Â¶³öÈ¥£¬ÕâÑùÔÚÔËÐÐpod_lib_lintÕâ¸öactionµÄʱºò£¬ÎÒÃǾͿÉÒÔ´«Èë¶ÔÓ¦µÄ²ÎÊý£¬´Ó¶øFastlane¿ÉÒÔÖ´ÐÐЯ´ø¸÷ÖÖÑ¡ÏîµÄÍêÕûÃüÁ´úÂëÈçÏ£¨Ö»±£ÁôÖØµã²¿·Ö£©£º
def self.run(params) command = [] command << "bundle exec" if File.exist?("Gemfile") && params[:use_bundle_exec]
command << "pod lib lint"
command << "--verbose" if params[:verbose]
command << "--allow-warnings"
if params[:allow_warnings]
......
result = Actions.sh(command.join(' '))
UI.success("Pod lib lint Successfully")
return result
end |
´ÓÕâ¶Î´úÂë¿ÉÒÔ¿´³ö£¬¹Ø¼üµãÔÚÓÚActions.sh()Õâ¾ä»°£¬ËùÒÔÎÒÃÇÒª±£Ö¤ÕâÀïµÄsh·½·¨Ö´ÐеÄcommandºÍpod
lib lintÃüÁîÔÚÖÕ¶ËÖÐÊä³öµÄÒ»Ö£¬ÀýÈ磺
pod lib lint --quick --verbose --allow-warnings --use-libraries |
×îºó£¬ÎÒÃǽ«pod_lib_lint.rb¿½±´µ½iOSÏîĿϵÄfastlane/actionsÎļþ¼ÐÖУ¬È»ºóÔÚ¸ÃÏîĿĿ¼Ï£¬Ö´ÐÐÈçÏÂÃüÁî:
fastlane action pod_lib_lint |
Èç¹ûûÓдíÎóµÄ»°£¬ÖÕ¶ËÖлáÊä³öÈçÏÂÄÚÈÝ£º
Æäʵ£¬×î³õдÕâ¸öAction£¬ÎÒÖ»ÊÇ´òËãÔÚÍŶÓÄÚ²¿Ê¹Ó㬲¢Ã»Óй±Ï×µ½GithubÉϵļƻ®£¬ËùÒÔֻʵÏÖÁËÒ»²¿·Ö²ÎÊý¡£ÎÒÃÇ×Ô¼ºÊ¹ÓÃÁËÒ»¶Îʱ¼ä£¬¸Ð¾õ±È½ÏÎȶ¨µÄʱºò£¬²Å½«ËùÓвÎÊý¶¼²¹Æë£¬È»ºó¹±Ï×µ½ÁËFastlaneµÄÖ÷²Ö¿âÖУ¬µØÖ·ÈçÏ£º
https://github.com/fastlane/fastlane/blob/master/fastlane/lib/fastlane/actions/pod_lib_lint.rb
ÕâÀï˵һ¸öÌâÍâ»°£º ¶ÔÓÚ¿ªÔ´ÏîÄ¿µÄ´úÂëÌá½»£¬Õû¸ö¹ý³Ì»á±È½ÏÑϸñ£¬³ýÁ˹¦ÄÜÎÞBug£¬µ¥Ôª²âÊÔÐèÒªÍêÈ«¸²¸ÇÖ®Í⣬¶ÔÓÚÓï·¨¸ñʽµÈÈíÖ¸±êÒ²ÓÐÒ»¶¨µÄÒªÇó¡£µ±Ìá½»pull
requestµÄʱºò£¬Github»áÏÈʹÓÃ×Ô¶¯»¯¹¤¾ß£¨HoundCIºÍCircleCI£©½øÐÐÈ«ÃæµÄ¼ì²é£¬Í¨¹ýºó²Å»á½»¸øCode
ReviewÍŶÓÈ˹¤Check£¬ËùÒÔÆ½³£´úÂëϰ¹ß²»ºÃµÄͬѧÐèÒª¶à¼Ó×¢Òâ¡£
FastlaneµÄPlugin»úÖÆ
ÎÒÃÇÔÚʹÓÃFastlaneµÄʱºò³£³£»áÓöµ½ÕâÑùµÄ³¡¾°£º
1.ÎÒµÄ×Ô¶¨ÒåActionÐèÒªÔÚ¶à¸öÄÚ²¿ÏîÄ¿ÖÐʹÓÃ
2.ÎÒ¾õµÃÕâ¸ö×Ô¶¨ÒåActionºÜ²»´í£¬Ïë¹²Ïí¸øÆäËûµÄÍŶÓʹÓÃ
´Ëʱ£¬¿½±´Õ³ÌùËäÈ»¿ÉÒÔ½â¾öÎÊÌ⣬µ«²¢²»ÊÇÒ»¸ö´ÏÃ÷µÄ·½°¸¡£½«Action·¢²¼µ½FastlaneµÄ¹Ù·½²Ö¿âµ¹ÊÇÒ»¸ö²»´íµÄÑ¡Ôñ£¬µ«Êǹٷ½²Ö¿â±¾Éí¶ÔActionµÄÒªÇó±È½Ï¸ß£¬²¢²»»á½ÓÊÕ·ÇͨÓÃÐÔµÄAction£¬¼´Ê¹½ÓÊÕÁË£¬Õû¸ö·¢²¼ÖÜÆÚÒ²»á±È½Ï³¤£¬¶øÇÒÒÔºóÎÞÂÛÊÇÉý¼¶»¹ÊÇBugÐÞ¸´£¬¶¼ÒÀÀµFastlane±¾ÉíµÄ·¢°æ£¬´ó´ó½µµÍÁËÁé»îÐÔ¡£
ËùÒÔ´Ó1.93¿ªÊ¼£¬FastlaneÌṩÁËÒ»ÖÖPluginµÄ»úÖÆÀ´½â¾öÕâÖÖÎÊÌâ¡£´ó¼Ò¿ÉÒÔÀí½âΪ£ºPlugin¾ÍÊÇÔÚActionµÄ»ù´¡ÉÏ×öÁËÒ»²ã°ü×°£¬Õâ¸ö°ü×°ÇÉÃîµÄÀûÓÃÁËRubyGemsÕâ¸öÏ൱³ÉÊìµÄRuby¿â¹ÜÀíϵͳ£¬ËùÒÔÆä¿ÉÒÔ¶ÀÁ¢ÓÚFastlaneÖ÷²Ö¿â½øÐвéÕÒ£¬°²×°£¬·¢²¼ºÍɾ³ý¡£
ÎÒÃÇÉõÖÁ¿ÉÒÔ¼òµ¥µÄÈÏΪ£ºPlugin¾ÍÊÇRubyGem·â×°µÄAction£¬ÎÒÃÇ¿ÉÒÔÏñ¹ÜÀíRubyGemsÒ»ÑùÀ´¹ÜÀíFastlaneµÄPlugin¡£
°²×°Plugin
µ½Ä¿Ç°ÎªÖ¹£¬´óÔ¼ÓÐ30¸öPlugin·¢²¼µ½ÁËRubyGemsÏ£¬ÎÒÃÇ¿ÉÒÔͨ¹ýÈçÏÂÃüÁîÀ´²éÕÒ£º
fastlane search_plugins [query] |
¼ÙÉèÎÒÃǵÄÏîÄ¿ÖÐÐèҪʹÓÃÒ»¸öÃû½Ðversion_from_last_tag£¬ÓÃÓÚ»ñÈ¡gitµÄ×î½üÒ»¸ötag£¬ÄÇôÎÒÃÇÔÚÖն˵ÄÏîĿĿ¼ÏÂÖ´ÐУº
fastlane add_plugin version_from_last_tag |
Ìí¼ÓÍê³Éºó£¬ÏîÄ¿Öлá¶à³öÒ»¸öGemfile£¬Gemfile.lock£¬fastlane/PluginfileÈý¸öÎļþ£¬ÆäÖÐÕâ¸öPluginfileʵ¼ÊÉϾÍÊÇÒ»¸öGemfile£¬ÀïÃæ°üº¬¶ÔÓÚPluginµÄÒýÓ㬸ñʽÈçÏ£º
# Autogenerated by fastlane # # Ensure this file is checked in to source control!
gem 'fastlane-plugin-version_from_last_tag' |
¶øPluginfile±¾ÉíÓÖ±»GemfileÒýÓã¬ËùÒÔÓÖÓ¡Ö¤ÉÏÉÏÎÄÖеÄÄǾ仰£º¶ÔPluginµÄ¹ÜÀíÆäʵ¾ÍÊǶÔRubyGemµÄ¹ÜÀí¡£
´ËºóµÄPluginÊÇʵ¼ÊÓ÷¨ºÍʹÓÃActionÊÇÒ»Öµģ¬ËùÒԾͲ»ÔÚ´Ë׸ÊöÁË¡£
·¢²¼Plugin
Èç¹ûÄãÏë·¢²¼Ò»¸öPlugin£¬¿ÉÒÔÑ¡ÔñÖ±½Ó×÷Ϊһ¸öGem·¢²¼µ½RubyGemsÉÏ£¬ÕâÑù´ó¼Ò¾Í¿ÉÒÔͨ¹ýsearch_pluginsÃüÁîËÑË÷µ½ÁË£»Ò²¿ÉÒÔÑ¡ÔñÖ»Ìá½»´úÂëµ½GithubÉÏ£¬È»ºóÌṩһ¸ögithubµÄµØÖ·¸øÆäËüÏîÄ¿»òÍŶÓʹÓã¬ÕâʱÐèÒªÔÚPluginfileÖÐÕâÑùÉùÃ÷£º
gem "fastlane-plugin-version_from_last_tag", git: "https://github.com/jeeftor/fastlane-plugin-version_from_last_tag" |
·¢²¼Ö®Ç°£¬ÎªÁ˱¾µØµ÷ÊÔ·½±ã£¬¿ÉÒÔ½«gemÖ¸Ïò±¾µØ£¬ÔÚPluginfileÕâÑùÉùÃ÷£º
gem "fastlane-plugin-version_from_last_tag", path: "../fastlane-plugin-version_from_last_tag" |
ÓÐÁËPluginÖ®ºó£¬FastlaneµÄ¸üÐÂÆµÂÊ´ó´ó½µµÍ£¬Ö÷²Ö¿âÉÏActionµÄÊýÁ¿½«Î¬³ÖÔÚĿǰµÄˮƽÉÏ£¬È¡¶ø´úÖ®µÄÊÇPluginµÄ²»¶ÏÔö¶à¡£ÆóÒµºÍÍŶӿÉÒÔÑ¡ÔñÊʺÏ×Ô¼ºµÄPlugin£¬Ò²¿ÉÒÔËæÊ±ËæµØ·¢²¼Plugin¸ø±ðµÄÍŶÓʹÓá£
½áÓï
ÓÐÁËAction£¬FastlaneµÄ¿ÉÀ©Õ¹ÐÔ´ó´óµÄÔöÇ¿£¬ÎÒÃÇ¿ÉÒԷdz£·½±ãµÄ±àдÊʺÏ×Ô¼ºÒµÎñ³¡¾°µÄ¹¤¾ß£»PluginµÄ³öÏÖ£¬ÓÖÔÚÀ©Õ¹ÐԵĻù´¡Ö®ÉÏ´ó´óÔöÇ¿ÁËÆäÁé»îÐÔ£¬Á½Õß½áºÏÔÚÒ»ÆðʹÓÿÉÒÔ½«FastlaneµÄÓÅÊÆ³ä·ÖµÄµÄ·¢»Ó³öÀ´¡£
ͨ³£Çé¿öÏ£¬Èç¹ûÒ»¸ö¹¤¾ßÖ»´òËãÔÚÒ»¸öÏîÄ¿ÖÐʹÓã¬ÄÇô½¨ÒéÖ±½ÓÓÃAction£¬±Ï¾¹Ò»¸öRuby½Å±¾¾ÍÄܽâ¾ö£¬³É±¾±È½ÏµÍ£»Èç¹û´òËãÔÚ¶à¸öÏîÄ¿ÖÐÉõÖÁ¿çÍŶÓʹÓã¬ÄÇôÔò½¨ÒéʹÓÃPlugin¡£
|