সারসংক্ষেপ:
ওএস এক্স-এ জেনকিনস সেটআপ করা সাম্প্রতিকতম ইনস্টলারটির মাধ্যমে ( 1.449 - মার্চ 9, 2012 ) সাথে উল্লেখযোগ্যভাবে সহজ করা হয়েছে , তবে কোড স্বাক্ষরের প্রক্রিয়া পরিচালনা করা কোনও সহজ উত্তর না দিয়ে এখনও খুব কঠিন।
প্রেরণা:
একটি হেডলেস সিআই সার্ভার চালান যা ওএস এক্সে পরিষেবা চালানোর জন্য সাধারণ সর্বোত্তম অনুশীলনগুলি অনুসরণ করে ( যার কয়েকটি এখানে সরল ভাষায় ব্যাখ্যা করা হয়েছে )।
পটভূমি:
- 12 ই অক্টোবর, 2009 - আপনার আইফোন অ্যাপটি কীভাবে হডসনের সাথে বিল্ড হয় সেটিকে স্বয়ংক্রিয় করবেন
- 15 ই জুন, 2011 - ম্যাক ওএস এক্সে জেনকিনস; গিট ডাব্লু / এসএস পাবলিক কী
- জুন 23, 2011 - জেনকিন্স এবং টেস্টফ্লাইটের সাথে আইওএস অ্যাপগুলির অবিচ্ছিন্ন মোতায়েন
- জুলাই 26, 2011 - আইওএস এবং ম্যাক বিকাশের জন্য ধারাবাহিক সংহত হিসাবে জেনকিনস / হাডসনকে ব্যবহার করার সময় কীচেইনে শংসাপত্র এবং কীগুলি হারিয়েছে
- আগস্ট 30, 2011 - জেনকিন্সের সাথে এক্সকোড বিধান ফাইল পাওয়া যায় নি
- সেপ্টেম্বর 20, 2011 - একটি ম্যাক এ জেনকিনস সিআই কীভাবে সেট আপ করবেন
- সেপ্টেম্বর 14, 2011 - জেনকিন্স একটি ম্যাকের সাথে চলছে
- নভেম্বর 12, 2011 - হাটো: ওএস এক্সে জেনকিনগুলি ইনস্টল করুন এবং এটি ম্যাক স্টাফ তৈরি করুন
- 23 জানুয়ারী, 2012 - আসন্ন জেনকিনস ওএসএক্স ইনস্টলার পরিবর্তন
- মার্চ 7, 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জিনকিন্স ব্যবহারকারী হিসাবে লগ ইন করতে এবং ব্যাশ প্রম্পট পেতে ব্যবহার করতে পারেন।
sudo su jenkinscd ~/Librarymkdir Keychainscd Keychainssecurity create-keychain <keychain-name>.keychainsecurity default-keychain -s <keychain-name>.keychain
ঠিক আছে, খুবই ভাল. আমরা এখন একটি ডিফল্ট কীচেন পেয়েছি; আসুন ডানদিকে? তবে, প্রথমে আমরা কেন একটি ডিফল্ট কীচেন তৈরি করতে বিরক্ত করেছিলাম?
গবেষণার সময় আমি যে প্রায় সমস্ত উত্তর, পরামর্শ বা কথোপকথন পড়েছি সেগুলি থেকে বোঝা যায় যে কেবলমাত্র তাদের কোড স্বাক্ষরকারী শংসাপত্র এবং কীগুলি সিস্টেম কীচেইনে প্রবেশ করতে হবে। যদি আপনি security list-keychainsজেনকিনসে একটি ফ্রি-স্টাইল প্রকল্প হিসাবে চালান , আপনি দেখতে পাবেন যে একমাত্র কীচেইন উপলভ্য হ'ল সিস্টেম কীচেন; আমি মনে করি সেখানেই বেশিরভাগ লোকেরা তাদের শংসাপত্র এবং কীটি সেখানে রাখার ধারণা নিয়ে এসেছিল। তবে, এটি খুব খারাপ ধারণার মতোই মনে হচ্ছে - বিশেষত প্রদত্ত যে আপনাকে কীচেইন খোলার জন্য পাসওয়ার্ড সহ একটি সাধারণ পাঠ্য স্ক্রিপ্ট তৈরি করতে হবে ।
সমস্যা 2: কোড স্বাক্ষরকারী শংসাপত্র এবং ব্যক্তিগত কী যুক্ত করা
এখান থেকেই আমি সত্যই কৃপণ হওয়া শুরু করি। আমার মনে খুব খারাপ লাগছে যে জেনকিন্সের সাথে ব্যবহারের জন্য আমার কাছে একটি নতুন পাবলিক / প্রাইভেট কী তৈরি করা উচিত। আমার চিন্তার প্রক্রিয়াটি হ'ল যদি জেনকিনস ডিমন আপোস করা হয়, তবে আমি সহজেই অ্যাপলের প্রভিশনিং পোর্টালে শংসাপত্রটি প্রত্যাহার করতে পারি এবং অন্য কোনও পাবলিক / প্রাইভেট কী তৈরি করতে পারি। আমি যদি আমার ব্যবহারকারীর অ্যাকাউন্ট এবং জেনকিন্সের জন্য একই কী এবং শংসাপত্র ব্যবহার করি তবে জেনকিনস পরিষেবাটিতে আক্রমণ করা থাকলে এর অর্থ আরও ঝামেলা (ক্ষতি?)।
সাইমন আরবানেকের উত্তরের দিকে ইঙ্গিত করে আপনি একটি সরল পাঠ্য পাসওয়ার্ড সহ স্ক্রিপ্ট থেকে কীচেইনটি আনলক করবেন be জেনকিনস ডেমনের কীচেইনে "ডিসপোজযোগ্য" শংসাপত্র এবং কীগুলি বাদে অন্য কোনও কিছু রাখা বেআইনী বলে মনে হয়।
আমি বিপরীতে যে কোনও আলোচনায় খুব আগ্রহী। আমি কি খুব বেশি সতর্ক হই?
টার্মিনালের জেনকিনস ডেমন হিসাবে একটি নতুন সিএসআর তৈরি করতে আমি নিম্নলিখিতটি করেছি ...
sudo su jenkinscerttool r CertificateSigningRequest.certSigningRequestআপনাকে নিম্নলিখিতগুলির জন্য অনুরোধ করা হবে (এর মধ্যে বেশিরভাগ আমি সঠিক উত্তরে শিক্ষিত অনুমান করেছি; আপনার কি আরও ভাল অন্তর্দৃষ্টি আছে? দয়া করে ভাগ করুন।) ...- কী এবং শংসাপত্রের লেবেল প্রবেশ করান:
- অ্যালগরিদম নির্বাচন করুন:
r(আরএসএর জন্য) - বিটগুলিতে কী আকারটি প্রবেশ করান:
2048 - স্বাক্ষর অ্যালগরিদম নির্বাচন করুন:
5(এমডি 5 এর জন্য) - চ্যালেঞ্জের স্ট্রিং প্রবেশ করান:
- তারপরে আরডিএন এর জন্য একগুচ্ছ প্রশ্ন
- নতুন অ্যাপল আইডির অধীনে জেনারেটেড সিএসআর ফাইল (সার্টিফিকেটসাইনিংরেইকুয়েস্ট.সিসিটিং সিংগাইরেস্ট) অ্যাপলের প্রভিশনিং পোর্টালে জমা দিন
- অনুরোধটি অনুমোদন করুন এবং .cer ফাইলটি ডাউনলোড করুন
security unlock-keychainsecurity add-certificate ios_development.cer
এটি আমাদের এক ধাপ নিকটে নিয়ে যায় ...
সমস্যা 3: প্রোভিজিং প্রোফাইল এবং কীচেইন আনলক করা
আমি সিআইয়ের সাথে কেবলমাত্র সিআইয়ের সাথে ব্যবহারের জন্য প্রভিশনিং পোর্টালে একটি বিশেষ প্রভিশিং প্রোফাইল তৈরি করেছিলাম যে কোনও খারাপ কিছু ঘটলে আমি প্রভাবটি কিছুটা ছোট করেছি। সেরা অনুশীলন বা অত্যধিক সতর্ক?
sudo su jenkinsmkdir ~/Library/MobileDevicemkdir ~/Library/MobileDevice/Provisioning\ Profiles- প্রভিশনিং পোর্টালে আপনি যে প্রভিশন প্রোফাইল সেটআপ করেছেন তাকে এই নতুন ফোল্ডারে সরান। কমান্ড লাইন থেকে জেনকিনস হিসাবে এক্সকোডবিল্ড চালাতে সক্ষম হওয়া থেকে আমরা এখন দুটি ছোট পদক্ষেপ দূরে রয়েছি এবং এর অর্থ আমরা জেনকিনস সিআই চলমান বিল্ডগুলি পেতে সক্ষম হওয়ার কাছাকাছি এসেছি।
security unlock-keychain -p <keychain password>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 শুভকামনা!
