วิธีติดตั้งปลั๊กอินใน Jenkins ด้วยตนเอง


119

การติดตั้งปลั๊กอินจากศูนย์อัปเดตส่งผลให้:

การตรวจสอบการเชื่อมต่ออินเทอร์เน็ตไม่สามารถเชื่อมต่อ http://www.google.com/ บางทีคุณอาจต้องกำหนดค่าพร็อกซี HTTP? ปรับใช้ปลั๊กอินล้มเหลว - รายละเอียด hudson.util.IOException2: ไม่สามารถดาวน์โหลดจาก http://updates.jenkins-ci.org/download/plugins/deploy/1.9/deploy.hpi

เป็นไปได้หรือไม่ที่จะดาวน์โหลดปลั๊กอินและติดตั้งลงใน Jenkins ด้วยตนเอง

คำตอบ:


156

ใช่คุณสามารถ. ดาวน์โหลดปลั๊กอิน (ไฟล์ * .hpi) และวางไว้ในไดเร็กทอรีต่อไปนี้:

<jenkinsHome>/plugins/

หลังจากนั้นคุณจะต้องรีสตาร์ท Jenkins


7
วิธีนี้ไม่ได้ติดตั้งปลั๊กอินใด ๆ โดยอัตโนมัติซึ่งขึ้นอยู่กับปลั๊กอินที่กำลังติดตั้ง ด้วยเหตุนี้ฉันจึงไม่แนะนำและฉันไม่ลงคะแนนด้วยเหตุผลนี้ โปรดแจ้งให้เราทราบหากฉันเข้าใจผิดและฉันจะยกเลิกการลงคะแนน
Farrukh Najmi

8
หากคุณถูกบังคับให้ติดตั้งปลั๊กอินด้วยตนเอง (ไม่ว่าด้วยเหตุผลใดก็ตาม) ฉันไม่ทราบวิธีการอื่นใดที่จะดูแลการติดตั้งการอ้างอิงโดยอัตโนมัติเช่นกัน
Michael Küller

ฉันจะรู้ได้อย่างไรว่าบ้านของเจนกินส์อยู่ที่ไหน โดยใช้whereis jenkins?
Black

4
อย่างไรก็ตามฉันพบว่ามัน/var/lib/jenkinsมีปลั๊กอินมากมายอยู่แล้ว แต่ลงท้ายด้วย.jpiแทน.hpi. ฉันควรทำอย่างไรดี?
ดำ

3
Jenkins เปลี่ยนชื่อไฟล์ปลั๊กอินระหว่างการติดตั้งจาก. hpi เป็น. jpi ด้วยวิธีนี้จะสามารถตรวจพบปลั๊กอินใหม่เพื่อติดตั้งทับปลั๊กอินที่มีอยู่ ดูได้ที่นี่: stackoverflow.com/questions/30658375/…
Michael Küller

137
  1. ดาวน์โหลดปลั๊กอิน
  2. ภายใน Jenkins: จัดการ JenkinsManage Plugins →มีแท็บที่เรียกว่าAdvancedและในหน้านั้นมีตัวเลือกในการอัปโหลดปลั๊กอิน (นามสกุลของไฟล์ต้องเป็น hpi)

บางครั้งเมื่อคุณดาวน์โหลดปลั๊กอินคุณอาจได้รับไฟล์ (.zip) จากนั้นเพียงแค่เปลี่ยนชื่อด้วย (.hpi) และใช้ UI เพื่อติดตั้งปลั๊กอิน


4
ซึ่งน่าจะ "ปลอดภัยกว่า" กว่าstackoverflow.com/a/14953877/627806เนื่องจากจะผ่านส่วนหน้า
Jon Burgess

บางครั้งสิ่งนี้จำเป็นหาก Jenkins ไม่สามารถเริ่มทำงานได้เนื่องจากการกำหนดค่าปลั๊กอินผิดพลาด เช่นฉันต้องทำการติดตั้งด้วยตนเองเนื่องจากปัญหานี้
dskrvk

1
ฉันลองติดตั้งปลั๊กอินนี้เปลี่ยน zip เป็น hpi และพยายามอัปโหลดจากตัวเลือกขั้นสูงในจัดการปลั๊กอิน แต่มันให้ข้อผิดพลาดA problem occurred while processing the request. Please check our bug tracker to see if a similar problem has already been reported. If it is already reported, please vote and put a comment on it to let us gauge the impact of the problem. If you think this is a new issue, please file a new issue. When you file an issue, make sure to add the entire stack trace, along with the version of Jenkins and relevant plugins.

คุณพบปัญหาอะไร เราสามารถทราบข้อยกเว้นที่แท้จริงได้หรือไม่?
jfcorugedo

1
โปรดทราบว่ามีการ จำกัด ขนาดที่กำหนดโดย nginx (ดู: [ issue.jenkins-ci.org/browse/JENKINS-32575] ) ดังนั้นคุณอาจต้องเปลี่ยนการกำหนดค่า nginx หรืออัปโหลดด้วยตนเอง
Moshe Zvi

22

หากคุณใช้ Docker คุณควรอ่านไฟล์นี้: https://github.com/cloudbees/jenkins-ci.org-docker/blob/master/plugins.sh

ตัวอย่าง Dockerfile หลัก:

FROM jenkins
COPY plugins.txt /plugins.txt
RUN /usr/local/bin/plugins.sh /plugins.txt

plugins.txt

<name>:<version>
<name2>:<version2>

ฉันพยายามแก้ปัญหานี้สำหรับนักเทียบท่าและสะดุดกับคำตอบนี้ ใช้งานได้ดี!
muglio

ขึ้นอยู่กับวิธีการติดตั้งเจนกินส์ ในการติดตั้งของฉัน (apt-get install jenkins) ฉันไม่พบไฟล์ plugin.sh อย่างไรก็ตามถ้าเราเริ่มจาก FROM jenkins มันก็มีอยู่จริง
hadaytullah

โปรดทราบว่าคุณต้องรวมปลั๊กอินและการอ้างอิงทั้งหมดไว้ใน plugins.txt เนื่องจากจะไม่แก้ไขการอ้างอิงแบบทรานซิทีฟ ตัวอย่างเช่น blueocean มีการอ้างอิงมากกว่า 10 รายการคุณจะต้องรวมด้วยตนเองด้วย ..
code4cause

ฉันจะใช้วิธีนี้ได้อย่างไรเมื่อฉันใช้นักเทียบท่าหลังพร็อกซี plugins.shไม่สามารถติดตั้งปลั๊กอินได้หากไม่ได้กำหนดค่าพร็อกซีใน Jenkins และฉันไม่คิดว่าจะมีวิธีกำหนดค่าพร็อกซีใน Jenkins โดยใช้ Dockerfile
7_R3X

13

ฉันได้สร้างสคริปต์ง่ายๆที่ทำสิ่งต่อไปนี้:

  • ดาวน์โหลดปลั๊กอินอย่างน้อยหนึ่งรายการไปยังไดเร็กทอรีปลั๊กอิน
  • สแกนปลั๊กอินทั้งหมดในไดเร็กทอรีนั้นเพื่อหาการอ้างอิงที่ขาดหายไป
  • ดาวน์โหลดการอ้างอิงนี้ด้วย
  • วนซ้ำจนกว่าจะไม่เหลือการอ้างอิงที่เปิดอยู่

สคริปต์ไม่จำเป็นต้องรันเจนกินส์ - ฉันใช้มันเพื่อจัดเตรียมกล่องนักเทียบท่า

https://gist.github.com/micw/e80d739c6099078ce0f3


URL เสียในขณะนี้ คุณช่วยโพสต์สคริปต์ของคุณใหม่ได้ไหม
Charles Morin

11

อัปเดตสำหรับ Docker: ใช้สคริปต์install-plugins.sh ใช้รายชื่อปลั๊กอินลบนามสกุล '-plugin' ดูรายละเอียดที่นี่

install-plugins.sh แทนที่ plugins.sh ที่เลิกใช้แล้วซึ่งตอนนี้เตือน:

WARN: plugins.sh is deprecated, please switch to install-plugins.sh

หากต้องการใช้ plugins.txt ตาม plugins.sh โปรดดูปัญหานี้และวิธีแก้ปัญหานี้:

RUN /usr/local/bin/install-plugins.sh $(cat /usr/share/jenkins/plugins.txt | tr '\n' ' ')


10

บางครั้งเมื่อคุณดาวน์โหลดปลั๊กอินคุณอาจได้รับไฟล์ (.zip) จากนั้นเปลี่ยนชื่อด้วย (.hpi) จากนั้นแตกปลั๊กอินทั้งหมดแล้วย้ายไปที่<jenkinsHome>/plugins/ไดเร็กทอรี


5

ใช้https://updates.jenkins-ci.org/download/plugins/ ดาวน์โหลดจากที่เก็บการอัพเดตส่วนกลางสำหรับ Jenkins


4

คำตอบที่ยอมรับนั้นถูกต้อง แต่ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้งการอ้างอิงที่จำเป็นทั้งหมดด้วยเช่นกัน การติดตั้งโดยใช้ CLI หรือเว็บดูเหมือนจะดูแลเรื่องนี้ แต่ปลั๊กอินของฉันไม่ปรากฏในเบราว์เซอร์หรือใช้java -jar jenkins-cli.jar -s http://localhost:8080 list-pluginsจนกว่าฉันจะติดตั้งการอ้างอิงด้วย


1
ฉันได้สร้างส่วนสำคัญง่ายๆเพื่อแสดงรายการการอ้างอิงปลั๊กอินเวอร์ชันล่าสุดที่จำเป็นทั้งหมดจากเว็บ (สแกนแผนผังการ
Łukasz Wiatrak

2

ในกรณีของฉันฉันต้องติดตั้งปลั๊กอินไปยังเซิร์ฟเวอร์บิลด์ออฟไลน์ที่ใช้ Windows Server (เวอร์ชันจะไม่สำคัญที่นี่) ฉันติดตั้ง Jenkins บนแล็ปท็อปของฉันแล้วเพื่อทดสอบการเปลี่ยนแปลงล่วงหน้าและมันกำลังทำงานบน localhost: 8080 เป็นบริการ windows

ดังนั้นหากคุณยินดีที่จะใช้เวลาในการตั้งค่า Jenkins บนเครื่องที่มีการเชื่อมต่ออินเทอร์เน็ตและดำเนินการเปลี่ยนแปลงเหล่านี้ไปยังเซิร์ฟเวอร์ออฟไลน์เจนกินส์ (ได้ผลยืนยันโดยฉัน!) นี่คือขั้นตอนที่คุณสามารถปฏิบัติตาม:

  • Jenkins บนแล็ปท็อปของฉัน: เปิด Jenkins, http: // localhost: 8080
  • Navigator: จัดการ Jenkins | ดาวน์โหลดปลั๊กอินโดยไม่ต้องติดตั้งตัวเลือก
  • Windows Explorer: คัดลอกไฟล์ปลั๊กอินที่ดาวน์โหลดซึ่งอยู่ที่โฟลเดอร์ "c: \ program files (x86) \ Jenkins \ plugins (เช่น role-strategy.jpi)
  • วางลงในโฟลเดอร์ที่ใช้ร่วมกันในเซิร์ฟเวอร์ออฟไลน์
  • หยุดบริการเจนกินส์ (เซิร์ฟเวอร์ออฟไลน์เจนกินส์) ผ่านบริการคอมโพเนนต์บริการเจนกินส์
  • คัดลอกไฟล์ปลั๊กอิน (เช่น role-strategy.jpi) ลงในโฟลเดอร์ "c: \ program files (x86) \ Jenkins \ plugins" บนเซิร์ฟเวอร์ (Offline Jenkins)
  • รีสตาร์ท Jenkins และ voila! ควรติดตั้ง

2

คำตอบที่ได้รับพร้อมปลั๊กอินเพิ่มเติม

หากคุณต้องการแทนที่ / อัปเดตปลั๊กอินในตัวเช่นปลั๊กอินข้อมูลรับรองที่มีการอ้างอิงคุณต้องใช้ส่วนหน้า ในการทำให้เป็นอัตโนมัติฉันใช้:

 curl -i -F file=@pluginfilename.hpi http://jenkinshost/jenkins/pluginManager/uploadPlugin

1

นี่เป็นวิธีคัดลอกปลั๊กอินจากกล่อง Jenkins หนึ่งไปยังอีกกล่องหนึ่ง

คัดลอกไปที่ไดเร็กทอรีปลั๊กอิน:

scp -r jenkins-box.url.com:/var/lib/jenkins/plugins .

บีบอัดปลั๊กอิน:

tar cvfJ plugins.tar.xz plugins

คัดลอกไปที่กล่อง Jenkins อื่น:

scp plugins.tar.xz different-jenkins-box.url.com
ssh different-jenkins-box.url.com "tar xvfJ plugins.tar.xz -C /var/lib/jenkins"

รีสตาร์ท Jenkins


0

ในการติดตั้งปลั๊กอิน "git" ด้วยการอ้างอิงทั้งหมด:

curl -XPOST http://localhost:8080/pluginManager/installNecessaryPlugins -d '<install plugin="git@current" />'

ที่นี่ปลั๊กอินที่ติดตั้งคือgit; เวอร์ชันที่ระบุว่า@currentถูกละเลยโดยเจนกินส์ Jenkins กำลังทำงานบนlocalhostพอร์ต8080ให้เปลี่ยนสิ่งนี้ตามต้องการ เท่าที่ฉันรู้นี่เป็นวิธีที่ง่ายที่สุดในการติดตั้งปลั๊กอินที่มีการอ้างอิงทั้งหมด 'ด้วยมือ' ทดสอบกับ Jenkinsv1.644

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.