如何通过命令行向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
相关产品推荐
相关产品推荐

