2014-07-05 13 views
16

Tôi đang tìm cách tải lên một tạo phẩm xây dựng dưới dạng Github Release trong Jenkins dưới dạng hành động hoặc nhà xuất bản sau xây dựng - tương tự như Publish Over.Tải lên tạo phẩm xây dựng cho Github khi được phát hành trong Jenkins

Tính năng này chưa được plugin Github hỗ trợ cho Jenkins (JENKINS-18598).

Tôi đã xem xét plugin postbuild-task, nhưng điều này dường như không hỗ trợ biến môi trường (mà tôi giả định sẽ hữu ích để ngăn đăng nhập mã thông báo API của tôi trong đầu ra xây dựng).

Có ai đã làm điều này chưa? Điều gì sẽ là một cách tốt để giải quyết điều này với Jenkins? Tải lên qua cURL hoặc qua ứng dụng khách CLI (ví dụ: số github-release theo lượt).

Trả lời

7

Tôi nghĩ bạn đang đi đúng hướng!

  1. Thêm plugin bài xây dựng nhiệm vụ để Jenkins
  2. Sử dụng 'kịch bản Chạy chỉ khi tất cả các bước trước đó đã thành công' tùy chọn
  3. tôi sẽ tạo ra các thông số Jenkins cho tên phát hành, tên thẻ vv và sẽ lưu các thông tin đó cùng với thông tin đăng nhập của bạn vào tệp dưới dạng bước cuối cùng trong quá trình xây dựng (trước khi thực thi tác vụ đăng bài).
  4. Thêm một kịch bản ngắn để bước nhiệm vụ bài build mà các cuộc gọi API Github:
  5. Đặt biến môi trường từ tập tin đã lưu của bạn và xóa nó
  6. CURL POST cho https://developer.github.com/v3/repos/releases/#create-a-release (Bạn có thể sử dụng Jenkings Groovy bài build Plugin thay vì plugin tác vụ xây dựng bài đăng và truy cập các biến môi trường mà không lưu chúng vào tệp nhưng sẽ thêm quá nhiều phức tạp đến mức không cần sử dụng plugin đó.)
  7. CURL POST để tải lên tạo tác: https://developer.github.com/v3/repos/releases/#upload-a-release-asset
+0

Cám ơn phác thảo của bạn, đây là những gì Tôi đã có chủ yếu trong tâm trí. Tôi đã thử với một kịch bản lệnh xây dựng Groovy (sử dụng [HTTPBUilder] (http://groovy.codehaus.org/modules/http-builder/home.html)), nhưng [thất bại] (http: // groovy .codehaus.org/modules/http-builder/home.html). Tôi sẽ phải cho phiên bản CURL và cũng cố gắng thiết lập các biến môi trường. – StephenKing

17

Tôi giải quyết chỉnh sửa bằng cách sử dụng công cụ github-release. Làm việc như một sự quyến rũ và rất dễ dàng.

  1. Thêm một thông số liên quan đến việc xây dựng
  2. Thêm một kịch bản shell bài xây dựng của bạn bước
  3. Nhập mã này:
echo "Compressing artifacts into one file" 
zip -r artifacts.zip artifacts_folder 

echo "Exporting token and enterprise api to enable github-release tool" 
export GITHUB_TOKEN=$$$$$$$$$$$$ 
export GITHUB_API=https://git.{your domain}.com/api/v3 # needed only for enterprise 

echo "Deleting release from github before creating new one" 
github-release delete --user ${GITHUB_ORGANIZATION} --repo ${GITHUB_REPO} --tag ${VERSION_NAME} 

echo "Creating a new release in github" 
github-release release --user ${GITHUB_ORGANIZATION} --repo ${GITHUB_REPO} --tag ${VERSION_NAME} --name "${VERSION_NAME}" 

echo "Uploading the artifacts into github" 
github-release upload --user ${GITHUB_ORGANIZATION} --repo ${GITHUB_REPO} --tag ${VERSION_NAME} --name "${PROJECT_NAME}-${VERSION_NAME}.zip" --file artifacts.zip 
+0

Có thực sự cần phải có một plugin Jenkins với sự hỗ trợ cho đường ống Jenkins cho điều này ... –

Các vấn đề liên quan