You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过命令行向Ruby脚本传入Jira工单ID(基于Jira-ruby gem)

解决Jira脚本传入工单ID并添加评论的问题

没问题,我来帮你把脚本改成支持命令行传入工单ID的版本,同时给你讲清楚Ruby里ARGV的用法~

一、Ruby中ARGV的基础用法

ARGV是Ruby内置的一个数组,专门用来存储运行脚本时传入的命令行参数。举个例子:
如果你运行脚本的命令是:

ruby your_script.rb ID-10389

那ARGV[0]就会拿到"ID-10389"这个值。如果需要多个参数(比如同时传工单ID和自定义评论内容),ARGV[1]就是第二个参数。

小提示:一定要记得做参数校验,避免用户忘记传参数导致脚本报错,比如可以先判断ARGV的长度:

if ARGV.empty?
  puts "请传入Jira工单ID,用法:ruby your_script.rb <工单ID>"
  exit 1
end

二、修改你的Jira脚本

结合你的现有代码,我们把硬编码的工单ID换成从ARGV获取的,同时加上错误处理(比如工单不存在、评论保存失败的情况),完整示例如下:

require 'jira-ruby'

# 初始化Jira客户端(这里替换成你自己的配置)
jira_client = JIRA::Client.new(
  username: 'your_username',
  password: 'your_password',
  site: 'https://your-jira-instance.atlassian.net',
  context_path: '',
  auth_type: :basic
)

# 处理命令行参数
if ARGV.empty?
  puts "错误:请传入Jira工单ID"
  puts "用法:ruby jira_comment.rb <工单ID>"
  exit 1
end

issue_id = ARGV[0]

begin
  # 通过传入的ID查找工单
  issue = jira_client.Issue.find(issue_id)
  puts "成功找到工单:#{issue.key} - #{issue.summary}"

  # 创建并保存评论
  comment = issue.comments.build
  comment.save!(:body => "New comment from example script")
  puts "评论添加成功!"
rescue JIRA::NotFound
  puts "错误:找不到工单 #{issue_id}"
rescue StandardError => e
  puts "脚本执行出错:#{e.message}"
end

三、扩展:支持自定义评论内容

如果需要让评论内容也通过命令行传入,只需要稍微修改参数处理部分:

# 处理参数部分
if ARGV.size < 2
  puts "用法:ruby jira_comment.rb <工单ID> <评论内容>"
  exit 1
end

issue_id = ARGV[0]
comment_body = ARGV[1]

# 保存评论时使用自定义内容
comment.save!(:body => comment_body)

运行的时候就可以直接传评论内容了:

ruby jira_comment.rb ID-10389 "这是通过命令行传入的自定义评论"

这样你的脚本就灵活多啦!

内容的提问来源于stack exchange,提问作者Chaitali

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 13:57:48