Fastlane-ÒÆ¶¯¿ª·¢×Ô¶¯»¯Ö®µÀ±¾ÈËÒ»Ö±ÈÏΪ£ºÔÚ³ÌÐòµÄÊÀ½çÀһÇÐÖØ¸´ÐԵģ¬Á÷³Ì»¯µÄ¹¤×÷¶¼¿ÉÒÔ½»¸ø×Ô¶¯»¯È¥Íê³É¡£
ÔÚÒÆ¶¯¿ª·¢ÖÐÒ²ÊÇÈç´Ë£ºÆäʵд´úÂëÖ»ÊÇÎÒÃÇ¿ª·¢¹ý³ÌÖеÄÒ»²¿·Ö£¬³ý´ËÖ®ÍâÎÒÃÇ»¹ÐèÒª½øÐбàÒ룬´ò°ü£¬ÉÏ´«£¬²¿Ê𣬿â¹ÜÀí£¬°æ±¾¿ØÖƵȵÈCodingÖ®ÍâµÄÔÓÊ£¬¶øÕýÊÇÕâЩ·¦Î¶¶øÖظ´µÄ¹¤×÷Õ¼ÓÃÁËÎÒÃDZ¦¹óµÄʱ¼ä¡£
ËùÒÔÔÚ¡°ÀÁÈË¡±±é²¼µÄ¹¤³ÌʦÊÀ½çÖУ¬×Ü»áÓÐÈËÏ뾡°ì·¨×ö³ö¸Ä±ä£¬ÓÚÊÇÕâЩ¡°ÀÁÈË¡±ÃÇÀִ˲»Æ£µÄÔì³öÐí¶àÃÀÃîµÄÂÖ×Ó£¬¼È·½±ãÁË×Ô¼º£¬ÓÖ°ïÖúÁËËûÈË£¬ÈÃÕâ¸öÊÀ½ç±äµÃ¸ü¼ÓÃÀºÃ¡£
½ñÌì¾Í¸ø´ó¼Ò½éÉÜÆäÖÐÒ»¸öÂÖ×Ó£ºFastlane£¬Õâ¸öGithubÉϵÄÃ÷ÐÇÏîÄ¿½ØÖ¹µ½Ä¿Ç°¹²»ñµÃ1Íò¶à¸öStar£¬²¢ÇÒ»¹ÓÐ1500¶à¸öFork¡£
FastlaneÔÚÎÒÃÇÍŶÓÖеÄÍÆ¹ãºÍÓ¦ÓÃ
ÔõôÑù£¬ÌýÆðÀ´ÊDz»ÊǺÜÅ££¿²»¹ýÏȱ𼱣¬ÔÚ½øÈëÕýÌâ֮ǰ£¬ÎÒÏë¸ú´ó¼Ò¼òµ¥·ÖÏíÒ»ÏÂÎÒÃÇÒÆ¶¯ÍŶÓÔÚ¿ªÕ¹³ÖÐø²âÊԺͳÖÐø½»¸¶¹¤×÷ÖеÄһЩÐĵÃÌå»á¡£
´ó¼Ò¶¼ÖªµÀ£¬×î½ü¼¸Äê£¬Ëæ×ÅÖÇÄÜÊÖ»úµÄÆÕ¼°£¬Òƶ¯¶Ë²»½öÒª³ÐÔØ¸ü¶àÒµÎñ³¡¾°µÄʵÏÖ£¬²¢ÇÒ»¹ÒªÓ¦¶Ô²»¶Ï±ä»¯ÒµÎñÐèÇó¡£Õâ¾ÍÒªÇóÎÒÃÇÒÆ¶¯ÍŶÓÄܹ»Ñ¸ËÙÏìÓ¦±ä»¯£¬¿ìËٵĵü´ú¡£ÄÇÃ´ËæÖ®¶øÀ´µÄÎÊÌâ¾ÍÊÇÈçºÎ±£ÕÏÔÚ²»ÎþÉüÖÊÁ¿µÄǰÌáÏ£¬¾¡¿ÉÄܵÄÌáÉýËÙ¶È£¬ÎÒÈÏΪÕâÒ»ÇÐÐèÒª½¨Á¢ÔÚ¸ßÖÊÁ¿µÄ³ÖÐø²âÊԺͳÖÐø½»¸¶Ìåϵ֮ÉÏ¡£
µ«ÊÇÒÆ¶¯¶Ë±¾ÉíÐËÆðµÄʱ¼ä¾Í±È½Ï¶Ì£¬¸÷·½ÃæµÄ³ÉÊì¶ÈÒ²ÓÐËùǷȱ£¬Äܹ»ÄÃÀ´ÓõŤ¾ß¸üÊÇÉÙÖ®ÓÖÉÙ£¬Ëæ×ÅÒµÎñÉî¶È¹ã¶ÈµÄÔö¼Ó£¬µü´úËٶȵļӿ죬ÖîÈçÖ¤Êé¹ÜÀí£¬´ò°ü£¬ÉÏ´«£¬·¢²¼ÕâÀàÖØ¸´¶øºÁÎÞ¼¼Êõº¬Á¿µÄ¹¤×÷Öð½¥Õ¼ÓÃÁË´ó¼ÒµÄʱ¼ä£¬ÍŶÓÄÚ²¿¶Ô´ËÚ¸²¡²»ÒÑ¡£
ËùÒÔÎÒÃǵļܹ¹ÍŶӴÓÈ¥Äê³õ¾ÍÒ»Ö±ÔÚѰÕÒÕâÑùµÄÒ»ÖÖ¹¤¾ß£¬Ò»ÖÖ½â¾ö·½°¸£¬Ö¼ÔÚ³¹µ×½â·Å¹¤³ÌʦµÄ¡°Ë«ÊÖ¡±¡£
¸Õ¿ªÊ¼ÎÒÃdz¢ÊÔʹÓÃJenkins+Fir´î½¨ÁËÒ»Ì׳ÖÐø²âÊԵĻ·¾³£¬Á÷³ÌÈçÏÂͼ£º
˵ʵ»°£¬Ð§¹û»¹ÊÇ¿ÉÒԵģ¬ÖÁÉÙÔÚÒ»¶¨µÄʱÆÚÄÚÂú×ãÁËÎÒÃǵÄÒªÇ󣬵«ÊÇJenkins±¾ÉíÖ»ÊÇÒ»¸öͨÓõÄCIÁ÷³Ì¹ÜÀíϵͳ£¬±¾Éí²¢²»ÌṩÖîÈçITCÌá°üºÍMetaÄÚÈݹÜÀí£¬Ç©Ãû£¬Ö¤Êé¹ÜÀíµÈµÈºÍÒÆ¶¯¶ËÒµÎñ½ôÃܽáºÏµÄ³¡¾°£¬¶øÇÒÅäÖõĹý³ÌÏ൱·±Ëö¡£
È¥ÄêÄêµ×µÄʱºò£¬»úÔµÇɺÏ֮ϣ¬ÎÒÃÇÔÚGithubÉÏ·¢ÏÖÁËFastlane£¬¿´ÁËReadmeºó¸Ð¾õÓÐÏ·£¬ÓÚÊǾö¶¨³¢ÊÔһϡ£Æäʵ¸Õ¿ªÊ¼µÄʱºò£¬ÎÒÃÇÒ²Ö»ÊÇÓÃFastlaneÀ´½â¾öiOSÍŶÓÄÚÖ¤Êéͬ²½ºÍÉÏ´«ITCµÄÎÊÌ⣬µ«ÊÇËæ×ÅÉîÈëµÄÑо¿£¬·¢ÏÖÆäʵFastlaneÄÜ×öµÄ¸ü¶à£¬ÓÚÊÇÎÒÃǽ«ÆäÖð²½Ó¦Óõ½iOS¶ËµÄ¸ü¶àµÄ³¡¾°£¬±ÈÈ磺˽ÓÐPodµÄ·¢²¼£¬´úÂëµÄ¾²Ì¬¼ì²é£¬UIAutomation²âÊԵȵȣ¬½Ó×ÅÓÖÍÆ¹ãµ½Andriodƽ̨£¬Íê³ÉÖîÈç˽ÓÐAARµÄ·¢²¼£¬Monkey²âÊԵȵÈһϵÁÐÈÎÎñ¡£ÏÖÔÚ¿ÉÒÔ˵FastlaneÒѾ±ä³ÉÁËÎÒÃǹ¤×÷ÖÐÃܲ»¿É·ÖµÄÒ»²¿·Ö
ÁíÍ⣬Fastlane±¾ÉíÒ²¿ÉÒÔºÍJenkins£¬CircleµÈÖ÷Á÷CIϵͳ×öºÜºÃµÄ¼¯³É£¬²¢ÇÒÓÉÓÚÖ÷ÒªµÄCIÁ÷³Ì¶¼ÓÉFastlaneÀ´¹ÜÀíºÍÖ´ÐУ¬ËùÒÔ´Ó¸ù±¾ÉϽµµÍÁËÕâЩϵͳÅäÖõĸ´ÔÓ¶È¡£
Fastlane¼ò½é
˵ÁËÕâô¶à£¬ÎÒÃǻص½½ñÌìµÄÖ÷½ÇÉíÉÏ£¬Ê×ÏÈÏȼòµ¥½éÉÜһϣºFastlaneÊÇÓÃRubyÓïÑÔ±àдµÄÒ»Ì××Ô¶¯»¯¹¤¾ß¼¯ºÍ¿ò¼Ü£¬Ã¿Ò»¸ö¹¤¾ßʵ¼Ê¶¼¶ÔÓ¦Ò»¸öRuby½Å±¾£¬ÓÃÀ´Ö´ÐÐijһ¸öÌØ¶¨µÄÈÎÎñ£¬¶øFastlaneºËÐÄ¿ò¼ÜÔòÔÊÐíʹÓÃÕßͨ¹ýÀàËÆÅäÖÃÎļþµÄÐÎʽ£¬½«²»Í¬µÄ¹¤¾ßÓлú¶øÁé»îµÄ½áºÏÔÚÒ»Æð£¬´Ó¶øÐγÉÒ»¸ö¸öÍêÕûµÄ×Ô¶¯»¯Á÷³Ì¡£
µ½Ä¿Ç°ÎªÖ¹£¬FastlaneµÄ¹¤¾ß¼¯´óÔ¼°üº¬170¶à¸öС¹¤¾ß£¬»ù±¾ÉϺ¸ÇÁË´ò°ü£¬Ç©Ãû£¬²âÊÔ£¬²¿Ê𣬷¢²¼£¬¿â¹ÜÀíµÈµÈÒÆ¶¯¿ª·¢ÖÐÉæ¼°µ½µÄÄÚÈÝ¡£
¹ØÓÚÕâЩ¹¤¾ßµÄÃèÊöºÍʹÓÿÉÒÔ¿´ÕâÀ
https://docs.fastlane.tools/actions/Actions/
Èç¹ûÕâЩ¹¤¾ßÈÔȻûÓзûºÏÄãÐèÇóµÄ£¬Ã»ÓйØÏµ£¬µÃÒæÓÚFastlane±¾ÉíÇ¿´óµÄActionºÍPlugin»úÖÆ£¬Èç¹ûÄãÇ¡ºÃ¶®Ò»Ð©Ruby¿ª·¢µÄ»°£¬¿ÉÒÔºÜÇáÒ׵ıàд³ö×Ô¼ºÏëÒªµÄ¹¤¾ß¡£
ÆäÊµÕæÕý¹Ù·½³öÆ·µÄ¹¤¾ß´óÔ¼Õ¼Ò»°ë×óÓÒ£¬Ê£ÏµĶ¼ÊÇGithubÉçÇø³ÉÔ±¹±Ï׵쬱¾ÈËÓÐÐÒÒ²¹±Ï×¹ýÆäÖÐÒ»¸ö¡££¨ÕâÀィÒéÒÆ¶¯¿ª·¢¹¤³Ìʦ»¹ÊÇÐèҪѧϰһÃŽű¾ÓïÑԵ쬱ÈÈçRuby£©
FastlaneµÄ°²×°·Ç³£¼òµ¥£¬ºÍCocoapodsÒ»Ñù£¬FastlaneÒ²¿ÉÒÔͨ¹ýRubyGemsÀ´°²×°£¬Èç¹ûÄãµÄµçÄÔÉÏÓÐRuby»·¾³µÄ»°£¬ÄÇôֻÐèÒªÖ´ÐÐÈçÏÂÃüÁ¼´¿ÉÍê³É£º
ÒÆ¶¯¿Í»§¶Ë³ÖÐø²âÊԺͳÖÐø½»¸¶µÄ³£¼û³¡¾°¼°Í´µã
Fastlane±¾ÉíÄÜ×öµÄÊÂÇéºÜ¶à£¬µ«ÊÇÆäÖÐÒ»¸ö×îÎªÖØÒªµÄ×÷ÓþÍÊÇÄܹ»ÎÞ·ìǶÈëÔÚ³ÖÐø²âÊԺͳÖÐø½»¸¶ÌåϵÖС£
ÏÂÃæ£¬ÎªÁ˱ãÓÚ´ó¼ÒÀí½â£¬ÎÒÄÃiOSΪÀý£¬¾Ù¼¸¸öÎÒÃÇÔÚÒÆ¶¯¿ª·¢¹ý³ÌÖг£³£»áÓöµ½µÄ³¡¾°£º
³¡¾°Ò»
µ±Ò»¸öµü´ú¿ª·¢²âÊÔ½áÊø£¬·þÎñÆ÷¶ËÉÏÏßÖ®ºó£¬ÎÒÃÇ»áʹÓÃTestflight½øÐÐÏßÉϸú²â£¬Ò»°ã»áÖ´ÐÐÈçÏÂÁ÷³Ì£º
1.Ö´ÐÐGit PullÃüÁÀ×îеĴúÂëµ½±¾µØ
2.Pod Install°²×°×îеÄÒÀÀµ¿â
3.ÔÚXcodeÖн«Build VersionÔö¼Ó
4.ÔÚXcodeµã»÷Archive±àÒë²¢´ò°ü
5.Ñ¡ÔñÊä³öÒ»¸öiOS AppStoreģʽµÄipaÎļþ
6.ͨ¹ýApplication Loader½«IPAÉÏ´«µ½ITC£¨TestFlight£©
7.È»ºóµÈ´ýITC ProcessÍê³Éºó£¬µÇ¼ÉÏȥѡÔñ¸Õ²ÅµÄBuild½øÐÐTestFlight²âÊÔ
8.ÓÉÓÚÐÞ¸ÄÁ˰汾ºÅ£¬ËùÒÔÐèÒª½«´úÂëCommitºÍPushһϠÈç¹ûÏßÉϸú²â·¢ÏÖÓÐÎÊÌ⣬ÄÇôÐèÒªÐÞ¸´Íê±ÏºóÖØ¸´ÉÏÃæµÄ8¸ö²½Öè¡£
Æäʵ×ö¹ýÕâ¼þʵÄͬѧӦ¸Ã¶¼ÓÐÌå»á£¬Ë³ÀûµÄ»°²î²»¶àÒ»´ÎµÃ30·ÖÖÓ°É£¬Èç¹ûijһ´ÎBuild
VersionÍü¼ÇÔö¼ÓÁË£¬ÄÇÃ´Ç°ÃæµÄ¹¤×÷¾Í°××öÁË¡£
ÔÚÎÒÃÇÍŶÓÔçÆÚµÄʱºò£¬ÓÉÓÚ×Ô¶¯»¯ÌåϵÉÐ佨Á¢£¬ÎÒÃÇÓÐÒ»¸öͬÊÂרߺÔð´ËÊ£¬ÔÚÏßÉϸú²âµÄÕâÁ½Ì죬ËûÓаëÌìʱ¼ä¼¸ºõ¸É²»Á˱ðµÄ£¬»ù±¾É϶¼ÔÚ´ò°üÉÏ´«£¬Ëµ³öÀ´¶¼ÊÇÀá¡£
³¡¾°¶þ
Ëæ×ÅÒµÎñµÄ·¢Õ¹£¬²úÆ·ÏßµÄÔö¼Ó£¬ÎÒÃÇÐèÒª½«APP²ð·ÖΪÈô¸É¸ö»ù´¡×é¼þºÍÒµÎñ×é¼þ£¬ÒÔ±ã¿çAPPʹÓ㬲¢ÇÒ·½±ã¹ÜÀíά»¤£¨ÕâÓÖÊÇÁíÍâÒ»¸ö´óµÄÒéÌ⣬¾Í²»ÔÚ´Ë׸ÊöÁË£©¡£Ã¿¸ö×é¼þ¶¼ÓÉÒ»¸ö˽ÓÐPodÀ´¹ÜÀí£¬PodµÄ·¢²¼ºÍ¸üÐÂÒ²³ÉΪÁËÎÒÃÇÈÕ³£¹¤×÷µÄÒ»²¿·Ö£¬¶ÔÓÚÕâЩPod£¬Ò»°ãÎÒÃÇÍŶÓÄÚ²¿µÄÔÔòÊÇ£ºËÖÆ×÷£¬Ë¹ÜÀí£¬Ë·¢²¼£¬PodµÄ¸ºÔðÈËÎÒÃÇÄÚ²¿³ÆÖ®Îª¿â¹Ü£¬Õâ¼þÊÂÒ²¾Í·Öµ£µ½ÁËÿ¸ö¿â¹ÜÉíÉÏ£¬¿â¹Ü·¢²¼Ò»¸öPodµÄÁ÷³Ì´óÔ¼ÈçÏ£º
1.Ôö¼ÓPodspecÖеİ汾ºÅ
2.Ö´ÐÐpod lib lintÃüÁî½øÐпâÑéÖ¤
3.Git Commit´úÂë
4.Git Push´úÂëµ½Ô¶¶Ë
5.´òÒ»¸öGit Tag
6.½«Tag Pushµ½Ô¶¶Ë
7.Ö´ÐÐpod repo pushÃüÁî·¢²¼¿âµ½Ë½Óвֿâ
Èç¹ûÖ»ÓÐÁ½Èý¸ö¿âµÄ»°£¬²¢ÇÒ¿âµÄ¸üÐÂÆµÂʽϵ͵Äʱºò£¬Ã¿´ÎÊÖ¶¯À´´¦Àí»¹ºÃ¡£µ«Êǵ±¿âÖð½¥Ôö¶àµÄʱºòÕâ¼þʾͱäµÃÏ൱Âé·³£¬ÓÈÆäÊǵ±¶¥²ãµÄ¿âÒÀÀµµ×²ã¿âµÄʱºò£¬ÄÇôÉý¼¶Ò»¸ö¿â£¬Ó°ÏìÃæ½«Ô¶Ô¶³¬¹ýÆä±¾Éí£¬Í¨¹ýÈ˹¤µÄ·½Ê½´¦ÀíµÄ»°£¬Õû¸ö¹ý³Ì»á±äµÃÏ൱ʹ¿à¡£
˵µ½ÕâÀÎÒÏàÐŵ«·²ÊDzÙ×÷¹ýµÄͬѧ£¬Ó¦¸Ã¶¼¶Ô´ËÉîÓид¥¡£
ËùÒÔÎÒÃÇÀ´¿´¿´Õë¶ÔÒÔÉÏÕâÁ½¸ö³¡¾°£¬ÈçºÎʹÓÃFastlaneÀ´½â¾ö¡£
Æäʵ˵ÆðÀ´Ò²²»ÄÑ£¬Ê×ÏÈÔÚÏîÄ¿ÏÂÖ´ÐУº
È»ºó¸úËæÅäÖÃÒýµ¼£¬ÌîдAppºÍITCÏà¹ØÐÅÏ¢£¬È»ºóFastlane»áÔÚÏîĿĿ¼Ï´´½¨Ò»¸öfastlaneĿ¼£¬ÀïÃæ°üº¬ËùÓкʹËÏîÄ¿Ïà¹ØµÄÅäÖã¬Ê£ÏÂÒª×öµÄ¾ÍÊǽ«ÒÔÉϵÄÁ÷³ÌÅäÖÃÔÚfastlaneĿ¼ÏµÄFastfileÖУ¬
³¡¾°Ò»µÄFastfile£¨¿ÉÒÔºöÂÔHipChat²¿·Ö£©£º
desc 'Deploy a new version to the App Store' lane :do_deliver_app do |options| ENV["FASTLANE_PASSWORD"] = options[:itc_password] project = options[:project] scheme = options[:scheme] version = options[:version] build = options[:build] || Time.now.strftime('%Y%m%d%H%M') output_directory = options[:output_directory] output_name = options[:output_name]
hipchat(message: "Start deilver app #{project}
at version #{version}")
hipchat(message: "Git pull")
git_pull
hipchat(message: "Pod install")
cocoapods
hipchat(message: "Update build number to
#{build} and building ipa")
update_build_number(version: build, plist: "#{project}/Info.plist")
gym(scheme: options[:scheme], clean: true, output_directory:
output_directory, output_name: output_name)
hipchat(message: 'deliver to itunesconnect')
deliver(force: false, skip_screenshots: true,
skip_metadata: true)
hipchat(message: "Upload #{project} to
itunesconnect successfully!")
git_add(path: '.')
git_commit(path: '.', message: "update build
number to #{build} and upload to itunesconnect")
git_pull
git_push(branch: "test")
end |
³¡¾°¶þµÄFastfile£¨¿ÉÒÔºöÂÔHipChat²¿·Ö£©£º
desc "Release new private pod version" lane :do_release_lib do |options| target_version = options[:version] project = options[:project] path = "#{project}.podspec"
hipchat(message: "Start release pod #{project}
at version #{target_version}")
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) # Ìá½»µ½
CocoaPods
hipchat(message: "Release pod #{project}
Successfully!")
end |
¶ÔÓÚFastlaneµÄÅäÖ㬹ٷ½ÌṩµÄÎĵµÖлáÓиüÏêϸµÄÃèÊö£º
https://docs.fastlane.tools/getting-started/ios/setup/
ÅäÖÃÍêÕâ¸ö½Å±¾ºó£¬Ê£ÏµÄʾͺÜÇáËÉдÒâÁË¡£
Õë¶Ô³¡¾°Ò»ÎÒÃÇÔÚÏîĿĿ¼Ï£¬ÓÃÖÕ¶ËÖ´ÐÐÈçÏÂÃüÁî¼´¿É
fastlane do_deliver_app project:Gengmei scheme:Gengmei-AppStore version:6.3.0 build:201609011530 ... |
ͬÀí£¬Õë¶Ô³¡¾°¶þÎÒÃÇÔÚÏîĿĿ¼Ï£¬ÓÃÖÕ¶ËÖ´ÐÐÈçÏÂÃüÁî¼´¿É£º
fastlane do_release_lib project:GMUtil version:0.1.4 |
Èκθ´ÔÓµÄÁ÷³Ì£¬»ù±¾ÉÏÒ»¸öÃüÁîÈ«²¿¸ã¶¨£¬ÊDz»ÊǺܷ½±ã¡£
ÁíÍ⣬ΪÁËÄܹ»ÈÃFastlaneµÄ¸÷ÖÖÃüÁî¸ü¼Óɵ¹Ï»°£¬¿ÉÊÓ»¯£¬ÎÒÃÇ»ùÓÚFastlaneÄںˣ¬Ê¹ÓÃRuby
on Rails¿ò¼Ü¿ª·¢ÁËÒ»¿îÊÊÓÃÓÚÒÆ¶¯¶Ë³ÖÐø²âÊԺͳÖÐø·¢²¼µÄϵͳJaguar¡£Jaguar±¾ÉíºÍGitlab£¬Sentry£¬Jira£¬HipChat£¬MavenµÈµÈÄÚ²¿ÏµÍ³½øÐдòͨ£¬´Ó¶øÐγÉÒ»¸öÍêÕûµÄ×Ô¶¯»¯Ìåϵ¡£

ÕâÑù¶ÔÓڴ󲿷ֵÄ×Ô¶¯»¯Á÷³Ì£¬Jaguar»áͨ¹ý¸÷ÖÖ¶¨Ê±ÈÎÎñ»òWebHook×Ô¶¯´¥·¢£»ÉÙ²¿·ÖÐèÒªÈ˹¤²Ù×÷µÄ£¬¹¤³ÌʦÃÇÒ²Ö»ÐèÒªµãÒ»¸ö°´Å¥¾ÍÄÜÍê³ÉÁË¡£
ÕâÀ︽ÉÏÒ»¸öJaguarµÄ½ØÍ¼£º

ʹÓÃFastlaneµÄ¸ÐÊÜ£¬²È¿ÓµÄ¼òµ¥»Ø¹Ë
ʹÓÃÁËFastlaneÕâô³¤µÄʱ¼ä£¬ÎÒ×îÉîµÄ¸ÐÊܾÍÊÇ£ºFastlaneÕæÕýµÄ½«¹¤³Ìʦ´Ó¸÷ÖÖÎÞÁĶøÓÖ±ØÐëÒª×öµÄÖØ¸´ÐÔÀͶ¯ºÍÁ÷³Ì»¯¹¤×÷Öнâ·Å³öÀ´£¬×¨×¢ÓÚÒµÎñ»ò¼Ü¹¹±¾Éí£¬Ê¹µÃÕû¸ö¿ª·¢Ð§ÂÊ£¬²âÊÔЧÂÊ£¬ÔËάЧÂÊ´ó´óÌáÉý¡£
ÔÚʹÓÃFastlaneµÄ¹ý³ÌÖУ¬ÓÐһЩСµÄ×¢ÒâÊÂÏҲºÍ´ó¼Ò·ÖÏíһϣº
ÓÉÓÚFastlane±¾Éí¸üÐÂÆµÂʱȽϸߣ¬´óÔ¼1-2ÖÜÒ»´Î£¬ÄÇôÈç¹û×î½üµÄ¼¸¸ö°æ±¾¶¼Ã»ÓÐÉý¼¶µÄ»°£¬½¨Òé×ÐϸÔĶÁÒ»ÏÂÕ⼸´Î¸üеÄRelease
Notes£¬·ñÔòÓпÉÄÜ»á³öÏÖÒ»Ð©ÆæÆæ¹Ö¹ÖµÄBug£¬±ÈÈ磺 ÔÚ1.87°æ±¾Éý¼¶µ½1.88µÄʱºò£¬Èç¹û²»ÔÚFastfileÖмÓÈëÈçÏÂÁ½ÐУº
ENV['FASTLANE_EXPERIMENTAL_TRANSPORTER_AVOID_SHELL_SCRIPT'] = '1' ENV['SPACESHIP_LOGIN_ENCODING_IDENTITY'] = '1' |
ÄÇô£¬ÉÏ´«ITCµÄʱºò£¬¾Í»á±¨´í£¬¶øÇÒ´Ó±¨´íÖв¢²»ÄÜ¿´µ½¾ßÌåÔÒò£¬×îºó¾¹ý¸÷ÖÖÕÛÌÚÖÕÓÚÔÚGithubÉϵÄissueÖÐÕÒµ½ÁËÔÒò£ºSpaceshipÕâ¸ö¹¤¾ßÔö¼ÓÁËÒ»¸öСµÄÌØÐÔ¶øµ¼ÖµÄBug¡£
ÁíÍ⣬´ó¼ÒÔÚʹÓÃFastlaneµÄ¹ý³ÌÖУ¬Èç¹ûÓöµ½ÁËÎÊÌ⣬½¨ÒéÖ±½ÓÔÚGithubÉÏÌáissue£¬FastlaneµÄ×÷ÕߺÍÉçÇø¹¤³ÌʦÃÇ»á·Ç³£Ñ¸ËÙµÄ×ö³öÏìÓ¦£¬¶øÇÒ»á·Ç³£ÈÈÐĵİïÄã½â¾öÎÊÌ⣬µ±È»´ó¼ÒÌáÎÊÌâµÄʱºòÒª¾¡Á¿ÃèÊöÇå³þ£¬¸ÃÌù´úÂëÌû´úÂ룬¸Ã½ØÍ¼µÄ½ØÍ¼¡£
·¢É¢Ë¼Î¬£¬Fastlane²»Ö»×¨ÊôÓÚÒÆ¶¯¶Ë
ËäÈ»Fastlane±¾ÉíÊÇÎªÒÆ¶¯¶øÉúµÄ£¬µ«ÊÇÈç¹ûÎÒÃÇ·¢»ÓÒ»ÏÂÏëÏóÁ¦µÄ»°£¬¾Í»á·¢ÏÖ£¬ÆäʵҲ¿ÉÒ԰Ѻó¶Ë£¬Ç°¶ËµÄ³ÖÐø¼¯³ÉºÍ³ÖÐø½»¸¶Á÷³ÌÕûÀí³öÀ´£¬È»ºóҲͳһ½»¸øFastlaneÀ´¹ÜÀí£¨µ±È»Õâ¸ö¹ý³ÌÖп϶¨ÐèÒª×Ô¶¨ÒåһЩPlugin»òActionµÄ£©
±ÈÈ磺ÎÒÃÇÍŶÓĿǰÕý¼Æ»®ÏȰÑPCÕ¾µÄUI×Ô¶¯»¯²âÊÔÁ÷³Ì¼¯³É½øÀ´£º
1.Ö´ÐÐGit PullÃüÁÀ×îеĴúÂë
2.ʹÓÃpip°²×°Requirements
3.»ìÏýѹËõǰ¶ËJavascriptºÍCSS
4.ÖØÆôDjango·þÎñ
5.ʹÓÃSeleniumÖ´ÐÐUI×Ô¶¯»¯²âÊÔ
6.ÊÕ¼¯²âÊÔ½á¹û£¬·¢Óʼþ¸øQAÍŶÓ
¶ÔÓ¦µÄFastfileÈçÏ£¨¼òд£¬»¹Î´ÕæÕýʹÓã©£º
desc "Do automation test for pc web" lane :automation_test_pc do |options| git_pull pip_install gulp_build restart_django selenium_test end |
ÕâÑùÒÔÀ´£¬Ò»¸öÍŶÓÄڵĿͻ§¶Ë£¬Ç°¶Ë£¬ºó¶ËµÄ³ÖÐø¼¯³ÉºÍ³ÖÐø½»¸¶¾ÍÄܹ»Í³Ò»²¿Êð£¬Í³Ò»¹ÜÀí£¬Í³Ò»Î¬»¤£¬´Ó¶øÔÚ»ù´¡ÉèÊ©ÉÏÄܹ»¾¡¿ÉÄÜÂú×ãÍŶӶÔ×Ô¶¯»¯µÄÐèÇ󣬺ÎÀÖ¶ø²»ÎªÄØ¡£
½áÓï
±¾´Î·ÖÏíÖ»ÊÇ´ø´ó¼ÒÁìÂÔÁËÒ»ÏÂFastlaneµÄ·ç²É£¬Õë¶ÔÖîÈ磺ÈçºÎ×Ô¶¨ÒåAction£¬Plugin£¬ÈçºÎÔÚAndriodƽ̨ÉÏʹÓõÄϸ½Ú£¬ÈçºÎÓ¦ÓÃÔÚ×Ô¶¯»¯²âÊÔ³¡¾°£¬ÒÔ¼°Ò»Ð©FastlaneµÄ¸ß¼¶Ó÷¨µÈ£¬ÎÒ»áÔÚ½ÓÏÂÀ´µÄÒ»¶Îʱ¼äÄÚ×ö³öÏàÓ¦µÄÕûÀí£¬ÐγÉÎÄÕ£¬ÒÔ¹©´ó¼Ò²Î¿¼¡£
ÓÉÓÚ±¾È˵ÄˮƽÓÐÏÞ£¬ÄÑÃâ»áÓдíÎóºÍÊè©£¬Ò²»¶Ó¸÷λͬѧָÕý£¬Èç¹û´ó¼ÒÔÚFastlaneµÄʹÓÃÉÏ£¬ÓиüºÃµÄ°¸Àý£¬Ò²»¶Ó½»Á÷ºÍ·ÖÏí¡£
×îºó£¬¸½ÉÏÒ»¸öÎÒÃÇÍŶÓÕýÔÚʹÓõ½µÄFastfile½Å±¾ºÍһЩ×Ô¶¨ÒåActions£º
https://github.com/GengmeiRD/Fastfiles
ÁíÍ⣬FastlaneÒ²ÌṩÁËһЩ¹úÍâÍŶӵÄExample£º
https://github.com/fastlane/examples
|