Добавление файлов в Redmine через командную строку - PullRequest
5 голосов
/ 01 июля 2010

У нас есть автоматическая система сборки, которая выкладывает пакеты, проверяет регрессию и упаковывает их в аккуратный установщик, готовый для конечных пользователей для развертывания и развертывания. Мы отслеживаем запросы поддержки пользователей / отчеты об ошибках через Redmine. До сих пор мы загружали пакеты вручную в соотв. Раздел «Файлы» проекта Redmine через веб-интерфейс.

Я бы хотел автоматизировать этот шаг. Я полагаю, что для взаимодействия с db redmine потребуется несколько строк Ruby. Я ничего не знаю о внутренностях Redmine. :)

В основном я хочу эквивалент

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

в качестве сценария Ruby (или любого другого языка, который необходим), который создает правильное имя файла и регистрирует файл в базе данных redmine, чтобы он отображался так, как если бы он был загружен через веб-интерфейс вручную.

Ура!

Ответы [ 4 ]

3 голосов
/ 01 июля 2010

Я был разочарован Redmine о таких вещах раньше.Но прежде чем я зайду гораздо дальше: есть ли конкретная причина, по которой вы используете для этого раздел «Файлы»?Кажется, что другой инструмент (например, SSH / SFTP для загрузки в какое-либо место, доступное для HTTP) мог бы лучше соответствовать вашим потребностям.Это также было бы легко сценарием.Просто укажите людям какой-нибудь постоянный URL, например http://yourcompany.com/productname-current.zip.

Если вам действительно нужно использовать Redmine для управления этим, вы можете проверить Mechanize: http://mechanize.rubyforge.org/. У них также должен быть RESTful API, но яЯ никогда не использовал его.

2 голосов
/ 27 ноября 2011

Я нашел этот пост, надеюсь, он вам поможет

Автоматизация упаковки и RedMine

0 голосов
/ 27 июня 2013

Как уже говорилось, вы можете использовать Mechanize для этого.

Есть сценарий 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
0 голосов
/ 24 мая 2013

Я немного опоздал, но я написал инструмент загрузки Redmine на Perl, используя модуль WWW :: Mechanize.Пожалуйста, найдите его на http://github.com/subogero/redgit

...