2014-11-13 11 views
10

से एक्सकोड सर्वर 4.0 गिट पुश मैंने जिथब पर होस्ट की गई एक परियोजना के लिए एक एक्सकोड बॉट स्थापित किया। मैंने अपनी मौजूदा एसएसएच कुंजी का उपयोग करने के लिए चरणों और सेटअप बॉट का पालन किया। सत्यापन सफल होता है और प्रोजेक्ट चेकआउट और बिल्ड करेगा।बिल्ड ट्रिगर स्क्रिप्ट

मैंने फिर प्री-ट्रिगर एक्शन में एक शेल स्क्रिप्ट जोड़ा जो प्लेस्ट में संस्करण को बढ़ाता है, इसे टैग करता है, और जो कि गिटूब में बदल जाता है।

हालांकि जब मैं खोल स्क्रिप्ट से एक Git धक्का करने की कोशिश मैं इस मिल:

- [email protected] को धक्का: Spex एप्लिकेशन के अंतर्गत/Spex-ios.git अनुमति अस्वीकृत (publickey)।

घातक: रिमोट रिपोजिटरी से नहीं पढ़ा जा सका।


सर्वर सफलतापूर्वक मेरे प्रोजेक्ट की जांच क्यों करेगा लेकिन परिवर्तनों को धक्का नहीं दे पाएगा। मुझे लगता है कि उपयोगकर्ता _xcsbuildd है। मैंने .ssh कुंजी को उस /var/_xcsbuildd/.ssh में कॉपी करने का प्रयास किया और यह भी काम नहीं करता है।

+0

क्या आप कृपया स्क्रिप्ट साझा कर सकते हैं जो आप वृद्धि निर्माण संख्या के लिए उपयोग करते हैं और गिट को दबाते हैं? ! –

+1

'#/के लिए बिन/एस # राजस्व गिनती के रूप में मामूली संस्करण करता है (। उदाहरण के लिए 1.0.0 ) buildNumber = $ (Git रेव-सूची प्रमुख | WC -l | टीआर -d '') गूंज "बिल्ड नंबर: $ buildNumber" /usr/libexec/plistBuddy -c "सेट: CFBundleVersion $ buildNumber" "MyProject/MyProject।प्लेस्ट " गिट टैग -ए" $ buildNumber "-m" $ buildNumber " गिट पुश - टैग्स – dmclean

+0

उपर्युक्त स्क्रिप्ट रेपो से पुन: प्रतिबद्धता के साथ मामूली संस्करण को टैग करती है। – dmclean

उत्तर

6

मैंने इसे समझ लिया। आपको _xcsbuildd उपयोगकर्ता के लिए नई कुंजी बनाने की आवश्यकता है। फिर उन्हें जिथब में जोड़ें। इस सूत्र के नीचे: https://devforums.apple.com/message/1054122#1054122

sudo -u _xcsbuildd /bin/bash 
ssh-keygen -t rsa -C "[email protected]" 
ssh -T [email protected] 
6

अन्य उत्तर मैं वेब भर में पाया का एक बहुत में ले रहा है (और इस प्रश्न पर), मैं Xcode 6. पहले में इस काम करने के लिए, चीजें करते चरणों है क्या कहा dmclean (एक जोड़े में परिवर्तन के साथ) अपने निर्माण सर्वर पर ऊपर:

sudo -u _xcsbuildd /bin/bash 
ssh-keygen -t rsa -b 4096 -C "[email protected]" (when asked for a keyphrase, just hit return) 
ssh -vT [email protected] (this will show you debugging output - you should not have to enter a keyphrase and it should successfully get to git) 

अब, आप अपने Git खाते में यह नई सार्वजनिक कुंजी सेट करना होगा। इन चरणों का पालन करें: (चरण 4) https://help.github.com/articles/generating-ssh-keys/

मुझे लगता है कि आपके पास अपनी परियोजना के लिए एक बिल्ड स्क्रिप्ट है। हमारे प्रोजेक्ट में एक शेयर एक्सटेंशन और वॉच एक्सटेंशन है। मैं चाहता था कि निर्माण संख्या प्रत्येक में वृद्धि करे (और प्रत्येक में समान हो)। हमारे बिल्ड नंबर प्रारूप A.B.C.D (Major.Minor.Patch.build) में हैं। यह "रन स्क्रिप्ट" मुख्य परियोजना के "बिल्ड चरण" में है।

#!/bin/sh 
# Auto Increment Version Script 
# set CFBundleVersion to 1.0.0.1 first!!! 
# the perl regex splits out the last part of a build number (ie: 1.1.1.1) and increments it by one 
# if you have a build number that is more than 4 components, add a '\d+\.' into the first part of the regex. If you have less remove one 
buildPlist=${INFOPLIST_FILE} 
newVersion=`/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$buildPlist" | /usr/bin/perl -pe 's/(\d+\.\d+\.\d+\.)(\d+)/$1.($2+1)/eg'` 
echo $newVersion; 
/usr/libexec/PListBuddy -c "Set :CFBundleVersion $newVersion" "$buildPlist" 
/usr/libexec/PListBuddy -c "Set :CFBundleVersion $newVersion" "$SRCROOT/${PRODUCT_NAME} Extension/Info.plist" 
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $newVersion" "$SRCROOT/${PRODUCT_NAME} WatchKit Extension/Info.plist" 
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $newVersion" "$SRCROOT/${PRODUCT_NAME} WatchKit App/Info.plist" 
echo "Trying Git Config" 
git config user.email "[email protected]" 
git config user.name "XCode Build Server" 
echo "Trying Git Commit" 
git commit -a -m "Updated Build Numbers" 
echo "Trying Git Push" 
git push 

यह काम नहीं करता है, तो (एकीकरण के तहत) बिल्ड लॉग इन उत्पादन पर एक नज़र डालें: यहाँ हमारे स्क्रिप्ट है।

Some of the problems I encountered: 

के बाद से _xcsbuildd वास्तव में एक $ HOME मैं Git कॉन्फ़िगरेशन करना था नहीं है, अन्यथा मैं त्रुटियों जहां Git नहीं पता था कि मैं कौन था (पहचान त्रुटियों) हो रही थी। अगर मैंने आरएसए कुंजी में एक कीफ्रेज डाला है, तो उसने मुझे धक्का देने की कोशिश करते समय सार्वजनिक कुंजी त्रुटियां दीं (मुझे काम करने के लिए कुंजीफ्रेज़ निकालने के लिए थोड़ा सा पता चला)।

मुझे आशा है कि इससे किसी की मदद मिलेगी।

+0

मुझे भी समस्याएं थीं और यदि आप मैन्युअल रूप से बिल्ड सर्वर में निर्देशिका पर जाएं, आप सभी आदेशों को आज़मा सकते हैं। मुझे कॉन्फ़िगरेशन फ़ाइल में push.default व्यवहार को भी कॉन्फ़िगर करना पड़ा, मैं वैश्विक रूप से कॉन्फ़िगरेशन फ़ाइल को "git config --global push.default सरल" "सर्वर की कमांड लाइन पर या आप स्क्रिप्ट में बिना --global विकल्प – Maria

+0

के बिना कर सकते हैं मुझे भी उसी रेकोड को उसी एक्सकोड सर्वर बॉट उपयोगकर्ता के साथ क्लोन करना होगा और एसएसएच कुंजी का उपयोग करना होगा और एक नया बॉट बनाना होगा ताकि यह इनका उपयोग करे विशिष्ट प्रमाण पत्र। – Maria

संबंधित मुद्दे