উত্তর:
আপনি পাইপলাইন স্ক্রিপ্ট স্থানীয়ভাবে চালাতে পারবেন না, কারণ এর পুরো উদ্দেশ্য জেনকিন্সকে স্ক্রিপ্ট করা। ( Jenkinsfile
যা আসলে আপনার জেনকিন্স বৈশিষ্ট্যগুলির সাথে সম্পর্কিত কোডের মধ্যে সংক্ষিপ্ত এবং সীমাবদ্ধ রাখা সবচেয়ে ভাল কারণ তার ; আপনার আসল বিল্ড যুক্তিটি বহিরাগত প্রক্রিয়াগুলির সাথে পরিচালনা করা উচিত বা আপনি কোনও এক-লাইন sh
বা bat
পদক্ষেপের মাধ্যমে অনুরোধ করেন এমন সরঞ্জামগুলি তৈরি করতে হবে ))
আপনি যদি Jenkinsfile
লাইভ পরিবর্তনের পরিবর্তে এটি প্রতিশ্রুতি না দিয়ে পরীক্ষা করতে চান তবে 1.14-এ যুক্ত রিপ্লে বৈশিষ্ট্যটি ব্যবহার করুন
জেনকিনস -৩৩৯২৫ একটি স্বয়ংক্রিয় পরীক্ষার কাঠামোর জন্য পছন্দসই ট্র্যাক করে।
আমার একটি সমাধান রয়েছে যা আমার পক্ষে ভালভাবে কাজ করে। এটি প্রতিশ্রুতিবদ্ধভাবে স্থানীয় জেনকিনগুলিতে পাইপলাইন ট্রিগার করতে একটি স্থানীয় জেনকিনস এবং একটি গিট ওয়েব হুক নিয়ে গঠিত। পাইপলাইনটি পরীক্ষা করার জন্য আপনাকে আর আপনার গিথব বা বিটবাকেট সংগ্রহস্থলের দিকে ধাক্কা দেওয়ার দরকার নেই।
এটি কেবল একটি লিনাক্স পরিবেশে পরীক্ষা করা হয়েছে।
এই নির্দেশটি সামান্য দীর্ঘ হলেও এই কাজটি করা মোটামুটি সহজ। বেশিরভাগ পদক্ষেপ আছে।
আপনার পছন্দের জায়গায় ডকফাইফাইল নামে একটি ফাইল তৈরি করুন। আমি এটি /opt/docker/jenkins/Dockerfile
পূরণ করে এটি রাখছি :
FROM jenkins/jenkins:lts
USER root
RUN apt-get -y update && apt-get -y upgrade
# Your needed installations goes here
USER jenkins
স্থানীয়_জেনকিনস চিত্রটি তৈরি করুন
এটি আপনাকে ডকফাইফাইলে কিছু যুক্ত করার পরে কেবল একবার বা করার দরকার হবে।
$ docker build -t local_jenkins /opt/docker/jenkins/
স্থানীয়_জেনকিনগুলি শুরু করুন এবং পুনরায় চালু করুন
সময়ে সময়ে আপনি খুব সহজেই জিনকিনগুলি শুরু করতে এবং পুনরায় চালু করতে চান। যেমন আপনার মেশিনটি রিবুট করার পরে। এটির জন্য আমি একটি উপনাম তৈরি করেছি যা আমি .bash_aliases
আমার হোম ফোল্ডারে রেখেছি।
$ echo "alias localjenkinsrestart='docker stop jenkins;docker rm jenkins;docker run --name jenkins -i -d -p 8787:8080 -p 50000:50000 -v /opt/docker/jenkins/jenkins_home:/var/jenkins_home:rw local_jenkins'" >> ~/.bash_aliases
$ source .bash_aliases # To make it work
নিশ্চিত হয়ে নিন যে /opt/docker/jenkins/jenkins_home
ফোল্ডারটি বিদ্যমান এবং আপনার এতে ব্যবহারকারীর পড়া এবং লেখার অধিকার রয়েছে।
আপনার জেনকিনগুলি শুরু করতে বা পুনরায় চালু করতে কেবল টাইপ করুন:
$ localjenkinsrestart
আপনার স্থানীয় জেনকিনগুলিতে আপনি যা কিছু করেন তা ফোল্ডারে / অপ্ট / ডকার / জেনকিনস / জেনকিন_হোমে সংরক্ষণ করা হবে এবং পুনরায় আর্টের মধ্যে সংরক্ষণ করা হবে।
আপনার ডকার জেনকিন্সে একটি এসএসএস অ্যাক্সেস কী তৈরি করুন
এটি কাজ করার জন্য এটি একটি খুব গুরুত্বপূর্ণ অংশ। প্রথমে আমরা ডকারের ধারকটি শুরু করি এবং এটিতে একটি ব্যাশ শেল তৈরি করি:
$ localjenkinsrestart
$ docker exec -it jenkins /bin/bash
আপনি এখন ডকার পাত্রে প্রবেশ করেছেন, এটি আপনি jenkins@e7b23bad10aa:/$
আপনার টার্মিনালের মতো কিছু দ্বারা দেখতে পাবেন । @ উইলের পরে হ্যাশ অবশ্যই পৃথক হবে।
কী তৈরি করুন
jenkins@e7b23bad10aa:/$ ssh-keygen
আপনি প্রম্পটটি ফিরে না পাওয়া পর্যন্ত সমস্ত প্রশ্নের সন্ধান করুন enter
আপনার কম্পিউটারে কীটি অনুলিপি করুন। ডকারের ধারক থেকে আপনার কম্পিউটারটি 172.17.0.1 হয় কি ভাবতে হবে।
jenkins@e7b23bad10aa:/$ ssh-copy-id user@172.17.0.1
ব্যবহারকারী = আপনার ব্যবহারকারীর নাম এবং 172.17.0.1 ডকারের ধারক থেকে আপনার কম্পিউটারের আইপি ঠিকানা।
এই মুহুর্তে আপনাকে আপনার পাসওয়ার্ড টাইপ করতে হবে।
এখন ডকারের ধারক থেকে আপনার কম্পিউটারে এস-এস-ইন করে লুপটি সম্পূর্ণ করার চেষ্টা করতে দিন।
jenkins@e7b23bad10aa:/$ ssh user@172.17.0.1
এবার আপনাকে পাসওয়ার্ড দেওয়ার দরকার নেই। আপনি যদি করেন তবে কিছু ভুল হয়েছে এবং আপনাকে আবার চেষ্টা করতে হবে।
আপনি এখন আপনার কম্পিউটারের হোম ফোল্ডারে থাকবেন। চেষ্টা করে ls
দেখুন look
আমাদের এখানে স্টেশ শেলের একটি চেইন রয়েছে যা থেকে আমাদের বেরিয়ে আসা দরকার।
$ exit
jenkins@e7b23bad10aa:/$ exit
রাইট! এখন আমরা ফিরে এসেছি এবং চালিয়ে যাওয়ার জন্য প্রস্তুত।
আপনার জেনকিনস ইনস্টল করুন
আপনি আপনার ব্রাউজারে http: // লোকালহোস্ট: 8787 এ আপনার স্থানীয় জেনকিন্স পাবেন ।
প্রথমবার আপনি যখন আপনার ব্রাউজারটি আপনার স্থানীয় জেনকিন্সের দিকে দেখান আপনার ইন্সটলেশন উইজার্ড দিয়ে গ্রেটেড করা হবে। ডিফল্টগুলি ঠিক আছে, যদিও সেটআপের সময় আপনি পাইপলাইন প্লাগইনটি ইনস্টল করেছেন তা নিশ্চিত করুন।
আপনার জিনকিনস সেটআপ করুন
আপনি http: // লোকালহোস্ট: 8787 / কনফিগারসিকিউটিতে ম্যাট্রিক্স ভিত্তিক সুরক্ষা সক্রিয় করা খুব গুরুত্বপূর্ণ এবং নিজেকে ম্যাট্রিক্সে যুক্ত করে সমস্ত বাক্সগুলি টিক দিন এবং সমস্ত বাক্সগুলিকে টিক দিন। (এখানে ডানদিকে টিক-অল-বাক্সের আইকন রয়েছে)
Jenkins’ own user database
সুরক্ষা ক্ষেত্র হিসাবে নির্বাচন করুনMatrix-based security
অনুমোদন বিভাগে নির্বাচন করুনUser/group to add:
এবং [ Add ]
বোতামে ক্লিক করুনPrevent Cross Site Request Forgery exploits
করা নেই। (যেহেতু এই জিনকিন্স কেবল আপনার কম্পিউটার থেকে পৌঁছতে পারে এটি এত বড় ব্যাপার নয়)[ Save ]
জেনকিন্স থেকে ক্লিক করুন এবং লগ আউট করুন এবং এটি কার্যকর হয়েছে তা নিশ্চিত করার জন্য আবার লগ ইন করুন ।
যদি এটি না হয় তবে আপনাকে /opt/docker/jenkins/jenkins_home
পুনরায় আরম্ভ করার আগে ফোল্ডারটি শুরু থেকে শুরু করতে হবে এবং খালি করতে হবেগিট ব্যবহারকারী যুক্ত করুন
আমাদের গিট হুককে ন্যূনতম অধিকার সহ আমাদের স্থানীয় জেনকিন্সে লগইন করার অনুমতি দেওয়া দরকার। শুধু কাজগুলি দেখার এবং গড়ে তোলার জন্য যথেষ্ট। অতএব আমরা git
পাসওয়ার্ড সহ একটি ব্যবহারকারী তৈরি করি login
।
আপনার ব্রাউজারটিকে HTTP: // লোকালহোস্ট: 8787 / সিকিউরিটিআলম / অ্যাড ইউজারে নির্দেশ দিন এবং git
ব্যবহারকারীর নাম এবং login
পাসওয়ার্ড হিসাবে যুক্ত করুন। ক্লিক করুন [ Create User ]
।
গিট ব্যবহারকারীর জন্য অধিকার যুক্ত করুন
যান 8787 / configureSecurity করুন: http: // স্থানীয় হোস্ট আপনার ব্রাউজারে পাতা। গিট ব্যবহারকারীকে ম্যাট্রিক্সে যুক্ত করুন:
git
ক্ষেত্রে লিখুন User/group to add:
এবং ক্লিক করুন[ Add ]
এখন গিট ব্যবহারকারীর ন্যূনতম অধিকারের জন্য বাক্সগুলি পরীক্ষা করার সময়। শুধুমাত্র এগুলি প্রয়োজন:
Prevent Cross Site Request Forgery exploits
চেকবক্সটি চেক না করা হয়েছে তা নিশ্চিত হয়ে ক্লিক করুন[ Save ]
আমরা ধরে নিই যে user
আমাদের ব্যবহারকারীর নাম রয়েছে এবং এতে আমাদের গিট সক্ষম প্রকল্প রয়েছে যার Jenkinsfile
মধ্যে এটি বলা হয় project
এবং এটি অবস্থিত/home/user/projects/project
আপনার HTTP: // লোকালহোস্টে: 8787 জেনকিন্স একটি নতুন পাইপলাইন প্রকল্প যুক্ত করেছে। আমি রেফারেন্সের জন্য এর নামকরণ করেছি হুকপাইপলাইন।
New Item
জেনকিনস মেনুতে ক্লিক করুনhookpipeline
[ OK ]
Poll SCM
বিল্ড ট্রিগার বিভাগে চেকবক্সটি টিক দিন । তফসিলটি খালি ছেড়ে দিন।Pipeline script from SCM
Repository URL
ক্ষেত্র লিখুনuser@172.17.0.1:projects/project/.git
Script Path
ক্ষেত্র লিখুনJenkinsfile
/home/user/projects/project/.git/hooks
ফোল্ডারে যান এবং একটি ফাইল তৈরি করুন post-commit
যা এতে রয়েছে:
#!/bin/sh
BRANCHNAME=$(git rev-parse --abbrev-ref HEAD)
MASTERBRANCH='master'
curl -XPOST -u git:login http://localhost:8787/job/hookpipeline/build
echo "Build triggered successfully on branch: $BRANCHNAME"
এই ফাইলটি সম্পাদনযোগ্য করুন:
$ chmod +x /home/user/projects/project/.git/hooks/post-commit
প্রতিশ্রুতি পোস্ট হুক পরীক্ষা করুন:
$ /home/user/projects/project/.git/hooks/post-commit
আপনার হুকপিপলাইন প্রকল্পটি ট্রিগার করা হয়েছিল কিনা তা জেনকিন্সে পরীক্ষা করে দেখুন।
অবশেষে আপনার প্রকল্পে কিছু ইচ্ছামত পরিবর্তন করুন, পরিবর্তনগুলি যুক্ত করুন এবং একটি প্রতিশ্রুতিবদ্ধ করুন। এটি এখন আপনার স্থানীয় জেনকিনসে পাইপলাইনটি ট্রিগার করবে।
সুখের দিনগুলি!
docker build -t local_jenkins /opt/docker/jenkins/Dockerfile
সঙ্গে docker build -t local_jenkins /opt/docker/jenkins
": প্রসঙ্গ একটি ডিরেক্টরি হতে হবে প্রেক্ষাপটে প্রস্তুত করতে অক্ষম" কারণ Docker অভিযোগ।
$ docker inspect jenkins | grep Gateway
ssh user@docker.for.mac.localhost
তবে আইপি ঠিকানাটি ব্যবহার করার পরিবর্তে আপনার উচিত । এছাড়াও আপনি ম্যাকগুলি সিস্টেম পছন্দগুলি -> ভাগ করা ফোল্ডার মেনু
টি এল; ডিআর
দীর্ঘ সংস্করণ
জেনকিনস পাইপলাইন পরীক্ষা আরও বেশি করে ব্যথা হয়ে যায় a ক্লাসিক ঘোষিত কাজের কনফিগারেশন পদ্ধতির বিপরীতে যেখানে ইউআই নতুন জেনকিনস পাইপলাইনটিকে উন্মুক্ত করেছিল তার মধ্যে সীমাবদ্ধ ছিল বিল্ড প্রক্রিয়াটির জন্য একটি পূর্ণাঙ্গ প্রোগ্রামিং ল্যাঙ্গুয়েজ যেখানে আপনি নিজের কোডের সাথে ঘোষণামূলক অংশটি মেশান। ভাল বিকাশকারী হিসাবে আমরা এই ধরণের কোডের জন্য কিছু ইউনিট পরীক্ষাও করতে চাই।
জেনকিনস পাইপলাইনগুলি বিকাশ করার সময় আপনার তিনটি পদক্ষেপ অনুসরণ করা উচিত। ধাপ 1 ব্যবহারসমূহ ক্ষেত্রে 80% ঢেকে রাখুক।
উদাহরণ
PipelineUnit GitHub রেপো কিভাবে ব্যবহার করতে কিছু Spock উদাহরণ রয়েছে জেনকিন্স পাইপলাইন ইউনিট টেস্টিং ফ্রেমওয়ার্ক
জেনকিন্সের একটি 'রিপ্লে' বৈশিষ্ট্য রয়েছে, যা আপনাকে উত্স আপডেট না করে দ্রুত কোনও কাজ পুনরায় খেলতে সক্ষম করে:
ব্লু মহাসাগর প্লাগইন সহ লেখার মুহুর্তে (জুলাই 2017 এর শেষের দিকে) আপনি ভিজ্যুয়াল পাইপলাইন সম্পাদকটিতে সরাসরি ঘোষিত পাইপলাইনটির বাক্য গঠনটি পরীক্ষা করতে পারেন । সম্পাদক, নীল মহাসাগর ইউআই থেকে কাজ করে যখন আপনি কেবল গিথুব প্রকল্পগুলির জন্য "কনফিগার করুন" ক্লিক করেন (এটি একটি পরিচিত সমস্যা এবং তারা এটিকে গিট ইত্যাদিতেও কাজ করার জন্য কাজ করছে)।
তবে, এই প্রশ্নে বর্ণিত হিসাবে আপনি সম্পাদককে ব্রাউজিংটি খুলতে পারেন:
[Jenkins URL]/blue/organizations/jenkins/pipeline-editor/
তারপরে পৃষ্ঠার মাঝখানে ক্লিক করুন এবং টিপুন Ctrl+S
, এটি এমন একটি টেক্সারিয়া খুলবে যেখানে আপনি পাইপলাইন ঘোষণামূলক স্ক্রিপ্টটি পেস্ট করতে পারবেন। আপনি যখন আপডেটটিতে ক্লিক করেন , যদি কোনও সিনট্যাক্স ত্রুটি থাকে তবে সম্পাদক আপনাকে সিনট্যাক্স ত্রুটিটি কোথায় তা জানাতে দেয়। এই স্ক্রিনশটের মতো:
যদি কোনও সিনট্যাক্স ত্রুটি না থাকে তবে টেক্সারিয়া বন্ধ হয়ে যাবে এবং পৃষ্ঠাটি আপনার পাইপলাইনটি ভিজ্যুয়ালাইজ করবে। চিন্তা করবেন না যে এটি কোনও কিছুই সাশ্রয় করবে না (এটি যদি গিথুব প্রকল্প হয় তবে এটি জেনকিনসফাইলে পরিবর্তন আনবে)।
আমি জেনকিন্সে নতুন এবং এটি বেশ সহায়ক, এটি ছাড়া আমাকে বেশ কয়েকবার জেনকিনস্পাইল করতে হয়েছিল, যতক্ষণ না এটি কাজ করে (খুব বিরক্তিকর!)। আশাকরি এটা সাহায্য করবে. চিয়ার্স।
পার্টিতে কিছুটা দেরি হলেও সে কারণেই আমি লিখেছিলাম jenny
, কিছু মূল জেনকিনসফিল পদক্ষেপের একটি ছোট্ট রিমিমিলিটেশন। ( https://github.com/bmustiata/jenny )
আমি যতদূর জানি এই পাইপলাইন প্লাগইন হ'ল নতুন জিনকিনসফিল মেকানিক্সের "ইঞ্জিন", তাই আপনি স্থানীয়ভাবে আপনার স্ক্রিপ্টগুলি পরীক্ষা করতে এটি ব্যবহার করতে পারেন quite
আমি নিশ্চিত না যে আপনি যখন এটি জিনকিনসফাইলে অনুলিপি করছেন তখন কোনও অতিরিক্ত পদক্ষেপের প্রয়োজন আছে কিনা তবে বাক্য গঠন ঠিক একই রকম হওয়া উচিত।
সম্পাদনা: "ইঞ্জিন" এ রেফারেন্সটি খুঁজে পেয়েছে, এই বৈশিষ্ট্যটির বিবরণ, শেষ অনুচ্ছেদ, প্রথম এন্ট্রি পরীক্ষা করুন।
আমার বিকাশের সেটআপে - একটি সঠিক গ্রোভী সম্পাদক নিখোঁজ - জেনকিনসফিল ইস্যুগুলির একটি বিস্তর বিষয়টি সাধারণ বাক্য গঠন ত্রুটি থেকে উদ্ভূত । এই সমস্যাটি মোকাবেলা করার জন্য, আপনি জেনকিনসফাইলকে আপনার জেনকিন্সের উদাহরণের সাথে বৈধ করতে পারেন (এখানে চলছে $JENKINS_HTTP_URL
):
curl -X POST -H $(curl '$JENKINS_HTTP_URL/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,":",//crumb)') -F "jenkinsfile=<Jenkinsfile" $JENKINS_HTTP_URL/pipeline-model-converter/validate
উপরের কমান্ডটি https://github.com/jenkinsci/pipline-model-definition-plugin/wiki/Validating-(or-linting)-a-Declarative-Jenkinsfile-from-the-command-line থেকে কিছুটা পরিবর্তিত সংস্করণ
অন্যরা ইতিমধ্যে উল্লিখিত রিপ্লে বৈশিষ্ট্যটি বাদ দিয়ে (এর উপযোগিতার উপর ডেটো), আমি নীচেরগুলিকেও দরকারী বলে মনে করেছি:
আপনার জেনকিন্স প্রোফাইলে আপনার এসএসএইচ কীটি রাখুন, তারপরে ঘোষিত লিন্টারটি নীচে ব্যবহার করুন :
ssh jenkins.hostname.here declarative-linter < Jenkinsfile
এটি আপনার জেনকিনসফাইলে স্থির বিশ্লেষণ করবে। আপনার পছন্দসই সম্পাদকটিতে, একটি কীবোর্ড শর্টকাট সংজ্ঞা দিন যা স্বয়ংক্রিয়ভাবে সেই আদেশটি চালায়। ভিজুয়াল স্টুডিও কোডে, যা আমি ব্যবহার করি তা কার্য> টাস্কগুলি কনফিগার করুন এ যান, তারপরে একটি বৈধ জেনকিনসফিল কমান্ড তৈরি করতে নিম্নলিখিত JSON ব্যবহার করুন :
{
"version": "2.0.0",
"tasks": [
{
"label": "Validate Jenkinsfile",
"type": "shell",
"command": "ssh jenkins.hostname declarative-linter < ${file}"
}
]
}
আমি রিপ্লে ভবিষ্যত ব্যবহার করছি, কিছু আপডেট করতে এবং দ্রুত চালাতে।
কিছু সীমাবদ্ধতার সাথে এবং স্ক্রিপ্টযুক্ত পাইপলাইনগুলির জন্য আমি এই সমাধানটি ব্যবহার করি:
node('master') {
stage('Run!') {
def script = load('...you job file...')
}
}
def execute() {
... main job code here ...
}
execute()