【问题标题】:Adding files to redmine via command line通过命令行将文件添加到 redmine
【发布时间】:2011-03-10 08:47:45
【问题描述】:

我们有一个自动构建系统,它可以输出包,经过回归测试并打包到一个整洁的安装程序中,准备好供最终用户进行 d/l 和部署。 我们通过 redmine 跟踪最终用户支持请求/错误报告。到目前为止,我们手动将包上传到相应的。 redmine 项目的“文件”部分,通过 Web 界面。

我想做的是自动化这一步。 我想这需要几行 Ruby 来与 redmine 的数据库交互。我对 redmine 的内部结构知之甚少。 :)

基本上我想要相当于一个

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

作为一个 Ruby(或任何适合需要的语言)脚本,它创建正确的文件名并将文件注册到 redmine 的数据库中,因此它看起来就像是通过 Web 界面手动上传的一样。

干杯!

【问题讨论】:

  • @Zoredache:为什么是服务器故障?我的意思是,很明显它不属于 SO 或 SU,但是...

标签: ruby command-line file automation redmine


【解决方案1】:

我以前对 Redmine 对此类事情感到沮丧。但在我走得更远之前:您为此使用“文件”部分是否有特定原因?似乎另一种工具(例如用于上传到 HTTP 可访问的地方的 SSH/SFTP)可能更适合您的需求。它也很容易编写脚本。只需将人们指向一些固定的 URL,例如 http://yourcompany.com/productname-current.zip

如果您确实需要使用 Redmine 进行管理,您可以查看 Mechanize:http://mechanize.rubyforge.org/。他们也应该有一个 RESTful API,但我从未使用过。

【讨论】:

  • 唯一的原因是我真的想把所有东西都放在一个地方。感谢您提供机械化链接,我检查了一下
【解决方案2】:

找到这篇文章,希望对你有帮助

Automating packaging and RedMine

【讨论】:

    【解决方案3】:

    我来晚了,但是我用 Perl 写了一个 Redmine 上传工具,使用 WWW::Mechanize 模块。 请在http://github.com/subogero/redgit找到它

    【讨论】:

      【解决方案4】:

      如前所述,您可以为此使用 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
      

      【讨论】:

        猜你喜欢
        • 2019-10-05
        • 1970-01-01
        • 2018-10-07
        • 1970-01-01
        • 2011-09-16
        • 2012-04-21
        • 1970-01-01
        • 1970-01-01
        • 2019-03-25
        相关资源
        最近更新 更多