Đặt công việc Jenkins để không sao chép repo trong SCM


17

Tôi đã tích hợp Jenkins với Bitbucket bằng Plugin Bitbucket . Theo Wiki của plugin, một công việc nhất định sẽ được kích hoạt nếu kho lưu trữ được đặt trong SCM của công việc. Như bạn đã biết, nếu một người đặt SCM trong công việc Jenkins, thì điều này được nhân bản trong giai đoạn tiền xây dựng.

Càng xa càng tốt. Tuy nhiên, mục đích chính của công việc tôi đang đặt không liên quan gì đến nội dung của kho lưu trữ; thay vào đó, tôi chỉ muốn công việc xử lý tải trọng được gửi bởi Bitbucket. Người ta có thể nói rằng nó không phải là một vấn đề lớn về lưu trữ để sao chép một kho lưu trữ mặc dù bạn thực sự không cần nó. Tôi không nghĩ vậy, thêm các bước không cần thiết, tiêu tốn thời gian và tài nguyên không phải là một thực hành tốt.

Vì vậy, câu hỏi là: Có ai biết cách thiết lập SCM trong công việc Jenkins nhưng ngăn nó sao chép kho lưu trữ không?


2
Có vẻ như bạn đang cố gắng sử dụng Jenkins như một dịch vụ vi mô nằm ngoài phạm vi của Jenkins :). Đừng đăng lại nếu bạn làm việc này mặc dù vì nó thú vị.
Travis Thompson

Tôi không sử dụng Jenkins như một dịch vụ vi mô. tại sao bạn nói như vậy? Trong thực tế, tất cả những điều này là một công việc xung quanh: Tôi đang sử dụng một Công việc Đường ống phổ biến cho nhiều kho lưu trữ. Jenkinsfile nằm trong một kho lưu trữ khác. Do đó, tôi không thể kích hoạt đường ống trực tiếp bằng Plugin Bitbucket vì nó không kích hoạt nó, vì vậy tôi quyết định tạo một "công việc proxy" cho mỗi repo và gửi thông tin đến đường ống như một công việc hạ nguồn. Trong "công việc ủy ​​quyền" như vậy, tôi không cần phải sao chép repo, nhưng nó cần phải ở trong SCM.
Héctor Valverde Pareja

Rất khó hiểu và bạn viết nhiều hơn về những gì không thể hơn là những gì bạn thực sự muốn đạt được, Có lẽ bạn có thể thêm chi tiết về những gì bạn thực sự muốn đạt được và làm thế nào công việc proxy của bạn phù hợp trong đó?
Michael Le Barbier Grünewald

Tôi đoán bạn đang nói về nhận xét của tôi ở trên. Nó chỉ là một câu trả lời cho bình luận đầu tiên. Vui lòng tham khảo câu hỏi chính, không có gì khác để thêm. Những gì tôi muốn bạn đạt được rất rõ ràng: "Ngăn chặn Jenkins sao chép một kho lưu trữ trong quá trình xây dựng".
Héctor Valverde Pareja

1
@ HéctorValverdePareja Chắc chắn, nhưng từ ngữ của bạn có vẻ do dự giữa A / cung cấp đủ chi tiết để mọi người có thể kiểm tra xem bạn có đang ở trong tình huống vấn đề XY và B / chỉ để tập trung vào điều chính xác mà bạn muốn đạt được. Tôi nghĩ (ý kiến) bạn có thể loại bỏ sự do dự này bằng cách mô tả cẩn thận đủ vấn đề ban đầu của bạn và giải pháp bạn đang cố gắng thực hiện. Nhưng bây giờ khi ai đó đã viết một câu trả lời, điều này có thể không còn quá quan trọng nữa.
Michael Le Barbier Grünewald

Câu trả lời:


18

Vâng chắc chắn. Tôi làm điều này tất cả các thời gian. Bạn có thể chỉ định các tùy chọn cấu hình cho đường ống của mình và một trong số đó là skipDefaultCheckoutnguyên nhân khiến đường ống bỏ qua giai đoạn "Khai báo: Thanh toán SCM" mặc định.

Các skipDefaultCheckouttùy chọn được ghi chép lại trong đường ống Cú pháp và đây là một ví dụ Jenkinsfile thấy làm thế nào để sử dụng nó:

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

1
Làm thế nào bạn sẽ Tự sao chép kho lưu trữ trong một giai đoạn?
Oz123

2
bạn có thể chạy checkout scmđể sao chép thủ công nơi bạn cần. xem devops.stackexchange.com/a/1916/2450 .
burnettk

5

Trong trường hợp bạn không sử dụng Đường ống khai báo, bạn có thể tránh kiểm tra từ SCM bằng cách:

node {
        skipDefaultCheckout()
        //...
}

1
Bạn có thể thêm một liên kết đến tài liệu và giải thích thêm về SkipDefaultCheckout () không?
030

Tôi không thấy bất kỳ giá trị gia tăng nào so với câu trả lời hiện có, đó chỉ là 'thử cái này' mà không có lời giải thích và không phải là một câu trả lời hay.
Tensibai

Câu trả lời này là tốt khi bổ sung cho câu trả lời được chấp nhận - không phải ai cũng sẽ sử dụng plugin Pipeline khai báo, vì vậy cách này hiệu quả với những người sử dụng quy trình thủ tục.
RichVel

1

Tôi nghĩ những gì bạn muốn đạt được là xử lý một trọng tải webhook trong công việc Jenkins. Sử dụng plugin bitbucket sẽ không cần thiết và có lẽ nó được thiết kế mạnh mẽ để sao chép repo.

Tôi tin rằng câu trả lời stackoverflow này có thể giúp bạn.


Vui lòng bao gồm một trích dẫn có liên quan từ câu trả lời được liên kết đó ...
Pierre.Vriens

1
Chào mừng bạn đến với DevOps! Trong khi về mặt lý thuyết có thể trả lời câu hỏi, tốt hơn là nên bao gồm các phần thiết yếu của câu trả lời ở đây và cung cấp liên kết để tham khảo.
Richard Slater

@RichardSlater Tôi không chắc chắn về chính sách trên DevOps, nhưng các trang web khác tạo ngoại lệ cho các liên kết trong mạng.
gà con

3
@chicks thậm chí các liên kết StackOverflow có thể bị thối liên kết và bằng cách tóm tắt câu hỏi, nó đưa ra một dấu hiệu rõ ràng cho các lý do khác tại sao người trả lời tin rằng câu hỏi được trả lời bởi liên kết.
Richard Slater
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.