2013-08-07 91 views
11

tôi đã lưu trữ một artifact như là bước cuối cùng của việc xây dựng và nó có sẵn như là một cái gì đó như thế này: https://xxx.ci.cloudbees.com/job/xxx/52/artifact/target/xxx-1.2.1-SNAPSHOT-r8304-20130807-1507-app.zipJenkins: Sử dụng lưu trữ Artifact trong Promoted Build

Làm thế nào tôi có thể dễ dàng truy cập vào các tạo tác trong quá trình khuyến mại? Xin lưu ý rằng tôi cần truy cập vào công cụ xây dựng cụ thể, không cần phải xây dựng thành công mới nhất.

Mục tiêu của quy trình quảng bá là sao chép phần tạo tác vào S3 từ nơi mà công việc triển khai của chúng tôi sẽ xử lý thêm nó. Vì vậy, tôi có thể thúc đẩy xây dựng # 52 để phát triển (sao chép nó vào một thùng S3 cụ thể), sau đó thúc đẩy xây dựng # 50 để sản xuất và như vậy. Lý tưởng nhất, tôi có thể truy cập vào tạo tác trong một kịch bản shell để đổi tên tập tin, vv. Có một biến môi trường để truy cập các tạo phẩm lưu trữ của một bản dựng mà tôi không thể tìm thấy hay cách thực hiện điều này? $BUILD_URL$JOB_URL đã được cụ thể cho quy trình quảng cáo và không trỏ đến việc tự xây dựng trong các kịch bản lệnh vỏ trên công việc quảng cáo.

Với plugin tạo tác sao chép, tôi chỉ có thể sao chép các tạo phẩm từ các bản dựng khác trong quy trình quảng cáo mà tôi không cần phải làm.

Trả lời

15

Tôi tin rằng tôi đã tìm được giải pháp.

Tóm tắt

  • Không sử dụng rõ bởi permalink
  • Sử dụng cụ thể xây dựng và thiết lập số lượng xây dựng để ${PROMOTED_NUMBER}

Giải pháp

Điều kiện tiên quyết

  • Copy Artifact Plugin phải được cài đặt.
  • Lưu trữ các hiện vật mà bạn muốn chương trình khuyến mãi để truy cập
    • Trong Post-xây dựng Actions thêm hành động Lưu trữ các hiện vật và thiết lập tập tin để lưu trữ với những gì đã bao giờ bạn muốn thăng tiến của bạn để truy cập.
  • Đừng loại bỏ các hiện vật cũ
    • Trong Cấu hình công việc, bỏ chọn Huỷ Cũ xây dựng hoặc đảm bảo rằng thiết lập của nó sẽ giữ hiện vật cho tới chừng nào bạn muốn thúc đẩy xây dựng của bạn. thiết lập

Khuyến mãi:

cài đặt lên xây dựng quảng bá của bạn với tên và tiêu chí như bình thường.

Trong phần Hành động, thêm hành động Sao chép hiện vật từ một dự án khác và đặt các giá trị này.

  • Tên dự án: ${PROMOTED_JOB_NAME}
  • Những Xây dựng: cụ thể xây dựng
  • Số xây dựng: ${PROMOTED_NUMBER}
  • Artifacts để sao chép: path/to/your/artifacts/**
  • Target: ${BUILD_TAG}

Sau đó, thêm hành động mà bạn thực sự muốn làm. Ví dụ, thêm hành động Lưu trữ các hiện vật để lưu các hiện vật. Hãy nhớ thêm tiền tố cho đường dẫn của bạn với ${BUILD_TAG} ví dụ: ${BUILD_TAG}/path/to/your/artifacts/**

Ghi chú về lý do tại sao

sao chép vật

Như bạn có thể biết bây giờ, các chương trình khuyến mãi nên không mong đợi để có thể truy cập các nội dung của các không gian làm việc của xây dựng. Nó có thể được thực hiện trên một máy chủ khác, và nó có thể có quyền truy cập vào không có không gian làm việc nào cả hoặc không gian làm việc từ một phiên bản cũ hơn hoặc mới hơn. Do đó, nó được yêu cầu sao chép các tạo tác bạn muốn sử dụng cho không gian làm việc hiện tại.

Đây cũng là lý do tại sao giá trị Mục tiêu được đặt. Không gian làm việc có thể bị ô nhiễm với các bản dựng hoặc quảng cáo khác. Đặt mục tiêu thành ${BUILD_TAG} Ngăn bất kỳ xung đột nào với các tệp đã có trong không gian làm việc, bằng cách tạo một thư mục duy nhất cho quy trình quảng cáo.

$ {PROMOTED_ *} biến

Như bạn nêu việc xây dựng các biến bình thường đề cập đến quá trình xúc tiến bản thân, mà là nơi xây dựng Plugin Promoted định nghĩa một số environment variables đề cập đến việc xây dựng thực tế để thay thế.

Permalinks

Trong một bối cảnh Jenkins permalinks chỉ đề cập đến các liên kết đặc biệt mà chỉ để xây dựng mới nhất của một số loại hình hoặc chương trình khuyến mãi mới nhất. Đó là lý do tại sao bạn sẽ luôn nhận được phiên bản mới nhất

Trong phiên bản Jenkins của tôi, trình đơn thả xuống được thay thế bằng hộp văn bản.Viết URL cho một công trình cụ thể như http://jenkins/job/myjob/59/not recognized là một trong các liên kết cố định đặc biệt và sao chép will thus fail.

+0

Điều này thực sự chọn xây dựng chính xác. Khá mơ hồ, nhưng giải pháp tuyệt vời! – xeraa

+0

Điều này sẽ được bao gồm trong tài liệu "Bản dựng quảng cáo" –

5

Bạn có thể sử dụng plugin Tạo tác bản sao. Đặt nó để sao chép các hiện vật từ dự án chính và chọn Được chỉ định bằng liên kết cố định trong đó liên kết cố định là Khuyến mại mới nhất: quy trình quảng bá này.

(Lưu ý rằng do cấu hình quảng cáo đề cập đến ở đây, bạn không thể thêm quảng cáo như vậy trong một bước: bạn phải thêm quảng cáo không có bước xây dựng, lưu, sau đó quay lại và thêm các bước xây dựng.)

+0

Tôi thấy việc đặt tên hơi khó hiểu, nhưng điều này chắc chắn là một bước đi đúng hướng. Làm một bài kiểm tra nhỏ, tôi đã trải qua hành vi sau đây: Quá trình xúc tiến đầu tiên lấy hiện vật hiện tại. Bất kỳ triển khai bổ sung nào cũng chỉ có thể triển khai hiện tại hoặc một tạo phẩm sau này. Nếu tôi đã quảng cáo xây dựng # 60 cho một quảng cáo cụ thể, cố gắng quảng bá # 59 sẽ lại triển khai # 60. Tôi sẽ cần phải thảo luận về điều này, nhưng điều này có lẽ là tốt để tránh triển khai cũ. – xeraa

+0

Có một cơ sở (tôi nghĩ) mới trong plugin tạo tác sao chép mà bạn có thể chỉ định số bản dựng và tạo tác bạn muốn từ số xây dựng đó –

+0

@xeraa: Bạn có nhận được giải pháp cho vấn đề này không? Tôi đang đối mặt với vấn đề tương tự. quảng cáo xây dựng # 60 và sau đó cố gắng quảng bá phiên bản thấp hơn đang quảng cáo phiên bản quảng bá cuối cùng của tạo phẩm. – Sabya

0

Như một sang một bên, bạn có thể tìm thấy Workflow system làm cho việc tùy chỉnh loại logic đường ống này dễ dàng hơn, mà không cần sử dụng các plugin Xây dựng quảng cáo hoặc Sao chép tạo tác.