ตั้งค่างาน Jenkins เพื่อไม่คัดลอก repo ใน SCM


17

ฉันได้บูรณาการกับเจนกินส์ Bitbucket ใช้ปลั๊กอิน Bitbucket ตาม Wiki ของปลั๊กอินงานที่กำหนดจะถูกทริกเกอร์หากที่เก็บตั้งอยู่ใน SCM ของงาน อย่างที่คุณทราบถ้ามี SCM หนึ่งชุดในงาน Jenkins สิ่งนี้จะถูกโคลนในขั้นตอนการสร้างล่วงหน้า

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

ดังนั้นคำถามคือ: ไม่มีใครรู้วิธีการตั้งค่า SCM ในงานเจนกินส์ แต่ป้องกันไม่ให้โคลนที่เก็บ?


2
ดูเหมือนว่าคุณกำลังพยายามใช้ Jenkins เป็นบริการขนาดเล็กซึ่งอยู่นอกขอบเขตของ Jenkins :) โพสต์กลับถ้าคุณได้รับการทำงานแม้ว่าเพราะมันน่าสนใจ
Travis Thompson

ฉันไม่ได้ใช้ Jenkins เป็นบริการไมโคร ทำไมคุณพูดแบบนั้น? ในความเป็นจริงทั้งหมดนี้คือการแก้ไข: ฉันใช้งานไปป์ไลน์ซึ่งเป็นเรื่องปกติของที่เก็บข้อมูลจำนวนมาก Jenkinsfile อยู่ในที่เก็บอื่น ดังนั้นฉันไม่สามารถเรียกไปป์ไลน์โดยตรงด้วย Bitbucket Plugin เพราะมันไม่ได้ทริกเกอร์ดังนั้นฉันตัดสินใจที่จะสร้าง "proxy proxy" ต่อ repo และส่งข้อมูลไปยัง Pipeline เป็นดาวน์สตรีม ใน "งานพร็อกซี" เช่นนี้ฉันไม่จำเป็นต้องลอกแบบ repo แต่ต้องอยู่ใน SCM
Héctor Valverde Pareja

เป็นการยากที่จะเข้าใจและคุณเขียนเพิ่มเติมเกี่ยวกับสิ่งที่เป็นไปไม่ได้มากกว่าเกี่ยวกับสิ่งที่คุณต้องการบรรลุจริงบางทีคุณสามารถเพิ่มรายละเอียดเพิ่มเติมเกี่ยวกับสิ่งที่คุณต้องการบรรลุจริงและงานพร็อกซี่ของคุณเหมาะสมอย่างไร
Michael Le Barbier Grünewald

ฉันเดาว่าคุณกำลังพูดถึงความคิดเห็นของฉันข้างต้น มันเป็นเพียงคำตอบสำหรับความคิดเห็นแรก โปรดอ้างอิงคำถามหลักไม่มีอะไรเพิ่ม สิ่งที่ฉันต้องการให้คุณประสบความสำเร็จนั้นชัดเจนมาก: "ป้องกันเจนกินส์ให้ลอกแบบที่เก็บข้อมูลระหว่างการสร้าง"
Héctor Valverde Pareja

1
@ HéctorValverdeParejaแน่นอน แต่ถ้อยคำของคุณดูเหมือนจะลังเลระหว่าง A / ให้รายละเอียดเพียงพอเพื่อให้ทุกคนสามารถตรวจสอบว่าคุณอยู่ในสถานการณ์ที่มีปัญหา XY และ B / เพียงมุ่งเน้นไปที่สิ่งที่แม่นยำที่คุณต้องการบรรลุ ฉันคิดว่า (ความเห็น) คุณสามารถลบความลังเลใจนี้ได้ด้วยการอธิบายปัญหาดั้งเดิมของคุณอย่างละเอียดและแก้ไขปัญหาที่คุณพยายามนำไปใช้ แต่ตอนนี้มีคนเขียนคำตอบแล้วนี่อาจไม่สำคัญอีกต่อไป
Michael Le Barbier Grünewald

คำตอบ:


18

ได้แน่นอน. ฉันทำสิ่งนี้ตลอดเวลา คุณสามารถระบุตัวเลือกการกำหนดค่าสำหรับไปป์ไลน์ของคุณและหนึ่งในนั้นคือskipDefaultCheckoutซึ่งทำให้ขั้นตอนการข้ามขั้นตอน "Declarative: Checkout SCM" เริ่มต้น

skipDefaultCheckoutตัวเลือกการบันทึกไว้ในท่อส่งไวยากรณ์และนี่คือตัวอย่าง Jenkinsfile แสดงวิธีการใช้งาน:

pipeline {
  agent { label 'docker' }
  options {
    skipDefaultCheckout true
  }
  stages {
    stage('commit_stage') {
      steps {
        echo 'sweet stuff here'
      }
    }
  }
}

1
คุณจะเป็นอย่างไร. โคลนที่เก็บข้อมูลด้วยตนเองในสเตจหรือไม่
Oz123

2
คุณสามารถเรียกใช้checkout scmโคลนด้วยตนเองในที่ที่คุณต้องการ ดูdevops.stackexchange.com/a/1916/2450
burnettk

5

ในกรณีที่คุณไม่ได้ใช้ Pipeline Declarative คุณสามารถหลีกเลี่ยงการเช็คเอาต์จาก SCM โดย:

node {
        skipDefaultCheckout()
        //...
}

1
คุณสามารถเพิ่มลิงค์ไปยังเอกสารประกอบและอธิบายเพิ่มเติมเกี่ยวกับ skipDefaultCheckout () ได้หรือไม่?
030

ฉันไม่เห็นมูลค่าเพิ่มใด ๆ เมื่อเปรียบเทียบกับคำตอบที่มีอยู่นั่นเป็นเพียง 'ลองใช้' โดยไม่มีคำอธิบายและไม่ใช่คำตอบที่ดี
Tensibai

คำตอบนี้เป็นสิ่งเสริมสำหรับคำตอบที่ได้รับการยอมรับไม่ใช่ทุกคนจะใช้ปลั๊กอินของ Pipeline ที่ประกาศดังนั้นจึงเหมาะสำหรับผู้ที่ใช้ปลั๊กอินนี้
RichVel

1

ฉันคิดว่าสิ่งที่คุณต้องการประสบความสำเร็จคือการประมวลผลน้ำหนักบรรทุก webhook ในงานเจนกินส์ การใช้ปลั๊กอิน bitbucket นั้นไม่จำเป็นและมันก็อาจถูกออกแบบมาเพื่อโคลน repo

ฉันเชื่อว่าคำตอบ stackoverflow นี้สามารถช่วยคุณได้


โปรดรวมคำพูดที่เกี่ยวข้องจากคำตอบที่เชื่อมโยงนั้น ...
Pierre.Vriens

1
ยินดีต้อนรับสู่ DevOps! ในขณะที่สิ่งนี้อาจตอบคำถามในทางทฤษฎีมันก็ควรที่จะรวมส่วนสำคัญของคำตอบที่นี่และให้ลิงค์สำหรับการอ้างอิง
Richard Slater

@RichardSlater ฉันไม่แน่ใจเกี่ยวกับนโยบายของ DevOps แต่ไซต์อื่น ๆ สร้างข้อยกเว้นสำหรับลิงก์ในเครือข่าย
ลูกไก่

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