ওএস এক্স-এ জেনকিনস: এক্সকোডবিল্ড কোড সাইন ত্রুটি দেয়


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 ... ফলন "একটি ডিফল্ট কীচেন পাওয়া যায়নি"

আইভো ড্যান্টের নীচে নির্দেশিত হিসাবে , ইউজারশেলটি জেনকিনস ডিমনকে ডিফল্টরূপে / usr / bin / মিথ্যা হিসাবে সেট করা হয়েছে (আমি মনে করি এটি একটি বৈশিষ্ট্য, কোনও বাগ নয়); ইউজারশেলকে ব্যাশে পরিবর্তন করতে তার উত্তর অনুসরণ করুন। তারপরে আপনি 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: কোড স্বাক্ষরকারী শংসাপত্র এবং ব্যক্তিগত কী যুক্ত করা

এখান থেকেই আমি সত্যই কৃপণ হওয়া শুরু করি। আমার মনে খুব খারাপ লাগছে যে জেনকিন্সের সাথে ব্যবহারের জন্য আমার কাছে একটি নতুন পাবলিক / প্রাইভেট কী তৈরি করা উচিত। আমার চিন্তার প্রক্রিয়াটি হ'ল যদি জেনকিনস ডিমন আপোস করা হয়, তবে আমি সহজেই অ্যাপলের প্রভিশনিং পোর্টালে শংসাপত্রটি প্রত্যাহার করতে পারি এবং অন্য কোনও পাবলিক / প্রাইভেট কী তৈরি করতে পারি। আমি যদি আমার ব্যবহারকারীর অ্যাকাউন্ট এবং জেনকিন্সের জন্য একই কী এবং শংসাপত্র ব্যবহার করি তবে জেনকিনস পরিষেবাটিতে আক্রমণ করা থাকলে এর অর্থ আরও ঝামেলা (ক্ষতি?)।

সাইমন আরবানেকের উত্তরের দিকে ইঙ্গিত করে আপনি একটি সরল পাঠ্য পাসওয়ার্ড সহ স্ক্রিপ্ট থেকে কীচেইনটি আনলক করবেন be জেনকিনস ডেমনের কীচেইনে "ডিসপোজযোগ্য" শংসাপত্র এবং কীগুলি বাদে অন্য কোনও কিছু রাখা বেআইনী বলে মনে হয়।

আমি বিপরীতে যে কোনও আলোচনায় খুব আগ্রহী। আমি কি খুব বেশি সতর্ক হই?

টার্মিনালের জেনকিনস ডেমন হিসাবে একটি নতুন সিএসআর তৈরি করতে আমি নিম্নলিখিতটি করেছি ...

  1. sudo su jenkins
  2. certtool r CertificateSigningRequest.certSigningRequest আপনাকে নিম্নলিখিতগুলির জন্য অনুরোধ করা হবে (এর মধ্যে বেশিরভাগ আমি সঠিক উত্তরে শিক্ষিত অনুমান করেছি; আপনার কি আরও ভাল অন্তর্দৃষ্টি আছে? দয়া করে ভাগ করুন।) ...
    • কী এবং শংসাপত্রের লেবেল প্রবেশ করান:
    • অ্যালগরিদম নির্বাচন করুন: r (আরএসএর জন্য)
    • বিটগুলিতে কী আকারটি প্রবেশ করান: 2048
    • স্বাক্ষর অ্যালগরিদম নির্বাচন করুন: 5 (এমডি 5 এর জন্য)
    • চ্যালেঞ্জের স্ট্রিং প্রবেশ করান:
    • তারপরে আরডিএন এর জন্য একগুচ্ছ প্রশ্ন
  3. নতুন অ্যাপল আইডির অধীনে জেনারেটেড সিএসআর ফাইল (সার্টিফিকেটসাইনিংরেইকুয়েস্ট.সিসিটিং সিংগাইরেস্ট) অ্যাপলের প্রভিশনিং পোর্টালে জমা দিন
  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. প্রভিশনিং পোর্টালে আপনি যে প্রভিশন প্রোফাইল সেটআপ করেছেন তাকে এই নতুন ফোল্ডারে সরান। কমান্ড লাইন থেকে জেনকিনস হিসাবে এক্সকোডবিল্ড চালাতে সক্ষম হওয়া থেকে আমরা এখন দুটি ছোট পদক্ষেপ দূরে রয়েছি এবং এর অর্থ আমরা জেনকিনস সিআই চলমান বিল্ডগুলি পেতে সক্ষম হওয়ার কাছাকাছি এসেছি।
  5. security unlock-keychain -p <keychain password>
  6. xcodebuild -target MyTarget -sdk iphoneos

জেনকিনস ডেমন হিসাবে লগ ইন করার পরে এখন আমরা একটি কমান্ড লাইন থেকে একটি সফল বিল্ড পাই, সুতরাং আমরা যদি একটি ফ্রি-স্টাইল প্রকল্প তৈরি করি এবং সেই চূড়ান্ত দুটি ধাপ যুক্ত করি (উপরে # 5 এবং # 6) আমরা বিল্ডিংটি স্বয়ংক্রিয় করতে সক্ষম হব আমাদের আইওএস প্রকল্প!

এটি প্রয়োজনীয় নাও হতে পারে তবে আমি জেনকিন্স ইউজারশেলকে / ইউএসআর / বিন / মিথ্যাতে ফিরে আসার পরে আমি এই সমস্ত সেটআপটি সফলভাবে অর্জন করার পরে ভাল অনুভব করেছি। আমি কি বেহাল হয়ে যাচ্ছি?

সমস্যা 4: ডিফল্ট কীচেন এখনও পাওয়া যায় না!

( সম্পাদনা: আমি আমার প্রশ্নের সম্পাদনাগুলি পোস্ট করেছিলাম, আমার সমাধানটি 100% কিনা তা নিশ্চিত করার জন্য পুনরায় বুট করেছিলাম এবং অবশ্যই আমি একটি পদক্ষেপ রেখেছিলাম )

উপরের সমস্ত পদক্ষেপের পরেও, আপনাকে এই উত্তরে বর্ণিত হিসাবে / লাইব্রেরি / লাঞ্চডেমনস / অর্জ.জেনকিনস-সি.লিস্টে লঞ্চ ডেমোন প্লিস্টটি পরিবর্তন করতে হবে । দয়া করে নোট করুন এটি একটি ওপেনডার বাগও

এটিকে ঐটির মত দেখতে হবে:

<?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>

এই সেটআপটির সাথে, আমি জেনকিনসের জন্য এক্সকোড প্লাগইনটিও সুপারিশ করব যা এক্সকোডবিল্ড স্ক্রিপ্টটি সেটাকে কিছুটা সহজ করে তোলে। এই মুহুর্তে, আমি এক্সকোডবিল্ডের জন্য ম্যান পেজগুলি পড়ারও পরামর্শ দেব - নরক আপনি এটি এতক্ষণ টার্মিনালে তৈরি করেছেন, তাই না?

এই সেটআপটি নিখুঁত নয় এবং কোনও পরামর্শ বা অন্তর্দৃষ্টি প্রশংসিত হয়।

আমার সমস্যার সমাধান করতে আমি যা ব্যবহার করতে এসেছি তা হ'ল প্রত্যেকের ইনপুট সংগ্রহ করার কারণে একটি "সঠিক" উত্তর নির্বাচন করতে আমার বেশ কষ্ট হয়েছে। আমি সবাইকে কমপক্ষে একটি ভোট দেওয়ার চেষ্টা করেছি, তবে সাইমনকে উত্তরটি প্রদান করেছি কারণ তিনি বেশিরভাগই মূল প্রশ্নের উত্তর দিয়েছেন। তদ্ব্যতীত, জেনকিনসকে অ্যাপলস্ক্রিপ্টের মাধ্যমে একটি সাধারণ ওল 'ওএস এক্স অ্যাপ্লিকেশন হিসাবে কাজ করার জন্য তার প্রচেষ্টার জন্য সামি টিক্কা অনেক কৃতিত্বের দাবিদার। আপনি যদি কেবল জেনকিন্সকে পেতে এবং আপনার ব্যবহারকারী সেশনের মধ্যেই দ্রুত যেতে আগ্রহী হন (যেমন শিরোনামহীন সার্ভার হিসাবে নয়) তবে তার সমাধানটি ম্যাকের মতো অনেক বেশি।

আমি আশা করি যে আমার প্রচেষ্টাগুলি আরও আলোচনার জন্ম দেয় এবং পরবর্তী দরিদ্র আত্মাকে যারা এই ভেবে আসে যে তারা জেনেকিনস সিআইকে তাদের আইওএস প্রকল্পের জন্য একটি উইকএন্ডে তাদের সম্পর্কে শুনেছেন এমন দুর্দান্ত সব জিনিসগুলির কারণে গ্রহণ করতে পারে thinking


আপডেট: আগস্ট 9, 2013

অনেকগুলি উত্সাহ এবং পছন্দসইটি নিয়ে, আমি ভেবেছিলাম 18 মাস পরে আমি এখানে কিছু সংক্ষিপ্ত পাঠ শিখলাম।

পাঠ 1: জেনকিন্সকে পাবলিক ইন্টারনেটে প্রকাশ করবেন না

2012 ডাব্লুডাব্লুডিসিতে আমি এই প্রশ্নটি Xcode এবং OS X সার্ভার ইঞ্জিনিয়ারদের কাছে নিয়েছি। আমি "এটি করবেন না!" এর একটি ককফনি পেয়েছি আমি জিজ্ঞাসা কারও কাছ থেকে। তারা সকলেই একমত হয়েছিলেন যে একটি স্বয়ংক্রিয় বিল্ড প্রক্রিয়া দুর্দান্ত ছিল, তবে সার্ভারটি কেবলমাত্র স্থানীয় নেটওয়ার্কে অ্যাক্সেসযোগ্য। ওএস এক্স সার্ভার ইঞ্জিনিয়াররা ভিপিএন এর মাধ্যমে দূরবর্তী অ্যাক্সেসের অনুমতি দেওয়ার পরামর্শ দিয়েছিল।

পাঠ 2: এখন নতুন ইনস্টল বিকল্প রয়েছে

আমি সম্প্রতি আমার জিনকিন্সের অভিজ্ঞতা সম্পর্কে একটি কোকোহাইডসকে কথা বলেছি এবং আমার অবাক করে দিয়েছি কিছু নতুন ইনস্টল পদ্ধতি - হোমব্রিউ এবং এমনকি বিটনামি ম্যাক অ্যাপ স্টোর সংস্করণও আমি পেয়েছি । এগুলি অবশ্যই চেক আউট মূল্যবান। জোনাথন রাইটের হোমব্রিউ জেনকিন্সকে কাজ করার বিশদ বিবরণ রয়েছে ।

পাঠ 3: না, গুরুত্ব সহকারে, আপনার বিল্ড বাক্সটি ইন্টারনেটে প্রকাশ করবেন না

মূল পোস্টটি থেকে এটি বেশ পরিষ্কার যে আমি কোনও সিস্টেম প্রশাসক বা সুরক্ষা বিশেষজ্ঞ না। প্রাইভেট-ওয়াই স্টাফ সম্পর্কে সাধারণ জ্ঞান (কীচেইনস, শংসাপত্রাদি, শংসাপত্রগুলি ইত্যাদি) আমার জেনকিন্স বাক্সটি ইন্টারনেটে রাখার বিষয়ে বেশ অস্বস্তি বোধ করে। অবহেলিত সম্ভাব্যতার নিক আর্নট এই নিবন্ধে আমার হিবি-জীবিগুলি খুব সহজেই নিশ্চিত করতে সক্ষম হয়েছিল ।

টি এল; ডিআর

অন্যদের তাদের বিল্ডিং প্রক্রিয়াটি স্বয়ংক্রিয় করতে চেয়ে আমার পরামর্শটি গত দেড় বছর ধরে পরিবর্তিত হয়েছে। আপনার জেনকিন্স মেশিনটি আপনার ফায়ারওয়ালের পিছনে রয়েছে তা নিশ্চিত করুন। জেনকিন্স ইনস্টল করুন, বিটনামি ম্যাক অ্যাপ স্টোর সংস্করণ, সামি টিকার অ্যাপলস্ক্রিপ্ট ইত্যাদি ব্যবহার করে ডেডিকেটেড জেনকিন্স ব্যবহারকারী হিসাবে সেট করুন এবং সেট করুন; এটি বেশিরভাগ মাথা ব্যাথার সমাধান করে যা আমি উপরে বর্ণনা করেছি। আপনার যদি দূরবর্তী অ্যাক্সেসের প্রয়োজন হয় তবে ওএস এক্স সার্ভারে ভিপিএন পরিষেবা সেট আপ করতে দশ মিনিটের শীর্ষে সময় লাগে। আমি এই সেটআপটি এক বছরেরও বেশি সময় ধরে ব্যবহার করছি এবং এতে খুশি very শুভকামনা!


10
আমি দু: খিত আমি এই সংক্ষিপ্ত এবং উত্তর-সম্পাদিত-উত্তর-সহ সম্পূর্ণ প্রশ্নটির জন্য কেবল একটি উত্সাহ দিতে পারি :)
Zsub

কিছু কিছু ওএস এক্স ইয়োসেমাইটে জেনকিন্সের লঞ্চটি ভেঙে দিয়েছে - জেনকিনসের ইনস্টলার ব্যবহার করেছে।
জনি

আপনার শংসাপত্রটি সিস্টেম কীচেইনে সরান এবং খুশি হন;)
জুলিয়ান এফ ওয়েইনার্ট

উত্তর:


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 ফাইলে রফতানি করা পরিচয় ব্যবহার করে আপনি প্রোগ্রামের মতো এটিকে আমদানি করতে পারেন, -আর সুইচ হ'ল এই প্রোগ্রামটিতে সমস্ত প্রোগ্রাম অ্যাক্সেসের অনুমতি দেওয়া allow বিকল্পভাবে, আপনি -T /path/to/programঅনুমতি codesignএবং xcodebuildঅ্যাক্সেসের জন্য কয়েকটি স্যুইচ ব্যবহার করতে পারেন :

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

অবশ্যই, আমাদের কাছে অ্যাপল ডাব্লুডাব্লুডিসিআরএ শংসাপত্রও থাকা উচিত, প্রায় একইভাবে আমদানি করা:

$ 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
আপনি দয়া করে প্রভিশন প্রোফাইল অ্যাক্সেস নির্দেশাবলী আপডেট করতে পারেন?
লুক


5

আমি একই সমস্যা ছিল এবং একটি উত্তরের জন্য কিছু সময় জন্য সন্ধান করা হয়েছে। এখানে আমি শিখেছি একটি জিনিস।

আমি জেনকিনগুলি জেনকিন্স ব্যবহারকারী, ইনস্টলার দ্বারা নির্মিত ব্যবহারকারী হিসাবে চালাচ্ছি এবং অন্য প্রত্যেকে যেমন উল্লেখ করেছেন যে আপনার সাধারণ ব্যবহারকারীর মতো একই কীচেইনে তার অ্যাক্সেস নেই। জেনকিন ব্যবহারকারী হিসাবে লগইন করার চেষ্টা করার পরিবর্তে, আমি একটি দ্বিতীয় বিল্ড প্রকল্প তৈরি করেছি যার মধ্যে একটি বিল্ড স্টেপ রয়েছে যা হ'ল "এক্সিকিউট শেল" যেখানে আমি কমান্ডগুলি চালাচ্ছি আমি জেনকিন্স ব্যবহারকারী হিসাবে পরীক্ষা করতে চাই।

একবার আমি এটি সেট আপ হয়ে গেলে, আমি কমান্ডটি চালাতে পারি

security list-keychains

এবং এটি আমার কাছে প্রকাশ করেছিল যে জেনকিনগুলি কেবলমাত্র সিস্টেম কীচেন দেখতে পেল।

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

সেই জ্ঞানের সাথে আমি তখন কীচেইন অ্যাক্সেস অ্যাপ্লিকেশনটি খুললাম এবং আমার "আইফোন বিকাশকারী: এক্সএক্সএক্সএক্সএক্সএক্স" শংসাপত্রটি সিস্টেম কীচেইনে অনুলিপি করেছি (রাইট ক্লিক করুন, "লগইন" কীচেন থেকে অনুলিপি করুন)।

এটি আমাকে শংসাপত্র / প্রাইভেট কী জোড় কোড সাইন ত্রুটিটি দিয়েছিল তবে প্রভিশন প্রোফাইলে অন্যটি খুলেছে (একই রকম মনে হয় তবে আলাদা, ইস্যু)।


আমি একই বিধান প্রোফাইল ইস্যুতে চলেছি, কীভাবে সমাধান করবেন এ সম্পর্কে কোনও চিন্তা?
সন্তোষোষ

2
আমি দেখতে পেয়েছি যে জেনকিন্স ব্যবহারকারীর জন্য প্রভিশনিং প্রোফাইলগুলি '/ ব্যবহারকারী / ভাগ / জেনকিন্স / গ্রন্থাগার / মোবাইল ডিভাইস / প্রভিশিং প্রোফাইল' এ সঞ্চিত আছে এবং তাই আমার গিট রেপোর ভিতরে থেকে কোনও প্রোভিজিং প্রোফাইল অনুলিপি করতে আমার বিল্ডে একটি পদক্ষেপ রেখে। এটি আমাকে প্রভিশনিং প্রোফাইল আপডেট করতে এবং এসসিএম এবং জেনকিন্সে স্বয়ংক্রিয়ভাবে সেই পরিবর্তনটি তুলে আনতে সহায়তা করে।
ব্রায়ানস্টে

যদি আপনি লগইন.কিচেইন আপনার জেনকিনস কেচেইন লাইব্রেরিতে অনুলিপি করেন তবে আপনাকে এটি ছড়িয়ে দিতে হবে যাতে
জেনকিন্স

1
আপনি নায়ক, আমি 2 দিনের জন্য আমার মাথায় চুল
ছিঁড়েছিলাম,

5

পাসওয়ার্ড পরিবর্তন করতে আপনি ব্যবহার করতে পারেন sudo passwd jenkins <new-pw>। তবে আমি মনে করি পাসওয়ার্ড পরিবর্তন করতে dscl কমান্ড ব্যবহার করা ভাল।

আমার ইনস্টল জেনকিন্সে (অফিসিয়াল ইনস্টলার) একটি ব্যবহারকারীর শেল / ইউএসআর / বিন / মিথ্যা ছিল। এটিকে ব্যাশে পরিবর্তন করার ফলে লগইন করতে না পারা সমস্যার সমাধান হয়েছে:

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

আপনি এখন লগইন করতে সক্ষম হওয়া উচিত su jenkins


এটি আমার পক্ষে খুব সহায়ক ছিল - create-keychainজেনকিন্স ব্যবহারকারীর সাথে কমান্ডটি কাজ না করার ক্ষেত্রে আমারও একই সমস্যা ছিল । এই কমান্ডটি চালানো সমস্যার সমাধান বলে মনে হচ্ছে।
lxt

আমি যখন জিনকিন্স ব্যবহারকারীর পাসওয়ার্ড পরিবর্তন করতে কমান্ডটি চালাই, তখন আমি বর্তমান পাসওয়ার্ডের জন্য জিজ্ঞাসা করব। এটি কী তা আমার কোনও ধারণা নেই এবং আমি প্রবেশও করতে পারি না। কোনও পরামর্শ?
সিএমভিআর

4

আমি আইওএস অ্যাপ তৈরি করতে এক্সকোড প্লাগইন ব্যবহার করেছি। একটি প্রকল্পের কনফিগারেশন।

চয়ন যোগ বিল্ড পদক্ষেপ> Xcode> Code Signing & OS X কীচেইনে অপশন।

আনলক কীচেন বক্সটি টিক দিন এবং অনুসরণ হিসাবে যুক্ত করুন ( উদাহরণস্বরূপ ) এখানে চিত্র বর্ণনা লিখুন

একই সময়ে, যদি আমি ত্রুটি পাই

কোড সাইন ত্রুটি: ...

আমি জেনকিনস আবার খুলব এবং আনলক করতে আবার পাসওয়ার্ড প্রবেশ করবো


3

কীচেন নিয়ে সমস্যা থাকা লোকদের জন্য, আমি আপনাকে আমার বিকল্প জেনকিন্স ইনস্টলারটি https://github.com/stisti/jenkins-app , https://github.com/stisti/jenkins-app/downloads এ ডাউনলোড করার পরামর্শ দিচ্ছি

জেনকিনস.এপ আপনার ব্যবহারকারীর অধিবেশনে জেনকিনগুলি চালায়, তাই কীচেইন অ্যাক্সেসের সমস্যা কোনও সমস্যা নয় :)


উদ্বেগটি হ'ল এই জেনকিন্স ব্যবহারকারীটি ইউমন স্পেসে ডেমোন স্পেস নয় ... সুতরাং যদি কোনও আক্রমণকারী আপনার জেনকিন্স ব্যবহারকারীর সাথে আপস করতে সক্ষম হয় তবে তাদের কম্পিউটারে আপনার সম্পূর্ণ অ্যাক্সেস থাকতে পারে।
edelaney05

এটি আমার যে সমস্যাগুলি পেয়েছে তা সমাধান করতে পারে। সমস্যাটি হ'ল আমার একটি বিদ্যমান জেনকিন্স ইনস্টলেশন রয়েছে (অন্যভাবে সম্পন্ন হয়েছে) এবং আমি আমার সমস্ত বিল্ড হারাতে চাই না - ইত্যাদি আমার ক্যাশে কী হবে?
মাইক এস

2

আপনার যদি সুডো থাকে তবে জেনকিন্স ব্যবহারকারীর পাসওয়ার্ড পরিবর্তন করতে আপনি পাসডাব্লুড ব্যবহার করতে পারেন। তারপরে আপনি জেনকিন্সের পাসওয়ার্ড পেতে পারেন।

এছাড়াও, আমি নিশ্চিত নই যে এটি আপনার পক্ষে সমস্যাটি কিনা তবে আমি জেনকিন্সের মাধ্যমে যে এএনটি স্ক্রিপ্ট ব্যবহার করি তা এতে রয়েছে:

<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
মনে হচ্ছে জেনকিন্স একটি "ম্যাকবিল্ড" ব্যবহারকারীর অধীনে রয়েছে; আমি ধরে নিচ্ছি যে এই ব্যবহারকারী একজন ব্যবহারকারী এবং ডেমন নয়। আমি অবশ্যই (এখন) বুঝতে পেরেছি যে কমান্ড লাইন আরগগুলির মাধ্যমে কীচেইনটি আনলক করা দরকার (সাইমন আরবানেকের মন্তব্য দেখুন), তবে জেনকিনস ডেমনের জন্য কীভাবে ডিফল্ট কীচেন তৈরি করবেন তা আমি এখনও নিশ্চিত নই।
edelaney05

1

কিছু কারণে, "সিকিউরিটি" ইউটিলিটি আমার পক্ষে নতুন জেনকিন্স ইনস্টল করে সিংহে কাজ করছে না।

"সুডো সু জেনকিনস" এর পরে এটি নতুন কীচেইন তৈরি করতে সক্ষম হয়েছিল, তবে নীরবে সমস্ত "ডিফল্ট-কীচেন-এস ..." বা "আনলক" কমান্ড শূন্য প্রস্থান স্থিতি ফিরে আসে এবং কনসোলে কিছুই প্রিন্ট করে না। ডিফল্ট বা লগইন কীচেনগুলি কিছুই দেয়নি, কীচেইন অনুসন্ধান তালিকায় কেবলমাত্র সিস্টেম কীচেন ছিল এবং আমি যা টাইপ করি তা পরিবর্তন করতে পারিনি।

আমি সেই ব্যবহারকারীর ডেস্কটপে লগ ইন করে কিচেন ইউটিলিটি চালু করার পরে এটি আমার তৈরি কীচেইনটি দেখায় এবং তারপরে সবকিছু উপরের পোস্টগুলিতে বর্ণিত হিসাবে কাজ করে।

আমি ভাবছি কিছু প্রাথমিক কীচেনের আচরণ সিংহটিতে পরিবর্তিত হয়েছে, বা আমি কিছু অনুপস্থিত?


আমি সিংহের একটি "পরিষ্কার" ইনস্টল উপরের পদক্ষেপগুলি সম্পাদন করেছি, সুতরাং আপনি ঝাঁপ দেওয়ার আগে সম্ভবত সুরক্ষার কোনও সমস্যা ছিল? আরেকটি সম্ভাবনা হ'ল আমি প্রাথমিকভাবে পোস্ট করার পর থেকেই কোনও সুরক্ষা / ওএস এক্স আপডেট হয়েছে?
edelaney05

0

আমি কোম্পানির জন্য ব্যক্তিগত এবং সরকারী কী কীচেইনে যুক্ত করেছি। আমি যে উত্পাদনটি নির্মাণ করব তার বিধানের প্রোফাইল যুক্ত করেছি।

যেহেতু এই ব্যবহারকারীর একটি অ্যাকাউন্ট নেই আমি আমার অ্যাকাউন্টের সাথে ডিভেনসটারে লগইন করেছি। প্রভিশনের শংসাপত্রগুলি ডাউনলোড করে সেগুলি এক্সকোডে লোড করে।

আমি বিল্ড রোল অ্যাকাউন্টের জন্য বিশেষত কোনও শংসাপত্র যোগ করিনি, প্রাক্তন। Jenkins।

আমি এটি বিল্ড স্ক্রিপ্টে যুক্ত করেছি: সুরক্ষা আনলক-কীচেন -p মাইসেক্রেটপ্যাসওয়ার্ড উপরে হিসাবে, তবে ...

আমি একটি ফাইল তৈরি করেছি। / .Ssh / mypass এবং ফাইলটিতে পাসওয়ার্ড যুক্ত করেছি।

তারপরে কমান্ডটি হয়ে যায়: সুরক্ষা আনলক-কীচেন -p cat ~/.ssh/mypass

বিল্ডস চ্যাম্পের মতো কাজ করছে। আমি আইপা ফাইলটি পেয়েছি, এটি অ্যাপ্লিকেশন কেন্দ্রীয়তে লোড হয় এবং ডিভাইসে কাজ করে।


0

জেমকিনসিসিআইকে ডিমনের পরিবর্তে ওএস এক্স ব্যবহারকারী হিসাবে ইনস্টল ও চালু করতে পারে:

  1. অফিসিয়াল ইনস্টলার ব্যবহার করে জেনকিন ইনস্টল করুন ( https://jenkins-ci.org/ )
    • পরবর্তী ক্লিক করুন
    • "কাস্টমাইজ" ক্লিক করুন
    • "জেনকিনস হিসাবে বুট শুরু করুন" নির্বাচন করুন - * গুরুত্বপূর্ণ * এই বিকল্পটি সাধারণত একটি হেডলেস জিনকিনকে অনুমতি দেয় যা কীচেন অ্যাক্সেসের সাথে ভালভাবে কাজ করে না allows
  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 লগ ইন করার চেষ্টা করুন আপনার সুরক্ষা প্রশ্নগুলি আপডেট ।

এটা আমাকে সাহায্য করেছে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.