我正在尝试编写一个 JIRA-ruby 脚本(只能从命令行使用)来标记一些 JIRA 问题自动关闭。
我从这里借了一个例子,因为我使用的是“jira-ruby”gem。
这可行,但是它会弹出一个浏览器,要求您单击“允许”以获取 access_token。我想以编程方式执行此操作,但我不认为 API 是为此目的而构建的。由于 access_token 每次都在变化,并且这个脚本会在一个 cronjob 中定期运行,所以我们需要有一种方法来做到这一点。知道我们还有什么其他方法可以做到这一点吗?
require 'jira'
@jira = JIRA::Client.new({:site => 'http://localhost:2990', :context_path => '/jira', :consumer_key => 'test-jira', :private_key_file => "rsakey.pem"})
if ARGV.length == 0
# If not passed any command line arguments, open a browser and prompt the
# user for the OAuth verifier.
request_token = @jira.request_token
puts "Opening #{request_token.authorize_url}"
system "open #{request_token.authorize_url}"
puts "Enter the oauth_verifier: "
oauth_verifier = gets.strip
access_token = @jira.init_access_token(:oauth_verifier => oauth_verifier)
puts "Access token: #{access_token.token} secret: #{access_token.secret}"
elsif ARGV.length == 2
# Otherwise assume the arguments are a previous access token and secret.
access_token = @jira.set_access_token(ARGV[0], ARGV[1])
else
# Script must be passed 0 or 2 arguments
raise "Usage: #{$0} [ token secret ]"
end
# Show all projects
projects = @jira.Project.all
projects.each do |project|
puts "Project -> key: #{project.key}, name: #{project.name}"
end
issue = @jira.Issue.find('DEMO-1')
puts issue
我知道有一种方法可以使用长寿命访问令牌,但如果 Jira 支持它,则不会真正使用它。