เก็บถาวรสิ่งประดิษฐ์ใน Jenkins


132

ใครช่วยอธิบายแนวคิดของสิ่งประดิษฐ์ในกระบวนการสร้างให้ฉันฟังได้ไหม

ฉันมีไดเร็กทอรีเวิร์กสเปซที่ฉันตรวจสอบโค้ดเพื่อคอมไพล์และรันสคริปต์มดของฉันเป็นต้นในตอนท้ายในกรณีของฉันฉันได้รับไฟล์ jar ที่พร้อมติดตั้ง ถือว่าเป็นสิ่งประดิษฐ์หรือไม่?

ฉันควรบอกบิลด์สคริปต์ให้ใส่ไฟล์ jar ไว้ที่ไหน ในไดเรกทอรีพื้นที่ทำงาน? ไฟล์ jar ของฉันได้รับชื่อไฟล์ที่ไม่ซ้ำกันขึ้นอยู่กับตัวแปรเช่นBUILD_IDและฉันจะบอกเจนกินส์ได้อย่างไรว่าจะเลือกไฟล์ jar ใด

แก้ไข: โอเคฉันจึงลองทำสิ่งนี้:

ป้อนคำอธิบายภาพที่นี่

เส้นทางยังไม่มีอยู่ในพื้นที่ทำงานของฉันเนื่องจากสคริปต์การสร้างควรจะสร้างขึ้นและแน่นอนไฟล์ .jar.propertiesไฟล์และไฟล์ไม่ได้อยู่ที่นั่นเนื่องจากยังไม่ได้สร้าง ทำไมถึงแจ้งข้อผิดพลาด ดูเหมือนว่าฉันขาดอะไรไป

นอกจากนี้เจนกินส์ยังลบอาร์ติแฟกต์หลังจากสร้างแต่ละครั้ง (ไม่ใช่อาร์ติแฟกต์ที่เก็บถาวรฉันรู้ว่าฉันสามารถบอกให้ลบสิ่งเหล่านั้นได้) มิฉะนั้นจะทำให้ฮาร์ดไดรฟ์อุดตันอย่างรวดเร็ว


12
ข้อผิดพลาดที่คุณได้รับมักจะไม่ใช่ปัญหา - หากกระบวนการสร้างสำเร็จควรสร้างขึ้น บันทึกและลองสิ่งนี้การมีบิวด์ที่เสียหายเล็กน้อยในขณะที่ตั้งค่าไปป์ไลน์เป็นเรื่องปกติ :)
Anders Lindahl

3
อย่ากลัวคำเตือนหากสร้างอาร์ติแฟกต์หลังจากสร้างแล้วคอนฟิกของคุณจะถูกเก็บถาวร (แม้ว่าจะมีคำเตือนในหน้า config)
Huang F. Lei

คำตอบ:


68

ความเข้าใจของคุณถูกต้องสิ่งประดิษฐ์ในความหมายของเจนกินส์เป็นผลมาจากการสร้าง - ผลลัพธ์ที่ตั้งใจไว้ของกระบวนการสร้าง

สนธิสัญญาร่วมกันคือการใส่ผลจากการสร้างเป็นbuild, targetหรือbinไดเรกทอรี

ผู้จัดเก็บ Jenkins สามารถใช้ globs ( target/*.jar) เพื่อเลือกไฟล์ที่ถูกต้องได้อย่างง่ายดายแม้ว่าคุณจะมีชื่อเฉพาะต่อบิลด์ก็ตาม


@ แอนเดรสขอบคุณเจนกินส์ลบอาร์ติแฟกต์หลังจากสร้างแต่ละครั้ง (ไม่ใช่อาร์ติแฟกต์ที่เก็บถาวรฉันรู้ว่าฉันสามารถบอกให้มันลบสิ่งเหล่านั้นได้)? หรือฉันรับผิดชอบที่จะทำมันเอง?
Michael

6
@michael: คุณต้องทำความสะอาดพื้นที่ทำงานด้วยตัวเองเป็นแนวทางปฏิบัติที่ดีในการล้างไดเร็กทอรีเป้าหมายก่อนสร้างทุกครั้งเพื่อให้แน่ใจว่าคุณจะไม่ได้ผลลัพธ์ของบิลด์ก่อนหน้านี้
Anders Lindahl

@ ไมเคิลคุณสามารถเพิ่มขั้นตอนการสร้างแบบ 'สะอาด' ได้ เช่นกับ Maven -sh 'mvn clean package'
Snowcrash

@AndersLindahl - "หลักการทั่วไปคือการใส่ผลลัพธ์ของ build ลงในไดเร็กทอรี build, target หรือ bin" คุณกำลังอ้างถึงไดเร็กทอรี bin ที่แชร์โดยโครงการทั้งหมดหรือไม่? ฉันจะทำอย่างไร? มันเป็นการกระทำหลังการสร้างหรือไม่?
user3240688

@ user3240688 ไม่ฉันหมายถึงโฟลเดอร์เป้าหมายต่อโปรเจ็กต์ หากคุณต้องการอาร์ติแฟกต์จากหลาย ๆ งานลงในโฟลเดอร์ที่แชร์เพียงโฟลเดอร์เดียวคุณจะต้องเผยแพร่อาร์ติแฟกต์โดยใช้ปลั๊กอิน "เผยแพร่มากกว่า $ PROTOCOL" ตัวอย่างเช่น
Anders Lindahl

11

อาร์ติแฟกต์อาจเป็นผลมาจากกระบวนการสร้างของคุณ สิ่งสำคัญคือไม่สำคัญว่าไคลเอ็นต์ใดที่สร้างขึ้นมันจะถูกโอนจากพื้นที่ทำงานกลับไปที่มาสเตอร์ (เซิร์ฟเวอร์) และเก็บไว้ที่นั่นพร้อมกับลิงก์ไปยังบิลด์ ข้อดีคือมีการกำหนดเวอร์ชันด้วยวิธีนี้คุณจะต้องตั้งค่าการสำรองข้อมูลบนต้นแบบของคุณเท่านั้นและสิ่งประดิษฐ์ทั้งหมดสามารถเข้าถึงได้ผ่านทางเว็บอินเตอร์เฟสแม้ว่าไคลเอ็นต์บิวด์ทั้งหมดจะออฟไลน์ก็ตาม

เป็นไปได้ที่จะกำหนดนิพจน์ทั่วไปเป็นชื่อสิ่งประดิษฐ์ ในกรณีของฉันฉันบีบอัดไฟล์ทั้งหมดที่ฉันต้องการเก็บไว้ในไฟล์เดียวโดยมีชื่อคงที่ระหว่างการสร้าง


3
"เป็นไปได้ที่จะกำหนดนิพจน์ทั่วไปเป็นชื่อสิ่งประดิษฐ์ในกรณีของฉันฉันบีบอัดไฟล์ทั้งหมด" คุณช่วยอธิบายเรื่องนี้ได้ไหม ฟังดูตรงกับที่ฉันต้องการไหม
Chris Milburn

7

นอกจากนี้ Jenkins ยังลบสิ่งประดิษฐ์หลังจากสร้างแต่ละครั้งหรือไม่ (ไม่ใช่อาร์ติแฟกต์ที่เก็บถาวรฉันรู้ว่าฉันสามารถบอกให้ลบสิ่งเหล่านั้นได้)

ไม่ฮัดสัน / เจนกินส์ไม่ได้ล้างพื้นที่ทำงานหลังจากสร้างด้วยตัวเอง คุณอาจมีการดำเนินการในกระบวนการสร้างของคุณที่ลบเขียนทับหรือย้ายบิวด์อาร์ติแฟกต์จากที่ที่คุณทิ้งไว้ มีตัวเลือกในการกำหนดค่างานในตัวเลือกโครงการขั้นสูง (ซึ่งต้องขยาย) เรียกว่า "ล้างพื้นที่ทำงานก่อนสร้าง" ซึ่งจะล้างพื้นที่ทำงานในตอนเริ่มต้นของโครงสร้างใหม่


1

ใน Jenkins 2.60.3 มีวิธีการลบ build artifacts (ไม่ใช่สิ่งประดิษฐ์ที่เก็บถาวร) เพื่อประหยัดเนื้อที่ฮาร์ดไดรฟ์บนเครื่อง build ในส่วนทั่วไปให้เลือก "ทิ้งงานสร้างเก่า" ด้วยกลยุทธ์ "ล็อกการหมุนเวียน" จากนั้นไปที่ตัวเลือกขั้นสูง อีกสองตัวเลือกจะปรากฏขึ้นที่เกี่ยวข้องกับการเก็บสร้างสิ่งประดิษฐ์สำหรับงานตามจำนวนวันหรืองานสร้าง

การตั้งค่าที่ใช้ได้ผลสำหรับฉันคือการป้อน 1 สำหรับ "Max # of builds to keep with artifacts" จากนั้นจึงจะมีการดำเนินการหลังการสร้างเพื่อเก็บถาวรอาร์ติแฟกต์ ด้วยวิธีนี้อาร์ติแฟกต์ทั้งหมดจากบิวด์ทั้งหมดจะถูกเก็บถาวรข้อมูลทั้งหมดจากบิวด์จะถูกบันทึก แต่มีเพียงบิวด์สุดท้ายเท่านั้นที่จะเก็บอาร์ติแฟกต์ของตัวเองไว้

ยกเลิกตัวเลือกการสร้างแบบเก่า

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