5

パッケージを吐き出し、リグレッション テストを行い、適切なインストーラーにラップして、エンド ユーザーが d/l およびデプロイできるようにする自動ビルド システムがあります。Redmine を介して、エンド ユーザーのサポート リクエスト/バグ レポートの追跡を行っています。これまでのところ、パッケージを手動で resp にアップロードしました。Redmine プロジェクトの「ファイル」セクション (Web インターフェース経由)。

私がやりたいのは、このステップを自動化することです。これには、redmine のデータベースとやり取りするために数行の Ruby が必要になると思います。redmine の内部構造についてはまったく知識がありません。:)

基本的に私は

mv package-x.y.z.tbz /usr/local/redmine/files/

適切なファイル名を作成し、Redmine のデータベースにファイルを登録する Ruby (または必要に応じた言語) スクリプトとして、手動で Web インターフェースを介してアップロードされたかのように表示されます。

乾杯!

4

4 に答える 4

3

私は以前、このようなことで Redmine に不満を感じていました。しかし、さらに先に進む前に、ファイル セクションを使用している特定の理由はありますか? 別のツール (HTTP にアクセス可能な場所にアップロードするための SSH/SFTP など) の方がニーズに適しているようです。また、簡単にスクリプト化できます。http://yourcompany.com/productname-current.zipのような一定の URL に人々を誘導するだけです。

これを管理するために本当に Redmine を使用する必要がある場合は、Mechanize: http://mechanize.rubyforge.org/を確認してください。RESTful API もあるはずですが、私は使用したことがありません。

于 2010-07-01T02:39:27.763 に答える
2

この投稿を見つけました。お役に立てば幸いです

パッケージングと RedMine の自動化

于 2011-11-27T07:00:52.623 に答える
0

すでに述べたように、そのために Mechanize を使用できます。

Gert van Dijk によって書かれた Python スクリプトがあります: https://github.com/gertvdijk/redmine-file-uploader

これを使用するには、最初に Python Mechanize パッケージをインストールする必要があります。

easy_install mechanize

Ruby を好む場合は、次を使用できます。

require 'mechanize'

# Replaces \ with / and removes "
ARGV.map!{|a|a.gsub('\\','/').gsub(/^"(.+)"$/,'\\1')}

filename    = ARGV[0] || abort('Filename must be specified')
puts "File:              #{filename}"
url         = ARGV[1] || abort('Redmine URL must be specified')
puts "Redmine URL:       #{url}"
username    = ARGV[2] || abort('Redmine username must be specified')
puts "Username:          #{username}"
password    = ARGV[3] || abort('Redmine password must be specified')
puts "Password:          #{'*' * password.length}"
project     = ARGV[4] || abort('Redmine project must be specified')
puts "Project:           #{project}"

login_page_path = '/login'
files_page_path = '/projects/' + project + '/files'

agent = Mechanize.new

# No certificate verification (I had to use this hack because our server is bound to custom port)
# agent.agent.http.verify_mode = OpenSSL::SSL::VERIFY_NONE

agent.get(URI.join(url, login_page_path)) do |login_page|
  login_page.form_with(:action => login_page_path) do |login_form|
    login_form.username = username
    login_form.password = password
  end.submit
end

agent.get(URI.join(url, files_page_path + '/new')) do |upload_page|
  upload_page.form_with(:action => files_page_path) do |upload_form|
    upload_form.file_uploads.first.file_name = filename
  end.submit
end

そして、最初に gem をインストールすることを忘れないでください:

gem install mechanize
于 2013-06-27T13:45:09.900 に答える