Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
iOS¿ª·¢-×Ô¶¯»¯´ò°üJenkins¼¯³É
 
  6280  次浏览      28
 2018-2-6 
 
±à¼­ÍƼö:
±¾ÎÄÀ´×ÔÓÚ¼òÊé,¹¤×÷ÐèÒª£¬ÎÒÃÇ´æÔÚµÄ×Ô¶¯´ò°üµÄ¹¤³ÌÓÐ3ÖÖ£¬Ò»ÖÖÊǵ¥Ò»µÄ¹¤³Ì´ò°ü£»Ò»ÖÖÊǼ¯³ÉcocoapodµÄ´ò°ü£»»¹ÓÐÒ»ÖÖÊÇÓÐwwwÎļþÐèÒª²åÈëµ½¹¤³ÌÀïµÄ´ò°ü·½Ê½£¬ºó±ß»áÒ»Ò»½²µ½3ÖÖÅäÖá£

ǰÑÔ

×Ô¶¯»¯´ò°ü¸ù±¾Ä¿µÄÊÇΪÁ˽ÚԼʱ¼ä£¬°ÑÖØ¸´ÇÒÎÞ¼¼Êõº¬Á¿µÄÊÂÇé½»¸ø»úÆ÷È¥×ö¡£JenkinsÊÇÒ»¸ö¿ªÔ´Èí¼þÏîÄ¿£¬ÊÇ»ùÓÚJava¿ª·¢µÄÒ»ÖÖ³ÖÐø¼¯³É¹¤¾ß£¬ÓÃÓÚ¼à¿Ø³ÖÐøÖØ¸´µÄ¹¤×÷£¬Ö¼ÔÚÌṩһ¸ö¿ª·ÅÒ×ÓõÄÈí¼þƽ̨£¬Ê¹Èí¼þµÄ³ÖÐø¼¯³É±ä³É¿ÉÄÜ¡£¸ü¶àµÄ½éÉÜ´ó¼Ò×ÔÐаٶȣ¬ÕâÀï¾Í²»†ªàÂÁË¡£

»·¾³ÅäÖãº

Mac OS 10.12.6

Xcode9.2

Ò»¡¢Jenkins°²×°

´ò¿ªJenkins¹ÙÍøÏÂÔØ×îеÄpkg°²×°°ü¡£°²×°Íê³ÉÖ®ºó£¬Safari¿ÉÄÜ»á×Ô¶¯´ò¿ª£¬Èç¹ûûÓÐ×Ô¶¯´ò¿ª£¬´ò¿ªä¯ÀÀÆ÷£¬ÊäÈëhttp://localhost:8080¡£

Õâʱºò¿ÉÄܳöÏÖÕâ¸öÒ³Ãæ£¬Õâ¸öÎÊÌâµÄÔ­Òò¾ÍÊÇJava»·¾³ÓÐÎÊÌ⣬ÐèÒªÖØ×°Java»·¾³¡£ÏÂÔØJavaµÄJDK

Ò»°ã»áÓÐ2¸ö°æ±¾¿ÉÑ¡£¬Ñ¡Ò»¸öÏÂÔØ¼´¿É£¬ÏÂÔØÍê°²×°ºó´ò¿ªÖÕ¶Ë£¬cd½øÈëµ½jenkins.war°üËùÔÚĿ¼£¬Ö´ÐÐÒÔÏÂÃüÁ

$ java -jar jenkins.war --httpPort=8080

httpPortÖ¸µÄ¾ÍÊÇJenkinsËùʹÓõÄhttp¶Ë¿Ú£¬ÕâÀïÖ¸¶¨8080(ĬÈϵľÍÊÇÕâ¸ö)£¬¿É¸ù¾Ý¾ßÌåÇé¿öÀ´Ð޸ġ£´ýJenkinsÆô¶¯ºó£¬ÔÚä¯ÀÀÆ÷Ò³ÃæÊäÈëÒÔϵØÖ·:http://localhost:8080ÕâÑù¾Í¿ÉÒÔ´ò¿ªJenkins¹ÜÀíÒ³ÃæÁË¡£

½ÓÏÂÀ´ÊÇÎÒÃÇÓöµ½µÄµÚÒ»¸ö¿ÓÒ²ÊÇÐèҪעÒâµÄµØ·½¡£

Ò»°ãÀ´Ëµä¯ÀÀÆ÷Ö±½Ó´ò¿ªhttp://localhost:8080²¢Ã»Ê²Ã´²»¶Ô£¬µ«ÊǵÈÄãÓÃJenkins´ò°üµÄʱºòÄã»á·¢ÏÖÓи÷ÖÖȨÏ޵ı¨´íÎÊÌâ¡£Ô­Òò¾ÍÊÇÖ±½ÓÓÃä¯ÀÀÆ÷´ò¿ª´´½¨Õ˺ţ¬ÄÇôJenkinsµÄ¹¤×÷Ŀ¼»á½¨Á¢ÔÚ/Users/Shared/JenkinsÏ¡£¾ßÌå¹ý³Ì²Î¼û stackoverflow¡£

ÕýÈ·µÄÆô¶¯·½Ê½ÊÇ£º

$ sudo launchctl unload /Library/LaunchDaemaons/org.jenkins-ci.plist

$ java -jar /Applications/Jenkins/jenkins.war --httpPort=8080

Õâʱ£¬Jenkies»áÔÚ/Users/[user name]/.Jenkins ÏÂÃæ½¨Á¢¹¤×÷Ŀ¼£¬´Ó¶øËü¾ÍÓÐȨÏÞÈ¥»ñÈ¡Ïà¹ØµÄkeychain¡£.JenkinsÊÇÒ»¸öÒþ²ØÎļþ£¬Í¨¹ý½øÈëÎļþ¼Ð·¾¶µÄ·½Ê½²é¿´»òÕßÏÔʾÒþ²ØÎļþ²é¿´¡£

$ defaults write com.apple.finder AppleShowAllFiles -bool true ´ËÃüÁîÏÔʾÒþ²ØÎļþ

$ defaults write com.apple.finder AppleShowAllFiles -bool false ´ËÃüÁî¹Ø±ÕÏÔʾÒþ²ØÎļþ

Ö´ÐÐÏÔʾ»òÒþ²ØÃüÁîºóÐèÒªÖØÐÂÆô¶¯Finder¼´¿ÉÖ´ÐС£

´ËʱÄã¿ÉÄÜ»áÓöµ½/Library/LaunchDaemaons/org.jenkins-ci.plist: No such file or directoryÕâÑùµÄ±¨´íÐÅÏ¢£¬µ«ÄãÓÃFinder´ò¿ªÂ·¾¶ÊÇÓÐÕâ¸öÎļþµÄ£¬È»ºóÄãcopyÎļþµÄ·¾¶·¢ÏÖ¾ÍÊÇÕâ¸ö·¾¶£¬´ËʱÄãÔÙÈ¥Ö´ÐÐ

$ sudo launchctl unload /Library/LaunchDaemaons/org.jenkins-ci.plist

¾Í»áÌáʾÄãdeny permission£¬ÐèÒªÊäÈëÃÜÂ룬Õâʱ¾ÍÕý³£ÁË¡£

ÊäÈë$ java -jar /Applications/Jenkins/jenkins.war --httpPort=8080Ö®ºóÈç¹û³öÏÖϱߵÄÐÅÏ¢¾Í±êʶJenkinsÒѾ­Æô¶¯ÁË¡£

´ËʱÔÚä¯ÀÀÆ÷ÊäÈëhttp://localhost:8080¼´¿É¡£

×¢Ò⣺ÕâÖÖ·½Ê½´ò¿ªµÄJenkinsÔÚ×Ô¶¯»¯´ò°üʱ£¬²»ÄܹرÕÔËÐÐJava»·¾³µÄÖÕ¶Ë¡£

¶þ¡¢JenkinsÕ˺ÅÉèÖÃ

Èç¹ûJenkins°²×°ÍêÊÇÓÃä¯ÀÀÆ÷Ö±½Ó´ò¿ªhttp://localhost:8080£¬ÄÇôӦ¸ÃÊÇÈçϵÄÏÔʾ½çÃæ¡£

ºìÉ«µÄ·¾¶¾ÍÊÇÈÃÎÒÃÇÕÒµ½ÃÜÂëµÄ·¾¶£¬Èç¹ûÊÇͨ¹ýÃüÁîÐÐÊäÈëºóä¯ÀÀÆ÷´ò¿ªµØÖ·£¬ÄÇôºìÉ«µÄÌáʾ·¾¶¾Í»áÊÇ/Users/[user name]/.Jenkins/.......¾Í±íÃ÷JenkinsÔÚµ±Ç°µÄµÇ¼Õ˺ÅϽ¨Á¢Á˹¤×÷Ŀ¼£¬Ö®ºó»áʡȥºÜ¶àÂé·³¡£

°´Â·¾¶´ò¿ªÊ±·¢ÏÖsecretsÎļþ¼ÐÎÞȨÏÞ·ÃÎÊ£¬ÓÒ¼üµã»÷Îļþ¼Ð -> ÏÔʾ¼ò½é -> ´ò¿ª¹²ÏíÓëȨÏÞ £¬¸øeveryone¼ÓÉ϶ÁÓëдȨÏÞ£¬½øÈëÎļþ¼Ðºó¿ÉÒÔ¿´µ½Ãû×ÖΪinitialAdminPasswordµÄÎļþ¡£

Õâ¸öÎļþ¼ÐÒ²ÓÐȨÏÞÎÊÌ⣬°´ÉϱߵIJÙ×÷ÐÞ¸ÄÏÂȨÏÞ¼´¿É£¬´ò¿ªºó¿ÉÒÔ¿½±´Àï±ßµÄÃÜÂ룬ȻºóÔÚJenkinsÒ³ÃæÉÏÊäÈë¼´¿É¡£

È»ºóµã»÷install suggested plugins £¬¼´ÏÂÔØÍÆ¼ö²å¼þ¡£

µ½Õâ¾Í¿ÉÒÔÉèÖÃÓû§ÃûºÍÃÜÂëÁË¡£

Èý¡¢°²×°²å¼þ¼°Ìí¼ÓÔ¿³×´®ºÍÃèÊöÎļþµÈ×¼±¸

ÒòΪÎÒÃÇÓõÄÊÇGitLabÀ´¹ÜÀíÔ´´úÂ룬Jenkins±¾Éí²¢Ã»ÓÐ×Ô´øGitLab²å¼þ£¬ËùÒÔÎÒÃÇÐèÒªÒÀ´ÎÑ¡Ôñ ϵͳ¹ÜÀí->¹ÜÀí²å¼þ£¬ÔÚ¡°¿ÉÑ¡²å¼þ¡±ÖÐÑ¡ÖС°GitLab Plugin¡±ºÍ¡°Gitlab Hook Plugin¡±ÕâÁ½ÏȻºó°²×°¡£

Èç¹ûÄãÏëÓÃXcode²å¼þ×÷ΪÅäÖôò°üÈÎÎñ¿ÉÒÔÏÂÔØ xcode integration²å¼þ£¬ÏÂÔØ·½Ê½Ò²ÊÇϵͳ¹ÜÀí->¹ÜÀí²å¼þ£¬ÔÚ¡°¿ÉÑ¡²å¼þ¡±ÖÐËÑË÷ÏÂÔØ¡£²»¹ýÎÒ»¹ÊÇÆ«ÏòÓë½Å±¾µÄ·½Ê½£¬ÒòΪ½Å±¾ËäÈ»Â鷳Щµ«ÊǸü¼ÓÁé»î¡£±ÈÈçÎÒÃÇ´ò°üµÄÃüÃû·½Ê½£¬´òÍê°üµÄ´æ·ÅÎļþ·¾¶µÈ¶¼¿ÉÒÔͨ¹ý½Å±¾×öÅäÖá£

×Ô¶¯´ò°üµÄjobÈÎÎñÅäÖÃÒ²ÐèÒªÌí¼ÓÔ¿³×´®ºÍÃèÊöÎļþ£¬ÕâʱÐèÒª°²×°Keychains and Provisioning Profiles Management²å¼þ£¬°²×°ºóÔÚJenkinsÊ×Ò³µã»÷ϵͳ¹ÜÀí»áÕÒµ½Õâ¸ö²å¼þ£¬µã»÷½øÈ¥¡£

ÈçͼÕâÀï¿ÉÒÔÉÏ´«µÄÎļþʱԿ³×´®ºÍÃèÊöÎļþ¡£²»ÄÜÖ±½ÓÉÏ´«Ö¤ÊéÎļþ¡£Ô¿³×´®µÄĿ¼¿ÉÒÔ´ò¿ªÔ¿³×´®µã»÷µÇ¼Կ³×´®²é¿´¡£

°´Í¼Ë÷æ÷£¬°´ÏÔʾµÄ·¾¶Í¨¹ýFinderÖ±½Ó´ò¿ªÎļþ¼Ð¡£

È»ºó¿½±´Ò»·Ý°²×°ÓÐÎÒÃÇ´ò°üÖ¤ÊéµÄÔ¿³×´®Îļþ£¬¼´login.keychain-db¡£´ËʱÐèҪעÒ⣬ÉÏ´«µ½JenkinsµÄÖ»ÈÏ.keychainºó׺ºÍ.mobileprovisionºó׺µÄÎļþ£¬ÆäËûÎļþ¶¼»áÉÏ´«Ê§°Ü¡£ËùÒÔÎÒÃÇÒª°ÑÕâ¸öÉÏ´«µÄÔ¿³×´®ºó׺µÄ-dbÈ¥µô£¬ÎļþÃûÐ޸ijÉlogin.keychain£¬È»ºóÔÙÉÏ´«¡£

ÉÏ´«³É¹¦ºóKeychainsϱ߻áÏÔʾFilenameΪlogin.keychain£¬¿ÉÒÔÌí¼Ó´ò°üÓõÄÖ¤Êé¡£

Õâ¸öÃû×Ö¿ÉÒÔÔÚÔ¿³×´®Öеã»÷²é¿´¡£

½ÓÏÂÀ´Ìí¼ÓÃèÊöÎļþ£¬ÏÈÌí¼ÓÃèÊöÎļþµÄµ¼Ïò·¾¶£¬

/Users/[user name]/Library/MobileDevice/Provisioning Profiles

¡£ÃèÊöÎļþºÍÔ¿³×´®Ò»ÑùµÄÌí¼ÓÉÏ´«·½Ê½¡£Ìí¼Óºó¾Í¿ÉÒÔ¿´µ½ÃèÊöÎļþÐÅÏ¢ÁË¡£

ÉÏ´«ºóµã»÷ save °´Å¥±£´æ¾Í¿ÉÒÔÁË¡£

ËÄ¡¢´´½¨ÅäÖõ¥Ò»¹¤³ÌÈÎÎñ

xcodebuild + xcrunÃüÁî

XcodeÌṩÁËÒ»Ì×¹¹½¨´ò°üµÄÃüÁ¾ÍÊÇxcodebuildºÍxcrunÃüÁî¡£xcodebuild°ÑÎÒÃÇÖ¸¶¨µÄÈÎÎñ´ò°ü³É.appÎļþ£¬xcrun½«Ö¸¶¨µÄ.appÎļþת»»Îª¶ÔÓ¦µÄ.ipaÎļþ¡£

xcodebuild¹Ù·½Îĵµ ºÍxcrun¹Ù·½Îĵµ

½ÓÏÂÀ´´´½¨ÈÎÎñ£¬JenkinsÊ×Ò³µã»÷н¨¡£

Èç¹ûÎÒÃÇÒѾ­´´½¨ÁËÈÎÎñ£¬²¢ÇÒÆäËûÅäÖö¼Ò»Ñù¾Í¸Ä¸öÖ¤ÊéʲôµÄ£¬¿ÉÒÔÏ»¬¿´µ½¿ÉÒÔ¸´ÖÆÒ»·ÝÏÖÓеÄÈÎÎñ£¬ÊäÈëÃû×־ͿÉÒÔÑ¡Ôñ¡£

н¨ÈÎÎñ´ò¿ªºó£¬ÒòΪÎÒÃÇÊÇÓÃSVN¹ÜÀí´úÂ룬ËùÒÔÑ¡Subversion¡£

µã»÷addÌí¼ÓSVNµÄÕ˺źÍÃÜÂë¡£

Èç¹ûµØÖ·ºÍÕ˺ÅÃÜÂë¶¼¶Ô£¬ÊÇÕâÑùµÄ¡£

·¾¶²»¶Ô£¬»òÕ˺ÅÃÜÂë²»¶Ô¡£

ÓÐÁ½¸ö×Ô¶¯»¯µÄÅäÖñȽÏÖØÒª£º

Poll SCM (poll source code management) ÂÖѯԴÂë¹ÜÀí

ÐèÒªÉèÖÃÔ´ÂëµÄ·¾¶²ÅÄÜÆðµ½ÂÖѯµÄЧ¹û¡£Ò»°ãÉèÖÃΪÀàËÆ½á¹û£º 0/5 * * * * ÿ5·ÖÖÓÂÖѯһ´Î

Build periodically (¶¨Ê±build)

Ò»°ãÉèÖÃΪÀàËÆ£º 00 20 * * * ÿÌì 20µãÖ´Ðж¨Ê±build ¡£µ±È»Á½ÕßµÄÉèÖö¼ÊÇÒ»Ñù¿ÉÒÔͨÓõġ£

ÏêϸµÄ¿ÉÒԵ㿪½éÉܲ鿴¡£

È»ºóÑ¡Ôñ´ò°üÖ¤ÊéºÍÃèÊöÎļþ¡£

Ìí¼Ó½Å±¾

# ¹¤³ÌÃû
TARGET_NAME="VideoEditDemo"
# ÎļþÃûǰ׺
APP_NAME="ÊÓÆµ±à¼­"
# Ö¤Êé
CODE_SIGN_DISTRIBUTION="iPhone Distribution: Smao Tech Co.,LTD."
# info.plist·¾¶
project_infoplist_path="./${TARGET_NAME}/Info.plist"
#È¡°æ±¾ºÅ
bundleShortVersion=$(/usr/libexec/PlistBuddy -c "print CFBundleShortVersionString" "${project_infoplist_path}")
#ȡbuildֵ
bundleVersion=$(/usr/libexec/PlistBuddy -c "print CFBundleVersion" "${project_infoplist_path}")
DATE="$(date +%Y%m%d)"
IPANAME="${APP_NAME}_V${bundleShortVersion}_${DATE}.ipa"
#ÒªÉÏ´«µÄipaÎļþ·¾¶
IPA_PATH="$HOME/Desktop/MyWorkPlace/×Ô¶¯»¯´ò°üIPAs/${IPANAME}"
echo ${IPA_PATH}
echo "${IPA_PATH}">> text.txt
#ÏÂÃæ2ÐÐÊÇûÓÐCocopodsµÄÓ÷¨
echo "=================clean================="
xcodebuild -target "${TARGET_NAME}" -configuration 'Release' clean
echo "+++++++++++++++++build+++++++++++++++++"
xcodebuild -target "${TARGET_NAME}" -sdk iphoneos -configuration 'Release' CODE_SIGN_IDENTITY="${CODE_SIGN_DISTRIBUTION}" SYMROOT='$(PWD)'xcrun -sdk iphoneos PackageApplication "./Release-iphoneos/${TARGET_NAME}.app" -o ~/"Desktop/MyWorkPlace/×Ô¶¯»¯´ò°üIPAs/${IPANAME}"

ÒªÉÏ´«µÄipaÎļþ·¾¶ÊÇÎÒ´´½¨ÁËÒ»¸öÎļþ¼ÐרÃÅÓÃÀ´·Å×Ô¶¯´ò°üµÄ¡£

¹¹½¨Ò»´Î£¬¸÷¸öÑÕÉ«´ú±íµÄÒâÒåÈçÏ£º

ÌìÆøµÄÇçÓê±í´ú±íÁËÈÎÎñµÄÖÊÁ¿£¬ÕâÒ²ÊÇJenkinsµÄÒ»¸öÌØÉ«¡£

Èç¹û¹¹½¨Ê§°ÜÁË£¬¿ÉÒÔÈ¥²é¿´Console Output¿ÉÒԲ鿴logÈÕÖ¾¡£

µ½´Ë£¬Ò»¸öµ¥Ò»¹¤³ÌµÄ×Ô¶¯»¯´ò°ü¾ÍÅäÖúÃÁË¡£Õâʱ¿ÉÒÔµãÓ¦Óà ±£´æ £¬È»ºóµã»÷¹¹½¨£¬¹¹½¨³É¹¦ºó¿ÉÒԵ㿪´æ·ÅipaÎļþµÄÎļþ¼ÐÕÒµ½¶ÔÓ¦µÄipa°²×°°ü¡£

Îå¡¢ÅäÖÃcocoapodÈÎÎñ

ÕâÀïΪÁ˲»Öظ´£¬Ö»ËµÓëµ¥Ò»¹¤³Ì²»Í¬µÄµØ·½¡£cocoapodÐèÒªinstall°²×°ÒÀÀµµÄÈý·½¿â£¬ËùÒÔÕâÀïÐèÒªÔÚÔ­ÓеĹ¹½¨½Å±¾Ç°±ß¼ÓÒ»¸ö½Å±¾¡££¨cocoapod×Ô¶¯»¯´ò°üinstall°²×°Èý·½¿âËÙ¶ÈÌØ±ðÂý£¬»¹ÓпÉÄÜÖÐ;ÏÂÔØÊ±¼äÌ«³¤Ê§°Ü£¬ÖØÐµ㹹½¨ÔÙÊÔÒ»°ã¾ÍûÎÊÌâÁË£©

#bin/bsah - l
export LANG=en_US.UTF-8
export LANGUAGE=en_US.UTF-8
export LC_ALL=en_US.UTF-8
cd ¡¾ÄãµÄ¹¤³ÌĿ¼¡¿
/usr/local/bin/pod install --verbose --no-repo-update

µÚ¶þ¸ö½Å±¾Ò²ÐèÒªÓÐЩÐÞ¸Ä

# ¹¤³ÌÃû
TARGET_NAME="MeetingProject"
# ÎļþÃûǰ׺
APP_NAME="»áÎñ²úÆ·"
# Ö¤Êé
CODE_SIGN_DISTRIBUTION="iPhone Distribution: Smartdot Technologies Co.,LTD."
# info.plist·¾¶
project_infoplist_path="./${TARGET_NAME}/Info.plist"
#È¡°æ±¾ºÅ
bundleShortVersion=$(/usr/libexec/PlistBuddy -c "print CFBundleShortVersionString" "${project_infoplist_path}")
#ȡbuildֵ
bundleVersion=$(/usr/libexec/PlistBuddy -c "print CFBundleVersion" "${project_infoplist_path}")
DATE="$(date +%Y%m%d)"
IPANAME="${APP_NAME}_V${bundleShortVersion}_${DATE}.ipa"
#ÒªÉÏ´«µÄipaÎļþ·¾¶
IPA_PATH="$HOME/Desktop/MyWorkPlace/×Ô¶¯»¯´ò°üIPAs/${IPANAME}"
echo ${IPA_PATH}
echo "${IPA_PATH}">> text.txt#ÏÂÃæ2ÐÐÊǼ¯³ÉÓÐCocopodsµÄÓ÷¨
echo "=================clean================="
xcodebuild -workspace "${TARGET_NAME}.xcworkspace" -scheme "${TARGET_NAME}" -configuration 'Release' clean
echo "+++++++++++++++++build+++++++++++++++++"
xcodebuild -workspace "${TARGET_NAME}.xcworkspace" -scheme "${TARGET_NAME}" -sdk iphoneos -configuration 'Release' CODE_SIGN_IDENTITY="${CODE_SIGN_DISTRIBUTION}" SYMROOT='$(PWD)'
xcrun -sdk iphoneos PackageApplication "./Release-iphoneos/${TARGET_NAME}.app" -o ~/"Desktop/MyWorkPlace/×Ô¶¯»¯´ò°üIPAs/${IPANAME}"

´ËʱÄã¹¹½¨´ò°ü£¬Ó¦¸Ã»á±¨ÕâÑùµÄ´í

ÕâÊÇÒòΪJenkinsûÓа²×°cocoapod£¬´ò¿ªÓû§Æ«ºÃÉèÖà -> Óû§ÓëȺ×é¡£

Õý³£ÕâÀï²»»áÓÐJenkinsÕâ¸öÃû×Ö£¬³ý·ÇÄãÉèÖùý¡£ÕâÀïÊÇÎÒÒѾ­¸øJenkinsÉèÖùýÁË£¬ÓÒ¼üµã»÷¸ß¼¶Ñ¡Ï°ÑÃû×ÖдÉÏ¡£

ÎÒÃÇÐèÒª¸øJenkinsÒ»¸öÃÜÂ룬Èç¹û֮ǰûÉèÖùýÃÜÂ룬ÕâÀïÓ¦¸ÃÊǸü¸ÄÃÜÂ룬·ñÔòÊÇÖØÖÃÃÜÂë¡£

ΪÁË¿ÉÒÔ¿ìËÙÇл»µÇ¼Õ˺ţ¬ÎÒÃÇÐèÒªÕâÑùµÄ¹´Ñ¡¡£

È»ºó¿ÉÒÔÔÚÕâÀï¿ìËÙÇл»µÇ¼Óû§£¬½ÓÏÂÀ´¾Í¿ÉÒÔÇл»µÇ¼JenkinsÕ˺ţ¬°²×°cocoapod»·¾³ÁË£¬°²×°Íê³Éºó£¬cocoapod×Ô¶¯»¯´ò°ü¾ÍûʲôÎÊÌâÁË¡£

Áù¡¢ÅäÖòåÈëÎļþ´ò°üÈÎÎñ

Ìí¼ÓSVNµØÖ·£¬ÕâÀïÒòΪÎÒÃÇSVNÕâ¸öĿ¼ÏµÄÎļþ¾ÍΪWWW£¬ËùÒÔ¸´ÖƹýÀ´Ò²Òª½¨Á¢Ò»¸öwwwÎļþ¼Ð·ÅÕâЩÎļþ£¬·ñÔòÕâЩÎļþ¾ÍÖ±½Ó¸´ÖƵ½¹¤³ÌĿ¼һ¼¶Ä¿Â¼Ï·dz£É¢ÂÒ¡£

ÓвåÈëÎļþ£¬×ÔÈ»ÐèÒªÔÚ´ò°üµÄʱºò²åÈë½øÈ¥£¬ËùÒÔÎÒÃÇ»¹ÐèÒªÔÚ¹¹½¨µ¥Ò»¹¤³ÌµÄ½Å±¾Ç°¼ÓÒ»¶Î½Å±¾¡£

#!/bin/bash
# Copyright by Galen (2014-2014)
# All rights reserved
APP=`find -L . -name *.app -type d`
echo "will cp source file to:"$APP"..."
#exit 1
\cp -aR $WORKSPACE/www "$APP"
# ɾ³ýÒþ²ØÎļþ
for X in `find -L "$APP" -name *.svn*`
do
rm -rf "$X"
done

Æß¡¢ÉÏ´«ÆÑ¹«Ó¢Ó¦ÓùÜÀíÆ½Ì¨

ÎÒÃǼÈȻҪ×Ô¶¯»¯¾Í×Ô¶¯»¯µ½µ×£¬ËùÒÔÎÒÃÇ´ò³öÀ´µÄ°²×°°üÓ¦¸Ã×Ô¶¯ÉÏ´«µ½Ò»¸öÓ¦ÓùÜÀíÆ½Ì¨£¬ÕâÑù±ðÈ˾ͿÉÒÔÖ±½ÓÏÂÔØ²âÊÔ»òʹÓá£Ò»°ã³£ÓõÄÊÇÉÏ´«µ½ÆÑ¹«Ó¢Ó¦ÓùÜÀíÆ½Ì¨¡£

1.°²×°fir-clifirµÄÃüÁîÐй¤¾ß£¬ÐèÒªÏÈ×°ºÃrubyÔÙÖ´ÐÐ

gem install fir-cli

2.×Ô¶¯ÉÏ´«ÖÁÆÑ¹«Ó¢

#ÆÑ¹«Ó¢ÉϵÄUser Key
uKey="9dba14768e*****8e7a606ea31e04"
#ÆÑ¹«Ó¢ÉϵÄAPI Key
apiKey="88127f49b2******e9536babe6920c10"
#ÒªÉÏ´«µÄipaÎļþ·¾¶
#ÒªÉÏ´«µÄipaÎļþ·¾¶
IPA_PATH=$(cat text.txt)
rm -rf text.txt
#Ö´ÐÐÉÏ´«ÖÁÆÑ¹«Ó¢µÄÃüÁî
echo "++++++++++++++ÉÏ´«ÆÑ¹«Ó¢ ÉÏ´«ÖÐ +++++++++++++"
curl -F "file=@${IPA_PATH}" -F "uKey=${uKey}" -F "_api_key=${apiKey}" http://www.pgyer.com/apiv1/app/upload

°Ë¡¢¹ý³ÌÖÐһЩ¿ÓºÍС¼¼ÇÉ

1.Jenkins¹¤×÷Ŀ¼²»ÔÚµ±Ç°µÇ¼Óû§ÏµÄȨÏÞÎÊÌâ

Õâ¸öÎÊÌâÔÚ×ʼ¾Í˵ÁË£¬ÕâÀïµÄ±¨´íÖ»ÊÇÆäÖеĸö±ð£¬»¹ÓÐÆäËûÌáʾµÄȨÏÞÎÊÌâ»ù±¾¶¼ÊÇJenkins¹¤×÷Ŀ¼ÒýÆðµÄȨÏÞÎÊÌâ¡£µ±È»£¬Äã¿ÉÒԵ㿪¶ÔÓ¦µÄ·¾¶ÏµÄÎļþ½øÐÐÊÚȨ£¬µ«ÊÇÕâÒâζ×Å·¾¶ÉϵÄÿһ¸öÎļþ¶¼ÐèÒªÕâÑùµÄÊÚȨ´¦Àí£¬²¢ÇÒ±¨Ò»´Î´í¾ÍµÃÀ´ÕâôһÂÖ£¬ÎÒÃDz»¿ÉÄÜÕâô²Ù×÷¡£

ËùÒÔ¹¤×÷Ŀ¼µÄÎÊÌâÆäʵºÜÖØÒª¡£

±¨´í£º

Command /usr/bin/codesign failed with exit code 1 ** ARCHIVE FAILED **

2.xcrun: error: unable to find utility "PackageApplication", not a developer tool or in PATH

½â¾ö°ì·¨

3.unknown error -1=ffffffffffffffff Command /bin/sh failed with exit code 1

Õâ¸ö´íµÄÎÊÌâ¿ÉÄÜÓкܶàÖÖ£¬ÕâÀïÓм¸ÖÖÔ­ÒòºÍ´¦Àí·½Ê½£º

 

Ô­Òò1

Ô­Òò2

4.error: exportArchive: "AppName.app" requires a provisioning profile with the Push Notifications and App Groups features.

Error Domain=IDEProvisioningErrorDomain Code=9

"AppName.app" requires a provisioning profile with the Push Notifications and App Groups features." UserInfo={NSLocalizedDescription="AppName.app" requires a provisioning profile with the Push Notifications and App Groups features., NSLocalizedRecoverySuggestion=Add a profile to the "provisioningProfiles" dictionary in your Export Options property list.}

// »ò

"Error Domain=IDEProvisioningErrorDomain Code=9 ""ios-simple-objc.app" requires a provisioning profile."

UserInfo={NSLocalizedDescription="ios-simple-objc.app" requires a provisioning profile., NSLocalizedRecoverySuggestion=Add a profile to the "provisioningProfiles" dictionary in your Export Options property list.}"

½â¾ö·½Ê½

²»¹ý±ÊÕßĿǰµÄXcode9.2ûÓÐÓöµ½Õâ¸öÌáʾ£¬ÊÇ֮ǰJenkins¹¤×÷Ŀ¼²»¶ÔµÄʱºòµ÷ÊÔ³öÏÖ¹ý£¬Óýű¾Ìí¼ÓExportOptions.plistÎļþÒ²²»ºÃʹ£¬Èç¹ûÓÐÀàËÆµÄÎÊÌâ´ó¼Ò»¹ÊǰٶȲ¢³¢ÊÔ°É¡£

4.Ð޸Ķ˿Ú

Èç¹ûÒªÐ޸Ķ˿ڣ¬±ÈÈç7070£¬¿ÉÔÚÖØÆôjenkinsǰִÐÐÒÔÏÂÃüÁîÐ޸Ķ˿ڲÎÊý:

sudo defaults write /Library/Preferences/org.jenkins-ci httpPort 7070

È»ºóÖØÆôjenkins:

sudo launchctl unload -w /Library/LaunchDaemons/org.jenkins-ci.plist

sudo launchctl load -w /Library/LaunchDaemons/org.jenkins-ci.plist

µ½´Ë£¬¿ÉÒÔ·ÃÎÊhttp://localhost:7070ÁË¡£

5.MacÐ¶ÔØJenkins

//½øÈëÒÔÏÂĿ¼£¬Ë«»÷ÔËÐÐ
/Library/Application Support/Jenkins/Uninstall.command
//Ò²¿ÉÒÔÕâÑùÔËÐÐ
sh "/Library/Application Support/Jenkins/Uninstall.command"
//ɾ³ýÅäÖã¬Õâ¸ö¿ÉÑ¡
sudo rm -rf /var/root/.jenkins ~/.jenkins
sudo launchctl unload /Library/LaunchDaemons/org.jenkins-ci.plist
sudo rm /Library/LaunchDaemons/org.jenkins-ci.plist
sudo rm -rf /Applications/Jenkins "/Library/Application Support/Jenkins" /Library/Documentation/Jenkins
sudo rm -rf /Users/Shared/Jenkins
sudo dscl . -delete /Users/jenkins
sudo dscl . -delete /Groups/jenkins
sudo rm -f /etc/newsyslog.d/jenkins.conf
pkgutil --pkgs | grep 'org\.jenkins-ci\.' | xargs -n 1 sudo pkgutil --forget
//Èç¹ûʹÓÃbrew°²×°µÄ£¬¿ÉÒÔÖ´ÐÐÒÔÏÂÃüÁî
brew uninstall jenkins

   
6280 ´Îä¯ÀÀ       28
Ïà¹ØÎÄÕÂ

ΪʲôҪ×ö³ÖÐø²¿Êð£¿
ÆÊÎö¡°³ÖÐø½»¸¶¡±£ºÎå¸öºËÐÄʵ¼ù
¼¯³ÉÓë¹¹½¨Ö¸ÄÏ
³ÖÐø¼¯³É¹¤¾ßµÄÑ¡Ôñ-×°ÔØ
Ïà¹ØÎĵµ

³ÖÐø¼¯³É½éÉÜ
ʹÓÃHudson³ÖÐø¼¯³É
³ÖÐø¼¯³ÉÖ®-ÒÀÀµ¹ÜÀí
IPD¼¯³É²úÆ·¿ª·¢¹ÜÀí
Ïà¹Ø¿Î³Ì

ÅäÖùÜÀí¡¢ÈÕ¹¹½¨Óë³ÖÐø¼¯³É
Èí¼þ¼Ü¹¹Éè¼Æ·½·¨¡¢°¸ÀýÓëʵ¼ù
µ¥Ôª²âÊÔ¡¢Öع¹¼°³ÖÐø¼¯³É
»ùÓÚAndroidµÄµ¥Ôª¡¢ÐÔÄܲâÊÔ