दिलचस्प पोस्ट
Android के लिए Google डिस्क \ डॉक्स एपीआई सक्रिय मार्ग को पुनः लोड / रीफ़्रेश नहीं किया जा सकता परिपत्र typedef निर्भरता को हल? पेंट, पेंट कम्पेनेन्ट और पेंट के बीच अंतर स्विंग एसक्यूएल – अधिकतम मूल्य वाले कॉलम वाले एक पंक्ति का चयन कैसे करें MySQL डाटाबेस के साथ पायथन 3.4.0 मैडपर के काउंटर को रीड्यूसर से एक्सेस करना सी / सी ++ में हेक्स, बाइनरी, और डेसिमल के बीच कुशलता से कनवर्ट करें Node.js में मूलभूत HTML लोड करना क्या मैं जावा में कन्स्ट्रक्टर में तरीकों को कॉल कर सकता हूं? "ढूंढें: पथों को अभिव्यक्ति से पहले होना चाहिए:" मैं रिकर्सिव खोज को कैसे निर्दिष्ट करता हूं जो वर्तमान निर्देशिका में फ़ाइलों को पाता है? जावा एनआईओ फ़ाइलचैनल बनाम फाइलऑप्टस्ट्रस्ट प्रदर्शन / उपयोगिता उद्देश्य-सी श्रेणी अपरिचित चयनकर्ता के कारण हो सकता है लूपर का उद्देश्य क्या है और उसका उपयोग कैसे करना है? इंटरनेट एक्सप्लोरर ब्राउज़र के लिए JavaScript में ऐरे सूचकांक () को ठीक कैसे करें

आईकंस और मैक विकास के लिए सतत एकीकरण के रूप में जेनकिंस / हडसन का उपयोग करते समय चाबी का गुच्छा में प्रमाण पत्र और कुंजियाँ गुम हैं

मैं आईएसओ के लिए हडसन सीआई को बेहतर बनाने की कोशिश कर रहा हूं और जल्द ही प्रणाली शुरू होने के बाद हडसन शुरू करूँगा ऐसा करने के लिए मैं निम्नलिखित लॉन्च स्क्रिप्ट का उपयोग कर रहा हूं:

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>Hudson CI</string> <key>ProgramArguments</key> <array> <string>/usr/bin/java</string> <string>-jar</string> <string>/Users/user/Hudson/hudson.war</string> </array> <key>RunAtLoad</key> <true/> <key>UserName</key> <string>user</string> </dict> </plist> 

यह ठीक काम करता है, लेकिन जब Xcodebuild, जो हडसन द्वारा शुरू किया गया है, एक ऐप पर हस्ताक्षर करने का प्रयास करता है क्योंकि यह चाबी का गुच्छा में उचित कुंजी / प्रमाण पत्र नहीं ढूँढ सकता हालांकि कुंजी / प्रमाण पत्र जोड़ी है क्योंकि यह कमांड लाइन से हडसन को शुरू करने के बाद यह सही काम कर रहा है।

क्या आपके पास कोई विचार है कि ऐसा क्यों होता है?

Solutions Collecting From Web of "आईकंस और मैक विकास के लिए सतत एकीकरण के रूप में जेनकिंस / हडसन का उपयोग करते समय चाबी का गुच्छा में प्रमाण पत्र और कुंजियाँ गुम हैं"

इस मुद्दे के साथ घंटे और दिन बिताने के बाद मुझे इस का एक बहुत आसान समाधान मिला इसके बारे में कोई फर्क नहीं पड़ता है कि आपके लॉन्च कन्फिगरेशन में उपरोक्त के रूप में आपके पास एक विशिष्ट यूज़रनेम है:

 <key>UserName</key> <string>user</string> 

अनुपलब्ध प्रमाण पत्र और कुंजी को सिस्टम कीचेन पर रखना होगा ( /Library/Keychains/System.keychain )। मैंने इसे जेनकिंस नौकरी की स्थापना के बाद पाया जो कई security शेल कॉलों को कार्यान्वित करता है। जो दिलचस्प है वह security list-keychains :

 + security list-keychains "/Library/Keychains/System.keychain" "/Library/Keychains/applepushserviced.keychain" "/Library/Keychains/System.keychain" 

यही कुंजीचेन्स जेनकिन्स सर्टिफिकेट और चाबियाँ खोजेंगी ताकि वे वहां हों। जब मैंने मेरी सिटर्स ले लीं, तो यह काम करता है। सुनिश्चित करें कि आप 'एप्पल वर्ल्डवाइड डेवलपर रिलेशंस सर्टिफिकेशन अथॉरिटी «सिस्टम कीचेन में प्रमाणपत्र भी कॉपी करते हैं, अन्यथा आप CSSMERR_TP_NOT_TRUSTED से एक CSSMERR_TP_NOT_TRUSTED त्रुटि देखेंगे।

security list-keychains -s [path to additional keychains] साथ अधिक कुंजीचेनों को पंजीकृत करना भी संभव security list-keychains -s [path to additional keychains] मैंने इसे करने की कोशिश नहीं की है लेकिन security list-keychains -s $HOME/Library/Keychains/login.keychain जैसे security list-keychains -s $HOME/Library/Keychains/login.keychain में प्री-बिल्ड शेल निष्पादन के रूप में काम कर सकते हैं

संपादित करें: -s साथ खोज पथ में यूज़र चाइचेन जोड़ने की कोशिश की है लेकिन मैं इसे काम करने में सक्षम नहीं था तो अब के लिए, हमें सिस्टम केचेन में हमारी सीट्स और चाबियाँ कॉपी करना होगा।

संपादित करें ^ 2: मेरी बजाय joensson ' समाधान पढ़ें और उसका उपयोग करें, उसने उपयोगकर्ताओं की चाइचेन को सिर्फ सिस्टम कुंजीचेन के बजाय एक्सेस करने में कामयाबी हासिल की थी

मुझे एक समाधान मिला है जो मुझे अपने जेनकिन्स उपयोगकर्ता के लिए नियमित कुंजीचेनों तक पहुंच प्रदान करता है।

स्वीकार किए जाते हैं उत्तर के रूप में plist में उपयोगकर्ता नाम तत्व को निर्दिष्ट करने के अतिरिक्त, यूज़रनेम में निर्दिष्ट यूजरनाम के लिए सामान्य कुंजीचेन्स तक पहुंच प्राप्त करने के लिए चालान भी plist फ़ाइल – / लाइब्रेरी / फाइल के लिए सही मान वाला एक सत्र क्रिएट तत्व जोड़ना है। LaunchDaemons / org.jenkins-ci.plist:

 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>EnvironmentVariables</key> <dict> <key>JENKINS_HOME</key> <string>/Users/Shared/Jenkins/Home</string> </dict> <key>GroupName</key> <string>wheel</string> <key>KeepAlive</key> <true/> <key>Label</key> <string>org.jenkins-ci</string> <key>ProgramArguments</key> <array> <string>/bin/bash</string> <string>/Library/Application Support/Jenkins/jenkins-runner.sh</string> </array> <key>RunAtLoad</key> <true/> <key>UserName</key> <string>jenkins</string> <key>SessionCreate</key> <true /> </dict> 

फिर डेमॉन को पुनरारंभ करें और जेनकिंस में एक नौकरी चलाने का प्रयास करें जो कि सुरक्षा सूची-कुंजीचेन्स को कॉल करता है – और अब आपको केवल सिस्टम के रूप में सिस्टम। कुंजीचयन दिखाई नहीं देनी चाहिए, लेकिन नियमित लॉगिन और किसी कस्टम कुंजी श्रृंखला जिसे आपने कुंजीचनेस की सूची में जोड़ा हो "जेनकिंस" उपयोगकर्ता

मैं अब अपने जेनकिंस बिल्ड सर्वर पर एक कस्टम कुंजीचेन से प्रमाणपत्रों को कोडनिंग का उपयोग कर रहा हूं – मैंने अपने सिस्टम कीचैन में कोई प्रमाणपत्र या कुंजी स्थापित नहीं की है

हमारे पास हडसन दास के साथ एक ही समस्या थी, जो मैक ओएसएक्स शेर पर प्रक्षेपण के रूप में शुरू हुई थी। यह काम किया, जब हमने वेबस्टार्ट के साथ दास को शुरू किया। हमने जो अंतर देखा वह एक अलग वातावरण चर था।

 com.apple.java.jvmTask=WebStart 

काम करता है, अगर हम वेबस्टार्ट बिना दास को शुरू करते हैं तो चर था

 com.apple.java.jvmTask=CommandLine.java 

हमें मूल्य अपफ्रंट को प्रभावित करने का कोई रास्ता नहीं मिला। मैं सुझाव देता हूं कि आप हडसन में एक नया नोड बनाते हैं, उसी मशीन पर चल रहे हैं और वेबस्टार्ट द्वारा शुरू किया गया है। गुलाम को शुरू करने के लिए हम निम्नलिखित launchdaemon कॉन्फ़िगरेशन का उपयोग करते हैं:

 <?xml version"1.0" encoding="UTF-8"?> <plist version="1.0"> <dict> <key>Label</key> <string>jenkins</string> <key>UserName</key> <string>apple</string> <key>Program</key> <string>/usr/bin/javaws</string> <key>ProgramArguments</key> <array> <string>-verbose</string> <string>-wait</string> <string>http://<hudson-hostname>:8080/computer/<node-name>/slave-agent.jnlp</string> </array> <key>RunAtLoad</key> <true/> <key>KeepAlive</key> <true/> <key>WorkingDirectory</key> <string>/Users/apple</string> </dict> </plist> 

हमने शेर और साथ ही स्नोलीपर्ड पर एक ही मुद्दे का सामना किया। हमें सेवा के रूप में एक्सकोडबिल्ड जॉब्स के साथ टोमकैट / हडसन शुरू करना पड़ा। कमांड लाइन से शुरू करते समय, xcodebuild प्रवेश युक्त प्रमाणपत्र का उपयोग करने के लिए login.keychain तक पहुंच सकता है। लेकिन बॉक्स के रिबूट के बाद, login.keychain xcodebuild को दिखाई नहीं दे रहा था और इसलिए हस्ताक्षर विफल रहे।

चूंकि हमें एक चाबी का गुच्छा द्वारा हमारी कंपनी के प्रमाण पत्र प्रदान करने की आवश्यकता थी, इसलिए सिस्टम कीचेन एक विकल्प नहीं था। इसके बजाय, हम एक साधारण समाधान द्वारा इस समस्या का समाधान किया। हमने उपयोगकर्ता नाम हटा दिया है, ताकि लॉन्च डेमॉन रूट के तहत प्रक्रिया को लॉन्च करता है।

 <plist version="1.0"> <dict> <key>Label</key> <string>${LAUNCH_LABEL}</string> <key>Disabled</key> <false/> <key>RunAtLoad</key> <true/> <key>ProgramArguments</key> <array> <string>${INSTALL_DIR}/start.sh</string> </array> <key>StandardOutPath</key> <string>${INSTALL_DIR}/tomcat-stdout.log</string> <key>StandardErrorPath</key> <string>${INSTALL_DIR}/tomcat-stderr.log</string> </dict> </plist> 

लॉन्च डेमॉन ने एक सरल स्क्रिप्ट ( start.sh ) को बुलाया, एक पूरा लॉगिन सिमुलेशन और इच्छित प्रोग्राम को चलाने के लिए

 su -l username -c program 

अब, बूट करने के बाद भी, xcodebuild लॉगिन का उपयोग कर सकता है। यह हिम तेंदुए पर भी काम करता है, लेकिन, यदि आप उपयोगकर्ता के विशिष्ट लॉगिन को बंद करते हैं, तो एक समानांतर सत्र में (जैसे वीएनसी लॉगिन / लॉगआउट) चाबी का गुच्छा खो जाता है। शेर अलग-अलग व्यवहार करता है लगता है कि शेर उपयोगकर्ता से चाबी का गुच्छा खोदता है और उसे एक प्रवेश-सत्र के लिए आवंटित करता है।

जेनकिंस / हडसन के लिए एक कंपार्टाइज्ड चाइचेन रखने के लिए, मैं लॉन्चैटएल आइटम को से ले जाया गया

 /Library/LaunchDaemons/org.jenkins-ci.plist 

सेवा मेरे

 /Users/Shared/Jenkins/Home/Library/LaunchAgents/org.jenkins-ci.plist 

और यह मुझे जेनकिंस के लिए बनाई गई निजी चाइचेन तक पहुंचने की अनुमति देता है

आप जेनकींस को चलाने का एक वैकल्पिक तरीका, मेरी जेनकिंस.एप, https://github.com/stisti/jenkins-app , कोशिश कर सकते हैं। यह जेनकिंस को उपयोगकर्ता सत्र में चलाता है, इसलिए चाबी का चक्की पहुंच कोई समस्या नहीं है।

मुझे एक ही समस्या का सामना करना पड़ा, और अन्य पदों में से किसी एक में वर्णित के रूप में / लायब्रेरी / लाँच डेमनों /org.jenkins-ci.plist में उपयोगकर्ता नाम बदलने की कोशिश की। हालांकि, यह अभी भी काम नहीं करता है, और कुछ अस्पष्ट NullPointerException ने मुझे समस्या की पहचान करने में मदद नहीं की। इसलिए, मैं सिर्फ अपना समाधान साझा करता हूं: मुझे जेन्किन्स_एचओएमईई डायरेक्टरी के मालिक को भी बदलना पड़ता था (जैसे org.jenkins-ci.plist में भी परिभाषित):

 chown -R myBuildUser /Users/Shared/Jenkins 

myBuildUser उपयोगकर्ता है जो प्रमाण पत्र स्थापित किया है, और यह वह उपयोगकर्ता है जिसे मैं plist फ़ाइल में निर्दिष्ट किया है।

यह समाधान काफी स्पष्ट था जब मुझे आखिरकार समझ गया – लेकिन इसके बारे में जानने के लिए मुझे कुछ घंटे लग गए, इसलिए उम्मीद है कि यह पोस्ट किसी और के लिए समय बचा सकता है 🙂

सत्र जोड़ना और चाइचेन मैनेजर में 'हमेशा विश्वास' के लिए कई प्रमाणपत्रों को सेट करना मेरे लिए काम किया था, जिससे बिल्डबॉट प्लास्ट से शुरू हुआ … लेकिन कुछ बिंदु पर, कोडिंग CSSMERR_TP_NOT_TRUSTED के साथ विफल हो जाना शुरू कर दिया। मैं चाइचेन मैनेजर में आईफोन डिस्ट्रीब्यूशन सर्ट को 'सिस्टम डिफॉल्ट का उपयोग' करने के लिए सेट करके पुनर्प्राप्त किया रिबूट के बाद भी प्रवेश किए बिना, बिल्डबॉट दास तब कोड पर हस्ताक्षर करने में सक्षम था, फिर भी।