2013-08-14 20 views
6

Tôi đang lưu trữ một viên đá quý riêng trên Gemfury và muốn ghi đè lên tác vụ rake release để chuyển tới URL riêng tư Gemfury của tôi thay vì Rubygems.Ghi đè tác vụ giải phóng rake để sử dụng Gemfury

Tôi muốn duy trì quá trình tạo thẻ Git.

Bất kỳ ý tưởng nào tôi nên bắt đầu?

Đây là những gì Rakefile của tôi trông giống như:

require 'bundler/gem_tasks' 
require 'rspec/core/rake_task' 

RSpec::Core::RakeTask.new(:spec) 

task default: :spec 
task test: :spec 

Trả lời

5

Trên thực tế tìm thấy câu trả lời:

Rakefile

require 'bundler/gem_tasks' 
require 'rubygems/builder' 
require 'gemfury' 
require 'gemfury/command' 

# Override rubygem_push to push to gemfury instead when doing `rake release` 
module Bundler 
    class GemHelper 
    def rubygem_push(path) 
     ::Gemfury::Command::App.start(['push', path]) 
    end 
    end 
end 

Bây giờ khi thực hiện:

rake release 

Nó tạo ra các thẻ git và đẩy tới kho lưu trữ đá quý riêng Gemfury của tôi.

Bạn sẽ muốn tạo một tập tin trong ~/.gem/gemfury với khóa bí mật của bạn:

--- 
:gemfury_api_key: 1H... 
+0

Có cách nào để xác định gemfury_api_key trên dòng lệnh? Tôi muốn có Jenkins làm một việc xây dựng và đẩy đá quý của tôi, và không ưa thích có bí mật trong mã nguồn ở đâu đó. –

+0

Đây là [cách triển khai] (https://github.com/bundler/bundler/blob/master/lib/bundler/gem_helper.rb#L82). Tôi không nghĩ rằng những gì bạn muốn đạt được là có thể. –

+1

Cảm ơn - Tôi chỉ nhận ra sau đó rằng thư mục '.gem' không biến nó thành viên đá quý đóng gói, đó là mối quan tâm chính của tôi. –

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