আমি কীভাবে স্থানীয়ভাবে জেনকিনসফাইলে করা একটি পরিবর্তন পরীক্ষা করতে পারি?


210

জেনকিনস পাইপলাইনগুলি লেখার সময় প্রতিটি নতুন পরিবর্তন প্রতিশ্রুত করা খুব অসুবিধার বলে মনে হচ্ছে এটি কাজ করে কিনা তা দেখার জন্য।

কোড ব্যতীত স্থানীয়ভাবে এগুলি কার্যকর করার কোনও উপায় আছে কি?

উত্তর:


139

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

আপনি যদি Jenkinsfileলাইভ পরিবর্তনের পরিবর্তে এটি প্রতিশ্রুতি না দিয়ে পরীক্ষা করতে চান তবে 1.14-এ যুক্ত রিপ্লে বৈশিষ্ট্যটি ব্যবহার করুন

জেনকিনস -৩৩৯২৫ একটি স্বয়ংক্রিয় পরীক্ষার কাঠামোর জন্য পছন্দসই ট্র্যাক করে।


ব্লগ পোস্ট বলছে একটি 'রিপ্লে' বোতাম আছে। কোন ধারণা কোথায়? আমি এটি সনাক্ত করতে পারে বলে মনে হচ্ছে না।
বোল্টজমানব্রেন

8
@ বল্টজম্যান ব্রেন, আপনার বিল্ড জবের জেনকিন্স পৃষ্ঠায় যান। বাম দিকে আপনি আগের বিল্ড রানগুলির তালিকাটি দেখতে হবে। আপনি যখন বিল্ড রান আইডি (উদাঃ "# 123") বা বিল্ড রানের তারিখের উপরে ঘুরে বেড়ান, তখন কিছুটা নীচে তীর প্রদর্শিত হবে। এটিতে ক্লিক করা একটি প্রসঙ্গ মেনু প্রকাশ করে যা "রিপ্লে" বিকল্প রয়েছে। বিকল্পটি বিল্ড রানের পৃষ্ঠায়ও পাওয়া যায়।
ভাল নাইট নার্ড গর্ব

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

2
আপনি যা খুঁজছেন তা সরবরাহ করার লক্ষ্যে আপনার এই প্রকল্পটির নজর থাকতে পারে ।
রোমেন


78

আমার একটি সমাধান রয়েছে যা আমার পক্ষে ভালভাবে কাজ করে। এটি প্রতিশ্রুতিবদ্ধভাবে স্থানীয় জেনকিনগুলিতে পাইপলাইন ট্রিগার করতে একটি স্থানীয় জেনকিনস এবং একটি গিট ওয়েব হুক নিয়ে গঠিত। পাইপলাইনটি পরীক্ষা করার জন্য আপনাকে আর আপনার গিথব বা বিটবাকেট সংগ্রহস্থলের দিকে ধাক্কা দেওয়ার দরকার নেই।

এটি কেবল একটি লিনাক্স পরিবেশে পরীক্ষা করা হয়েছে।

এই নির্দেশটি সামান্য দীর্ঘ হলেও এই কাজটি করা মোটামুটি সহজ। বেশিরভাগ পদক্ষেপ আছে।

এই আপনার প্রয়োজন

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

এইভাবে আপনি এটি করেন

জেনকিনস ডকার

আপনার পছন্দের জায়গায় ডকফাইফাইল নামে একটি ফাইল তৈরি করুন। আমি এটি /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 অভিযোগ।
এটিয়েন নেভু

1
আমি ম্যাক এ ত্রুটি পেয়েছি। কেউ কি আমাকে এই বিষয়ে সাহায্য করতে পারেন? >> ত্রুটি: ssh: হোস্টের সাথে সংযোগ করুন 172.17.0.1 পোর্ট 22: সংযোগ প্রত্যাখ্যান করেছে -
মনোজ শ্রেষ্ঠ

@ মনোজশ্রেষ্ঠ: আইপি 172.17.0.1 মেশিনটি ডক পাত্রে চালিত মেশিনের ডিফল্ট আইপি। পরিবর্তে আপনি আপনার মেশিনগুলি (ম্যাক: গুলি) আইপি ব্যবহার করতে পারেন।
জাভাবেংরিন্দর

@ মনোজশ্রেষ্ঠ: আপনি নিজের সেটআপের গেটওয়ে আইপি $ docker inspect jenkins | grep Gateway
এটির

2
যদি আপনার ডকার হোস্টটি ম্যাকোজে ইনস্টল করা থাকে এবং আপনি ডকারের ধারক থেকে এটিতে লগইন করতে চান ssh user@docker.for.mac.localhost তবে আইপি ঠিকানাটি ব্যবহার করার পরিবর্তে আপনার উচিত । এছাড়াও আপনি ম্যাকগুলি সিস্টেম পছন্দগুলি -> ভাগ করা ফোল্ডার মেনু
পাওলো অ্যাঞ্জিওলেটটি

60

টি এল; ডিআর

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

জেনকিনস পাইপলাইনগুলি বিকাশ করার সময় আপনার তিনটি পদক্ষেপ অনুসরণ করা উচিত। ধাপ 1 ব্যবহারসমূহ ক্ষেত্রে 80% ঢেকে রাখুক।

  1. স্ক্রিপ্টগুলি তৈরিতে যথাসম্ভব করুন (যেমন: মাভেন, গ্রেডল, গুল্প ইত্যাদি)। তারপরে আপনার পাইপলাইন স্ক্রিপ্টগুলিতে কেবল বিল্ড টাস্কগুলিকে সঠিক ক্রমে কল করুন। বিল্ড পাইপলাইন কেবল বিল্ড কার্যগুলিকে অর্কেস্টেট করে এবং সম্পাদন করে তবে একটি বিশেষ পরীক্ষার প্রয়োজন এমন কোনও বড় যুক্তি নেই।
  2. যদি পূর্ববর্তী নিয়মটি পুরোপুরি প্রয়োগ না করা যায় তবে আপনি পাইপলাইন ভাগ করে নেওয়া লাইব্রেরিতে চলে যান যেখানে আপনি নিজস্ব কাস্টম লজিক বিকাশ করতে পারেন এবং পাইপলাইনে সংহত করতে পারেন।
  3. উপরের সমস্তগুলি যদি আপনার ব্যর্থ হয়, আপনি সম্প্রতি (মার্চ -2017) প্রকাশিত সেই লাইব্রেরির একটিতে চেষ্টা করতে পারেন। জেনকিন্স পাইপলাইন ইউনিট টেস্টিং ফ্রেমওয়ার্ক বা pipelineUnit (উদাহরণ)। 2018 সাল থেকে জেনকিনসফাইল রানারও রয়েছে , একটি কমান্ড লাইন সরঞ্জাম থেকে জেনকিনস পাইপলাইনগুলি কার্যকর করার একটি প্যাকেজ।

উদাহরণ

PipelineUnit GitHub রেপো কিভাবে ব্যবহার করতে কিছু Spock উদাহরণ রয়েছে জেনকিন্স পাইপলাইন ইউনিট টেস্টিং ফ্রেমওয়ার্ক


1
আপনি কি এই দুটি গ্রন্থাগারের সংক্ষিপ্ত তুলনা অন্তর্ভুক্ত করতে পারেন?
সোমিন

23

জেনকিন্সের একটি 'রিপ্লে' বৈশিষ্ট্য রয়েছে, যা আপনাকে উত্স আপডেট না করে দ্রুত কোনও কাজ পুনরায় খেলতে সক্ষম করে:

রিপ্লে বৈশিষ্ট্য


1
নোট করুন যে এটি বিল্ড পৃষ্ঠায় প্রদর্শিত হবে, প্রকল্প বা শাখা পৃষ্ঠায় নয়।
আর্টঅফ ওয়ারফেয়ার

17

ব্লু মহাসাগর প্লাগইন সহ লেখার মুহুর্তে (জুলাই 2017 এর শেষের দিকে) আপনি ভিজ্যুয়াল পাইপলাইন সম্পাদকটিতে সরাসরি ঘোষিত পাইপলাইনটির বাক্য গঠনটি পরীক্ষা করতে পারেন । সম্পাদক, নীল মহাসাগর ইউআই থেকে কাজ করে যখন আপনি কেবল গিথুব প্রকল্পগুলির জন্য "কনফিগার করুন" ক্লিক করেন (এটি একটি পরিচিত সমস্যা এবং তারা এটিকে গিট ইত্যাদিতেও কাজ করার জন্য কাজ করছে)।

তবে, এই প্রশ্নে বর্ণিত হিসাবে আপনি সম্পাদককে ব্রাউজিংটি খুলতে পারেন:

[Jenkins URL]/blue/organizations/jenkins/pipeline-editor/

তারপরে পৃষ্ঠার মাঝখানে ক্লিক করুন এবং টিপুন Ctrl+S, এটি এমন একটি টেক্সারিয়া খুলবে যেখানে আপনি পাইপলাইন ঘোষণামূলক স্ক্রিপ্টটি পেস্ট করতে পারবেন। আপনি যখন আপডেটটিতে ক্লিক করেন , যদি কোনও সিনট্যাক্স ত্রুটি থাকে তবে সম্পাদক আপনাকে সিনট্যাক্স ত্রুটিটি কোথায় তা জানাতে দেয়। এই স্ক্রিনশটের মতো:

দ্রুত পরীক্ষা হিসাবে আমি ভুলভাবে "পদক্ষেপ" পরিবর্তে "স্টেপস" টাইপ করেছি

যদি কোনও সিনট্যাক্স ত্রুটি না থাকে তবে টেক্সারিয়া বন্ধ হয়ে যাবে এবং পৃষ্ঠাটি আপনার পাইপলাইনটি ভিজ্যুয়ালাইজ করবে। চিন্তা করবেন না যে এটি কোনও কিছুই সাশ্রয় করবে না (এটি যদি গিথুব প্রকল্প হয় তবে এটি জেনকিনসফাইলে পরিবর্তন আনবে)।

আমি জেনকিন্সে নতুন এবং এটি বেশ সহায়ক, এটি ছাড়া আমাকে বেশ কয়েকবার জেনকিনস্পাইল করতে হয়েছিল, যতক্ষণ না এটি কাজ করে (খুব বিরক্তিকর!)। আশাকরি এটা সাহায্য করবে. চিয়ার্স।


2
2017 সালের হিসাবে, জেনকিন্স এখনও পয়েন্ট-এন্ড-ক্লিক সফ্টওয়্যার ইঞ্জিনিয়ারদের সমস্যা সমাধানের লক্ষ্যে রয়েছে;) .... কমপক্ষে অ্যাটমের একটি শালীন গ্রোভি লাইন্টার রয়েছে। শুধুমাত্র গ্রোভি তবে এটি সাহায্য করে।
সোরিিন

সিনট্যাক্স হাইলাইট সহ সম্পাদকও ক্লাসিক জেনকিন্স ইউআইয়ের অংশ।
ভাদিমো

6

পার্টিতে কিছুটা দেরি হলেও সে কারণেই আমি লিখেছিলাম jenny, কিছু মূল জেনকিনসফিল পদক্ষেপের একটি ছোট্ট রিমিমিলিটেশন। ( https://github.com/bmustiata/jenny )


কোনও অপরাধ নয়, তবে আপনি যদি ক্রমাগত আপনার জিনিস আপডেট না করেন তবে পাইপলাইন সিনট্যাক্সটি ধ্রুবক অবস্থায় প্রবাহিত অবস্থায় থাকায় এটি বেশ অযথা হবে the মুহূর্তে এটি মনে হয়।
krad

অগৃহীত. আমি এতদূর কি দেখেছি, পাইপলাইন সিনট্যাক্স, এটা প্রায় কাছাকাছি মৌলিক পাইপলাইন পদক্ষেপ (জন্য মান হচ্ছে jenkins.io/doc/pipeline/steps/workflow-basic-steps )। আমি এখন পিছনে পিছনে অসামঞ্জস্যপূর্ণ পরিবর্তন না নিয়ে now 2 বছর ধরে এটি ব্যবহার করছি। জেনকিনস প্লাগইনগুলি imho ব্যবহার করা উচিত নয় এবং পরিবর্তিত এপিআই ভাগ করে নেওয়া লাইব্রেরিতে কাস্টম কমান্ড ব্যবহার করে বিমূর্ত করা যেতে পারে, যেখানে আপনার এপিআই গ্যারান্টি থাকবে। আপনি যদি ঘোষণামূলক বাক্য গঠন সম্পর্কে কথা বলছেন তবে এটি সত্য হতে পারে। আমি আমার পাইপলাইনগুলিতে কেবল প্রোগ্রাম্যাটিক এপিআই ব্যবহার করি এবং জেনি সমর্থন করে। রক সলিড :)
বোগদান.মুষ্টিয়াটা

5

আমি যতদূর জানি এই পাইপলাইন প্লাগইন হ'ল নতুন জিনকিনসফিল মেকানিক্সের "ইঞ্জিন", তাই আপনি স্থানীয়ভাবে আপনার স্ক্রিপ্টগুলি পরীক্ষা করতে এটি ব্যবহার করতে পারেন quite

আমি নিশ্চিত না যে আপনি যখন এটি জিনকিনসফাইলে অনুলিপি করছেন তখন কোনও অতিরিক্ত পদক্ষেপের প্রয়োজন আছে কিনা তবে বাক্য গঠন ঠিক একই রকম হওয়া উচিত।

সম্পাদনা: "ইঞ্জিন" এ রেফারেন্সটি খুঁজে পেয়েছে, এই বৈশিষ্ট্যটির বিবরণ, শেষ অনুচ্ছেদ, প্রথম এন্ট্রি পরীক্ষা করুন।


5

আমার বিকাশের সেটআপে - একটি সঠিক গ্রোভী সম্পাদক নিখোঁজ - জেনকিনসফিল ইস্যুগুলির একটি বিস্তর বিষয়টি সাধারণ বাক্য গঠন ত্রুটি থেকে উদ্ভূত । এই সমস্যাটি মোকাবেলা করার জন্য, আপনি জেনকিনসফাইলকে আপনার জেনকিন্সের উদাহরণের সাথে বৈধ করতে পারেন (এখানে চলছে $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 থেকে কিছুটা পরিবর্তিত সংস্করণ


4
এটি আমি যে ধরণের জিনিসটির সন্ধান করছিলাম এটিই - দুর্ভাগ্যক্রমে এটি কেবলমাত্র ঘোষিত পাইপলাইনের জন্য কাজ করে এবং স্ক্রিপ্টযুক্ত পাইপলাইনের জন্য নয় :(
থম_নিক ২

2

অন্যরা ইতিমধ্যে উল্লিখিত রিপ্লে বৈশিষ্ট্যটি বাদ দিয়ে (এর উপযোগিতার উপর ডেটো), আমি নীচেরগুলিকেও দরকারী বলে মনে করেছি:

  1. পাইপলাইনের একটি পরীক্ষা তৈরি করুন যেখানে আপনি পাইপলাইন কোড টাইপ করতে পারেন বা কোনও জেনকিনসফাইলে আপনার রেপো / শাখায় নির্দেশ করতে পারেন যাতে কিছু পরীক্ষা করতে পারে test আরও নির্ভুল পরীক্ষার জন্য, একটি মাল্টিব্র্যাঞ্চ পাইপলাইন ব্যবহার করুন যা আপনার নিজের কাঁটাতে ইঙ্গিত করে যেখানে আপনি দ্রুত পরিবর্তন করতে এবং প্রতিশ্রুতি ব্যতীত প্রতিশ্রুতিবদ্ধ করতে পারেন। BRANCH_NAME env এর মতো স্টাফ কেবল মাল্টব্রাঞ্চে উপলব্ধ।
  2. জেনকিনসফাইল যেহেতু গ্রোভি কোড, তাই বেসিক সিনট্যাক্সটি বৈধতা দেওয়ার জন্য কেবল এটি "গ্রোভি জেনকিনসফিল" দিয়ে অনুরোধ করুন।

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

1

আপনার জেনকিন্স প্রোফাইলে আপনার এসএসএইচ কীটি রাখুন, তারপরে ঘোষিত লিন্টারটি নীচে ব্যবহার করুন :

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}"
    }
  ]
}

0

আমি রিপ্লে ভবিষ্যত ব্যবহার করছি, কিছু আপডেট করতে এবং দ্রুত চালাতে।


1
আপনি কীভাবে এই কাজটি করেন সে সম্পর্কে আপনি আরও কিছু তথ্য সরবরাহ করতে পারেন?
kosnik

1
আমি সোর্স ম্যানেজার হিসাবে বিট-বালতি ব্যবহার করছি, তারপরে আমি জেনকিন্সের উপর একটি প্রকল্প তৈরি করেছি যা আমার সংগ্রহস্থলটি স্বয়ংক্রিয়ভাবে আবিষ্কার করতে পারে, আমি এই পোস্টটি সুপারিশ করি। আমার রেপোতে প্রতিটি ধাক্কা দেওয়ার পরে জেনকিনস স্বয়ংক্রিয়ভাবে আমার জেনকিন্স ফাইলটি খেলবে এবং যদি এটি ব্যর্থ হয় তবে বাম মেনুতে রিপ্লে নামক একটি বোতাম আছে, ==> এই বোতামটি আপনার জেনকিনস ফাইল যুক্ত একটি সম্পাদক খুলবে, আপনি এটি সম্পাদনা করতে এবং কাজটি পুনরায় খেলতে পারবেন ,
আহমেদদ্রিরা

0

কিছু সীমাবদ্ধতার সাথে এবং স্ক্রিপ্টযুক্ত পাইপলাইনগুলির জন্য আমি এই সমাধানটি ব্যবহার করি:

  1. একটি অন্তর্নিহিত গ্রোভি স্ক্রিপ্ট সহ পাইপলাইন কাজ:

node('master') {
    stage('Run!') {
                def script = load('...you job file...')
    }
}

  1. পরীক্ষার জন্য জেনকিনসফাইলে লেসফুরেটের মতো কাঠামো রয়েছে:

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