ओएस एक्स पर जेनकिंस: xcodebuild कोड साइन त्रुटि देता है


107

सारांश:

ओएस एक्स पर जेनकिन्स स्थापित करना सबसे हालिया इंस्टॉलर ( 1.449 - 9 मार्च, 2012 तक ) के साथ काफी आसान बना दिया गया है , हालांकि कोड हस्ताक्षर की प्रक्रिया का प्रबंधन करना अभी भी बिना किसी सीधे जवाब के बहुत मुश्किल है।

प्रेरणा:

एक हेडलेस सीआई सर्वर चलाएं जो ओएस एक्स पर चलने वाली सेवाओं के लिए सामान्य सर्वोत्तम प्रथाओं का पालन करता है ( जिनमें से कुछ को यहां स्पष्ट भाषा में समझाया गया है )।

पृष्ठभूमि:

प्रक्रिया:

ओएस एक्स इंस्टॉलर पैकेज के माध्यम से जेनकिंस सीआई स्थापित करें । "इंस्टॉलेशन टाइप" स्टेप के लिए, कस्टमाइज़ बटन पर क्लिक करें, और "स्टार्ट पर बूट को 'जेनकींस' के रूप में चुनें।

चर्चा:

इस बिंदु पर भोली उम्मीद यह थी कि बिल्ड स्क्रिप्ट के साथ एक फ्री-स्टाइल प्रोजेक्ट xcodebuild -target MyTarget -sdk iphoneosकाम करना चाहिए। जैसा कि इस पोस्ट के शीर्षक से संकेत मिलता है, यह नहीं होता है:

Code Sign error: The identity 'iPhone Developer' doesn't match any valid certificate/private key pair in the default keychain

यह स्पष्ट रूप से पर्याप्त है कि क्या होने की आवश्यकता है - आपको एक मान्य कोड हस्ताक्षर प्रमाणपत्र और एक निजी कुंजी को डिफ़ॉल्ट किचेन में जोड़ना होगा। इसे पूरा करने के तरीके पर शोध करने में, मुझे ऐसा समाधान नहीं मिला है जो सिस्टम को किसी स्तर पर भेद्यता के लिए नहीं खोलता है।

समस्या 1: जेनकींस डेमॉन के लिए कोई डिफ़ॉल्ट चाबी का गुच्छा नहीं है

sudo -u jenkins security default-keychain ... पैदावार "एक डिफ़ॉल्ट चाबी का गुच्छा नहीं मिल सका"

जैसा कि Ivo Dancet द्वारा नीचे बताया गया है , UserShell डिफ़ॉल्ट रूप से जेनकींस डेमन के लिए / usr / bin / false पर सेट है (मुझे लगता है कि यह एक विशेषता है, बग नहीं); उपयोगकर्ता के उत्तर को बश में बदलने के लिए उसके उत्तर का पालन करें। फिर आप sudo su jenkinsजेन्किन्स उपयोगकर्ता के रूप में लॉग इन करने और बैश प्रॉम्प्ट प्राप्त करने के लिए उपयोग कर सकते हैं ।

  1. sudo su jenkins
  2. cd ~/Library
  3. mkdir Keychains
  4. cd Keychains
  5. security create-keychain <keychain-name>.keychain
  6. security default-keychain -s <keychain-name>.keychain

ठीक है बढ़िया। हमें अब एक डिफ़ॉल्ट चाबी का गुच्छा मिल गया है; चलो सही है? लेकिन, पहले हमने डिफॉल्ट किचेन बनाने की जहमत क्यों उठाई?

लगभग सभी जवाब, सुझाव, या वार्तालाप जो मैंने पूरे शोध में पढ़े हैं, उनका सुझाव है कि किसी को सिस्टम कोडैकिन में अपने कोड हस्ताक्षर करने वाले कुंजी और कुंजी को चक देना चाहिए। यदि आप security list-keychainsजेनकिंस में एक फ्री-स्टाइल प्रोजेक्ट के रूप में चलते हैं , तो आप देखते हैं कि उपलब्ध एकमात्र चाबी का गुच्छा सिस्टम कीचेन है; मुझे लगता है कि जहां ज्यादातर लोग अपने प्रमाण पत्र और चाबी को रखने के विचार के साथ आए थे। लेकिन, यह सिर्फ एक बहुत बुरा विचार है - विशेष रूप से यह देखते हुए कि आपको किचेन खोलने के लिए पासवर्ड के साथ एक सादा पाठ स्क्रिप्ट बनाने की आवश्यकता होगी

समस्या 2: कोड हस्ताक्षर करने वाले समारोहों और निजी कुंजी को जोड़ना

यह वह जगह है जहाँ मैं वास्तव में स्क्वीज़ होना शुरू करता हूँ। मुझे इस बात का अहसास है कि मुझे जेनकिंस के साथ प्रयोग के लिए एक नई सार्वजनिक / निजी कुंजी का निर्माण करना चाहिए। मेरी विचार प्रक्रिया यह है कि अगर जेनकिन्स डेमॉन से छेड़छाड़ की जाती है, तो मैं आसानी से एप्पल के प्रोविजनिंग पोर्टल में प्रमाण पत्र को रद्द कर सकता हूं और एक अन्य सार्वजनिक / निजी कुंजी उत्पन्न कर सकता हूं। यदि मैं अपने उपयोगकर्ता खाते और जेनकिंस के लिए एक ही कुंजी और प्रमाण पत्र का उपयोग करता हूं, तो इसका मतलब है कि अगर जेनकिंस सेवा पर हमला किया जाता है तो अधिक परेशानी (क्षति?) होती है।

सिमोन अर्बनक के उत्तर की ओर इशारा करते हुए आप एक टेक्स्ट से एक सादे पाठ पासवर्ड के साथ चाबी का गुच्छा अनलॉक करेंगे। जेनकींस डेमन के किचेन में कुछ भी "लेकिन डिस्पोजेबल" सर्टिफिकेट और चाबी रखना गैर-जिम्मेदाराना लगता है।

मुझे इसके विपरीत किसी भी चर्चा में बहुत दिलचस्पी है। क्या मैं अत्यधिक सतर्क हूँ?

टर्मिनल में जेनकींस डेमन के रूप में एक नया सीएसआर बनाने के लिए मैंने निम्नलिखित कार्य किया ...

  1. sudo su jenkins
  2. certtool r CertificateSigningRequest.certSigningRequest आपको निम्नलिखित के लिए संकेत दिया जाएगा (इनमें से अधिकांश मैंने सही उत्तर पर शिक्षित अनुमान लगाए हैं; क्या आपके पास बेहतर जानकारी है? कृपया साझा करें ... ...
    • कुंजी और प्रमाणपत्र लेबल दर्ज करें:
    • एल्गोरिथ्म का चयन करें: r(RSA के लिए)
    • बिट्स में मुख्य आकार दर्ज करें: 2048
    • हस्ताक्षर एल्गोरिथ्म का चयन करें: 5(एमडी 5 के लिए)
    • चुनौती स्ट्रिंग दर्ज करें:
    • फिर RDN के लिए सवालों का एक गुच्छा
  3. जेनरेट की गई CSR फ़ाइल (CertificateSigningRequest.certSigningRequest) को एक नए Apple ID के तहत Apple के प्रोविजनिंग पोर्टल पर भेजें।
  4. अनुरोध को स्वीकार करें और .cer फ़ाइल डाउनलोड करें
  5. security unlock-keychain
  6. security add-certificate ios_development.cer

यह हमें एक कदम करीब ले जाता है ...

समस्या 3: प्रोविजनिंग प्रोफाइल और किचेन अनलॉकिंग

मैंने प्रोविजनिंग पोर्टल में एक विशेष प्रोविज़निंग प्रोफाइल बनाया है सिर्फ सीआई के साथ उपयोग के लिए कि अगर कुछ बुरा होता है तो मैंने प्रभाव को थोड़ा छोटा कर दिया है। सबसे अच्छा अभ्यास या अत्यधिक सतर्क?

  1. sudo su jenkins
  2. mkdir ~/Library/MobileDevice
  3. mkdir ~/Library/MobileDevice/Provisioning\ Profiles
  4. प्रोविजनिंग पोर्टल में प्रोविजनिंग प्रोफाइल को इस नए फोल्डर में ले जाएँ। अब हम कमांड लाइन से जेनकिंस के रूप में xcodebuild को चलाने में सक्षम होने से दो कदम दूर हैं, और इसका मतलब है कि हम जेनकिंस सीआई को चलने वाले बिल्ड प्राप्त करने में सक्षम होने के करीब भी हैं।
  5. security unlock-keychain -p <keychain password>
  6. xcodebuild -target MyTarget -sdk iphoneos

जेनकिंस डेमन के रूप में लॉग इन करने पर अब हमें एक कमांड लाइन से एक सफल बिल्ड मिलता है, इसलिए यदि हम एक फ्री-स्टाइल प्रोजेक्ट बनाते हैं और उन अंतिम दो चरणों (# 5 और # 6 ऊपर) को जोड़ते हैं, तो हम बिल्डिंग को स्वचालित कर पाएंगे हमारे iOS परियोजना!

यह आवश्यक नहीं हो सकता है, लेकिन मैंने बेहतर तरीके से स्थापित करने के बाद jenkins UserShell को वापस / usr / bin / false करने के लिए महसूस किया, क्योंकि मैंने सफलतापूर्वक यह सब सेटअप प्राप्त कर लिया है। क्या मैं पागल हो रहा हूँ?

समस्या 4: डिफ़ॉल्ट किचेन अभी भी उपलब्ध नहीं है!

( संपादित करें: मैंने अपने प्रश्न का संपादन पोस्ट किया है, यह सुनिश्चित करने के लिए रिबूट किया गया कि मेरा समाधान 100% है, और निश्चित रूप से, मैंने एक कदम छोड़ दिया है )

उपरोक्त सभी चरणों के बाद भी, आपको इस उत्तर में बताए अनुसार लॉन्च डेमॉन प्लिस्ट को /Library/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>daemon</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>
        <!-- **NEW STUFF** -->
        <key>SessionCreate</key>
        <true />
</dict>
</plist>

इस सेटअप के साथ, मैं जेनकिन्स के लिए Xcode प्लगइन की भी सिफारिश करूंगा , जो कि xcodebuild स्क्रिप्ट को थोड़ा आसान बनाना है। इस बिंदु पर, मैं xcodebuild के लिए मैन पेज पढ़ने की भी सलाह दूंगा - नरक आपने इसे टर्मिनल में बहुत दूर बनाया है, है ना?

यह सेटअप सही नहीं है, और किसी भी सलाह या अंतर्दृष्टि की बहुत सराहना की जाती है।

मुझे अपनी समस्या को हल करने के लिए "सही" उत्तर का चयन करने में एक कठिन समय मिला है, क्योंकि मैं अपनी समस्या को हल करने के लिए उपयोग करने के लिए आया हूं, हर किसी के इनपुट के बारे में सिर्फ एक संग्रह था। मैंने सभी को कम से कम एक वोट देने की कोशिश की है, लेकिन साइमन को जवाब देना चाहिए क्योंकि उन्होंने ज्यादातर मूल सवाल का जवाब दिया। इसके अलावा, सामी टिक्का जेनेकिंस को ऐप्पलस्क्रिप्ट के माध्यम से एक सादे ओल 'ओएस एक्स ऐप के रूप में काम करने के अपने प्रयासों के लिए बहुत सारे श्रेय का हकदार है। यदि आप केवल जेनकिंस को प्राप्त करने और अपने उपयोगकर्ता सत्र के भीतर (यानी एक हेडलेस सर्वर के रूप में नहीं) जाने में रुचि रखते हैं, तो उसका समाधान मैक-जैसा है।

मुझे उम्मीद है कि मेरे प्रयासों ने आगे चर्चा को बढ़ावा दिया है, और अगले गरीब आत्मा की मदद करते हैं जो यह सोचकर आते हैं कि वे सप्ताहांत में अपने iOS प्रोजेक्ट के लिए जेनकिंस CI सेटअप प्राप्त कर सकते हैं क्योंकि वे सभी अद्भुत चीजों के बारे में सुन चुके हैं।


अपडेट: ९ अगस्त २०१३

इतने सारे अपवित्र और पसंदीदा होने के साथ, मैंने सोचा कि मैं 18 महीने बाद वापस आऊंगा।

पाठ 1: सार्वजनिक इंटरनेट पर जेनकींस को उजागर न करें

2012 के WWDC में मैं यह सवाल Xcode और OS X सर्वर इंजीनियरों के पास ले गया। मुझे "ऐसा मत करो!" किसी से भी मैंने पूछा। वे सभी सहमत थे कि एक स्वचालित निर्माण प्रक्रिया बहुत अच्छी थी, लेकिन यह कि सर्वर केवल स्थानीय नेटवर्क पर ही सुलभ होना चाहिए। ओएस एक्स सर्वर इंजीनियरों ने वीपीएन के माध्यम से रिमोट एक्सेस की अनुमति देने का सुझाव दिया।

पाठ 2: अब नए संस्थापन विकल्प हैं

मैंने हाल ही में अपने जेनकिंस के अनुभव के बारे में एक कोकोआइड्स बात की, और मेरे आश्चर्य के लिए मैंने कुछ नए स्थापित तरीके - होमब्रे और यहां तक ​​कि एक बिटनामी मैक ऐप स्टोर संस्करण भी पाया। ये निश्चित रूप से जांच के लायक हैं। जोनाथन राइट में एक विस्तार है जो होमब्रेव जेनकिन्स को काम कर रहा है

पाठ 3: नहीं, गंभीरता से, अपने बिल्ड बॉक्स को इंटरनेट पर उजागर न करें

यह मूल पोस्ट से बहुत स्पष्ट है कि मैं न तो सिस्टम प्रशासक हूं और न ही सुरक्षा विशेषज्ञ। निजी-वाई सामान (कीचेन, क्रेडेंशियल, प्रमाण पत्र, आदि) के बारे में सामान्य ज्ञान ने मुझे इंटरनेट पर अपना जेनकींस बॉक्स लगाने के बारे में बहुत असहज महसूस किया। उपेक्षित स्थिति में निक अर्नोट इस लेख में बहुत आसानी से मेरे हेबी-जीवी की पुष्टि करने में सक्षम थे ।

टी एल; डॉ

अपनी निर्माण प्रक्रिया को स्वचालित करने की चाह रखने वाले अन्य लोगों के लिए मेरी सिफारिश पिछले डेढ़ साल में बदल गई है। सुनिश्चित करें कि आपकी Jenkins मशीन आपके फ़ायरवॉल के पीछे है। जेनकींस को एक समर्पित जेनकिंस उपयोगकर्ता के रूप में स्थापित करें और सेट करें या तो इंस्टॉलर, बिटनामी मैक ऐप स्टोर संस्करण, सामी टिक्का के ऐप्पलस्क्रिप्ट, आदि का उपयोग करें; यह सबसे अधिक सिरदर्द मैं ऊपर विस्तार से हल करता है। यदि आपको रिमोट एक्सेस की आवश्यकता है, तो ओएस एक्स सर्वर में वीपीएन सेवाओं को स्थापित करने में दस मिनट का समय लगता है। मैं एक वर्ष से अधिक समय से इस सेटअप का उपयोग कर रहा हूं और इससे बहुत खुश हूं। सौभाग्य!


10
मुझे दुःख है कि मैं केवल इस संक्षिप्त और पूर्ण प्रश्न-उत्तर-संपादित-में :) के लिए एक
उत्थान दे सकता हूं

कुछ ने ओएस एक्स योसेमाइट पर जेनकिन्स के लॉन्च को तोड़ दिया - जेनकिंस के इंस्टॉलर का उपयोग किया।
जॉनी

सिस्टम कीचेन पर अपना प्रमाण पत्र ले जाएँ और खुश रहें;)
जूलियन एफ। वेनर्ट

जवाबों:


30

किचेन को इस्तेमाल करने से पहले अनलॉक करना होगा। आप security unlock-keychainअनलॉक करने के लिए उपयोग कर सकते हैं । आप ऐसा अंतःक्रियात्मक रूप से (सुरक्षित) या कमांड लाइन (असुरक्षित) पर पासवर्ड निर्दिष्ट करके कर सकते हैं, जैसे:

security unlock-keychain -p mySecretPassword...

जाहिर है, इसे स्क्रिप्ट में डालने से उस किचेन की सुरक्षा से समझौता हो जाता है, इसलिए अक्सर लोग एक व्यक्तिगत किचेन को ऐसे नुकसान को कम करने के लिए केवल हस्ताक्षर करने वाले क्रेडेंशियल्स के साथ सेटअप करते हैं।

आमतौर पर Terminalकिचेन में पहले से ही आपका सत्र अनलॉक होता है, क्योंकि डिफ़ॉल्ट किचेन लॉगिन पर अनलॉक होता है, इसलिए आपको ऐसा करने की आवश्यकता नहीं है। हालाँकि, आपके सत्र में नहीं चलने वाली किसी भी प्रक्रिया में चाबी का गुच्छा अनलॉक नहीं होगा, भले ही आपके पास उपयोगकर्ता के रूप में हो (सबसे अधिक यह प्रभावित करता है ssh, लेकिन यह भी किसी अन्य प्रक्रिया में)।


लेकिन, मुझे लोड करने में सिस्टम किचेन से आगे कीचेन लेने में भी मुश्किलें आ रही हैं। security unlock-keychain -p password -k /path/codesign.keychainकाम नहीं करता है।
edelaney05

क्या आपने मेरे उदाहरण के रूप में डिफ़ॉल्ट किचेन का उपयोग किया है? ध्यान दें कि कस्टम किचेन के लिए आपको उन्हें पहले सर्च पथ पर स्थापित करने की आवश्यकता है, इसलिए पहले डिफ़ॉल्ट किचेन का प्रयास करें। यह भी ध्यान रखें कि आप जो भी करने की कोशिश कर रहे हैं उसका कोई -kतर्क unlock-keychainनहीं है, यह सही नहीं लगता (देखें security help unlock-keychain)।
साइमन अर्बनक

मैंने कुछ अलग करने की कोशिश की है, लेकिन अंततः उसी स्थान पर वापस घाव हो गया है। मैंने अपना प्रश्न संपादित किया, उम्मीद है कि यह थोड़ा स्पष्ट होगा?
edelaney05

यह मूल प्रश्न से पूरी तरह से अलग है ... इसके साथ शुरू करने के लिए, आपको जेनकिंस (जैसे के माध्यम से sudo -u jenkins bash) में लॉगिन करना चाहिए और जांचें कि आपके पास पूरे रास्ते पर अनुमतियाँ हैं। आपने बहुत सारी चीज़ें कीं, जो आपने नहीं कीं (जैसे dsclउपयोगकर्ता बनाने के लिए उपयोग करना) ताकि आप वास्तव में अपने दम पर हों। आप घर की सेटिंग भी जांचना चाहेंगे (आप शेल सेट करते हैं या नहीं, इसके sudo -u jenkins -iलिए आप इसी लॉगिन सेटिंग्स का उपयोग कर सकते हैं )।
साइमन अर्बनक

12

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

.Cer फ़ाइल में एक निर्यात की गई पहचान का उपयोग करके, आप इसे प्रोग्रामेटिक रूप से आयात कर सकते हैं जैसे, -एक स्विच इस प्रविष्टि तक सभी प्रोग्रामों को एक्सेस करने की अनुमति देता है। वैकल्पिक रूप से, आप -T /path/to/programअनुमति देने codesignऔर xcodebuildउपयोग करने के लिए कई स्विच का उपयोग कर सकते हैं।

$ security import devcertificate.cer -k jenkins.keychain -A

बेशक, हमारे पास Apple WWDCRA सर्टिफिकेट भी होना चाहिए, जो उसी तरह से आयात किए जाएं:

$ security import AppleWWDRCA.cer -k jenkins.keychain -A

हालाँकि, हम भी निजी कुंजी के लिए की जरूरत है devcertificate.cer। ऐसा करने के लिए, आपको संबंधित निजी कुंजी को .p12 कुंजी के रूप में निर्यात करने और पासवर्ड सेट करने की आवश्यकता है। इसे कहीं रखें आप इसे अपने जेनकींस शेल से एक्सेस कर सकते हैं, किचेन को अनलॉक कर सकते हैं और इसे आयात कर सकते हैं:

$ security unlock-keychain -p YourKeychainPass jenkins.keychain
$ security import devprivatekey.p12 -k login.keychain -P ThePasswordYouSetWhenExporting -A

वितरण प्रमाणपत्र आयात करना उसी तरह से काम करता है। मुझे नहीं पता कि आपको .p12 आयात करने के लिए किचेन को अनलॉक करने की आवश्यकता क्यों है और एक .cer के लिए नहीं, बल्कि अच्छी तरह से।

आपको प्रोविजनिंग प्रोफाइल तक पहुंच की आवश्यकता होगी, मैं जल्द ही इस पोस्ट में उन निर्देशों को संपादित करूंगा।


1
क्या आप प्रोविजनिंग प्रोफाइल एक्सेस निर्देशों के साथ अपडेट कर सकते हैं?
ल्यूक

संबंधित दृष्टिकोण के लिए modet.com/what-we-know/2013/03/11/jenkins_keychain_timeouts देखें ।
गिलि

5

मेरे पास एक ही मुद्दा है और उत्तर के लिए कुछ समय के लिए चारों ओर खोज रहा है। यहाँ एक बात है जो मैंने सीखा है।

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

एक बार जब मैंने वह सेट कर लिया, तो मैं कमांड चला सकता था

security list-keychains

और यह मुझे पता चला है कि जेनकींस को केवल एक चीज दिखाई दे रही थी, सिस्टम किचेन।

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

उस ज्ञान के साथ, मैंने फिर किचेन एक्सेस ऐप खोला और सिस्टम कीचेन (राइट-क्लिक, "लॉगिन" किचेन से कॉपी "" iPhone डेवलपर: xxxx ") प्रमाणपत्र को कॉपी किया।

यह मुझे प्रमाण पत्र / निजी कुंजी जोड़ी कोड साइन त्रुटि पारित कर दिया गया, लेकिन प्रोविज़निंग प्रोफाइल के साथ एक और एक को खोल दिया (एक समान, लेकिन अलग-अलग, मुद्दा) लगता है।


मैं एक ही प्रावधान प्रोफ़ाइल समस्या में चल रहा हूं, इसे हल करने के बारे में कोई विचार?
संतोष

2
मैंने पाया कि जेनकिंस उपयोगकर्ता के लिए प्रोविज़निंग प्रोफाइल '/ Users / Shared / Jenkins / Library / MobileDevice / Provisioning Profiles' में संगृहीत हैं और इसलिए मेरे निर्माण में एक कदम डालकर उस स्थान पर अपने git रेपो के अंदर से प्रोविज़निंग प्रोफ़ाइल की प्रतिलिपि बनाएँ। यह मुझे प्रोविजनिंग प्रोफाइल को अपडेट करने और इसे SCM में धकेलने की अनुमति देता है और जेनकिंस स्वचालित रूप से उस बदलाव को चुन लेता है।
ब्रायनस्टी

अगर आप अपने jenkins कीचैन लाइब्रेरी में login.keychain को कॉपी करते हैं, तो आपको इसे चॉइस करना होगा, ताकि
जेनकिंस

1
आप नायक हैं, मैं 2 दिनों से मेरे सिर पर बाल फाड़ रहा था, सिस्टम को
सीट्स

5

पासवर्ड बदलने के लिए आप इसका उपयोग कर सकते हैं sudo passwd jenkins <new-pw>। हालाँकि मुझे लगता है कि पासवर्ड बदलने के लिए dscl कमांड का उपयोग करना बेहतर होगा।

मेरे इंस्टॉल में जेनकिन्स (आधिकारिक इंस्टॉलर) में एक उपयोगकर्ता शेल / यूएसआर / बिन / गलत था। इसे bash में बदलने से लॉगिन में सक्षम नहीं होने की समस्या हल हो गई:

sudo dscl . -change /Users/jenkins UserShell /usr/bin/false /bin/bash

अब आपको लॉगिन करना चाहिए su jenkins


यह मेरे लिए बहुत मददगार था - मुझे create-keychainजेनकिन्स उपयोगकर्ता के साथ काम नहीं करने वाली कमांड के साथ एक समान समस्या थी । इस कमांड को चलाने से समस्या ठीक होती दिख रही थी।
lxt

जब मैं jenkins उपयोगकर्ता पासवर्ड को बदलने के लिए कमांड चलाता हूं, तो मुझे वर्तमान पासवर्ड के लिए कहा जाता है। मुझे नहीं पता कि यह क्या है और मैं प्रवेश नहीं कर सकता। कोई सुझाव?
CMVR

4

मैंने iOS ऐप बनाने के लिए Xcode प्लगइन का उपयोग किया है। किसी प्रोजेक्ट के कॉन्फ़िगरेशन में।

चुनें जोड़ें निर्माण कदम> Xcode> कोड हस्ताक्षर और OS X Keychain विकल्प।

चाबी का गुच्छा बॉक्स पर टिक करें और अनुसरण के रूप में जोड़ें (उदाहरण के लिए) यहां छवि विवरण दर्ज करें

सोमटाइम्स, अगर मुझे त्रुटि मिलती है

कोड साइन त्रुटि: ...

मैं जेनकिंस को फिर से खोलूंगा और अनलॉक करने के लिए फिर से पासवर्ड दर्ज करूंगा


3

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

Jenkins.app आपके उपयोगकर्ता सत्र में जेनकिन्स चलाता है, इसलिए किचेन एक्सेस मुद्दे एक मुद्दा नहीं हैं :)


चिंता का विषय यह है कि यह जेनकिंस उपयोगकर्ता यूजर स्पेस में है न कि डेमन स्पेस ... इसलिए यदि कोई हमलावर आपके जेनकींस उपयोगकर्ता से समझौता करने में सक्षम था, तो आपके कंप्यूटर पर उनकी पूरी पहुंच होगी।
edelaney05

यह उन मुद्दों को हल कर सकता है जो मुझे मिल रहे हैं। समस्या यह है कि मेरे पास एक मौजूदा जेनकिंस इंस्टॉलेशन है (दूसरे तरीके से) और मैं अपने सभी बिल्ड नहीं खोना चाहता हूं - आदि मेरे केस में क्या होगा?
माइक एस

2

यदि आपके पास सूडो है, तो आप जेनकिन्स उपयोगकर्ता के पासवर्ड को बदलने के लिए पासवार्ड का उपयोग कर सकते हैं। तब आप जेनकिंस पासवर्ड प्राप्त कर सकते हैं।

इसके अलावा, मुझे यकीन नहीं है कि यह आपके लिए मुद्दा है, लेकिन जेनकींस के माध्यम से मैं जिस ANT स्क्रिप्ट का उपयोग करता हूं वह यह है:

<target name="unlock_keychain">
    <exec executable="security">
        <arg value="-v"/>
        <arg value="unlock-keychain"/>          
        <arg value="-p"/>
        <arg value="<My Password>"/>
        <arg value="/Users/macbuild/Library/Keychains/login.keychain"/>
    </exec>
</target>

1
ऐसा लगता है जैसे आपके पास "macbuild" उपयोगकर्ता के तहत जेनकींस सेटअप है; मैं मान रहा हूं कि यह उपयोगकर्ता एक उपयोगकर्ता है और डेमॉन नहीं है। मैं निश्चित रूप से (अब) समझता हूं कि किचेन को कमांड लाइन आर्ग्स के माध्यम से अनलॉक करने की आवश्यकता होगी (साइमन अर्बनक की टिप्पणियां देखें), लेकिन मैं अभी भी अनिश्चित हूं कि जेनकिंस डेमन के लिए डिफ़ॉल्ट किचेन कैसे बनाया जाए।
edelaney05

1

किसी कारण के लिए, "सुरक्षा" उपयोगिता मेरे लिए काम पर नहीं थी, जिसमें नए जेनकींस इंस्टॉल किए गए थे।

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

जब मैंने उस उपयोगकर्ता के डेस्कटॉप में लॉग इन किया और किचेन यूटिलिटी को लॉन्च किया, तो उसने मेरी बनाई किचेन को दिखाया और उसके बाद ऊपरी पोस्ट में वर्णित सब कुछ काम किया।

मैं सोच रहा हूं कि क्या सिंह में कुछ प्रारंभिक किचेन व्यवहार बदल गया है, या मैं कुछ याद कर रहा हूं?


मैंने सिंह के "स्वच्छ" इंस्टालेशन पर उपरोक्त चरणों का प्रदर्शन किया, इसलिए शायद आपके कूदने से पहले सुरक्षा के साथ कोई समस्या थी? एक और संभावना है कि मैं शुरू में पोस्ट किए जाने के बाद से सुरक्षा / ओएस एक्स अपडेट रहा हूं?
edelaney05

0

मैंने कंपनी के लिए निजी और सार्वजनिक कुंजी को किचेन में जोड़ा। मैंने जो निर्माण किया है, उसके लिए मैंने प्रावधान प्रोफाइल को जोड़ा।

चूंकि इस उपयोगकर्ता के पास एक खाता नहीं था, इसलिए मैंने अपने खाते के साथ भटकने वाले व्यक्ति में प्रवेश किया। प्रोविज़निंग सीट्स डाउनलोड किया और उन्हें Xcode में लोड किया।

मैंने विशेष रूप से बिल्ड रोल खाते के लिए एक प्रमाण पत्र नहीं जोड़ा है, पूर्व। जेनकींस।

मैंने इसे बिल्ड स्क्रिप्ट में जोड़ा: उपरोक्त के रूप में सुरक्षा अनलॉक-किचेन-पी mySecretPassword, लेकिन ...

मैंने एक फाइल बनाई ~ ~ .ssh / mypass और फाइल में पासवर्ड जोड़ें।

फिर कमांड बन जाता है: सुरक्षा अनलॉक-किचेन-पी cat ~/.ssh/mypass

बिल्ड एक चैंपियन की तरह काम कर रहे हैं। मुझे आईपीए फ़ाइल मिलती है, यह ऐप सेंट्रल पर लोड होती है और डिवाइस पर काम करती है।


0

डेमॉन के बजाय ओएस एक्स उपयोगकर्ता के रूप में जेनकिंससी को स्थापित और लॉन्च कर सकता है:

  1. आधिकारिक इंस्टॉलर का उपयोग करके जेनकींस स्थापित करें ( https://jenkins-ci.org/ )
    • अगला पर क्लिक करें
    • "अनुकूलित करें" पर क्लिक करें
    • "जेनेकिन्स" के रूप में बूट पर प्रारंभ करें "-" महत्वपूर्ण * इस विकल्प को आम तौर पर एक बिना सिर वाली जेनकिंस की अनुमति देता है जो किचेन एक्सेस के साथ अच्छी तरह से काम नहीं करता है
  2. प्रक्षेपण http://127.0.0.1:8080
    • इसे सत्यापित करें लॉन्च नहीं करता है
    • जेनकींस को रोकने की आवश्यकता हो सकती है sudo launchctl unload /Library/LaunchDaemons/org.jenkins-ci.plist
  3. डबल क्लिक करें /Applications/Jenkins/jenkins.war
    • बेशक यह @ स्टार्ट अप शुरू करने के लिए स्वचालित होना चाहिए
  4. खुला हुआ http://127.0.0.1:8080
    • यह सत्यापित करें कि यह अब चल रहा है

0

इस समस्या को हल करने के लिए http://appleid.apple.com पर लॉग इन करने की कोशिश करें और अपने सुरक्षा प्रश्नों को अपडेट करें।

इसने मेरी मदद की।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.