运行ruby脚本并分配给var Groovy / Jenkins

时间:2017-03-31 07:43:03

标签: ruby jenkins groovy

可能是一些简单但似乎没有得到我想要的输出,但是说我有一个红宝石脚本

class SlackNames

def developers
  { "Richard Lewis" => "/@richlewis",
    "Name 2" => "/@name2",
    "Name 3" => "/@name3"
  }
end

def slack_handle
 puts developers["#{ARGV[0]}"] if developers.key?("#{ARGV[0]}")
end

end

SlackNames.new.slack_handle

我会在命令行上运行它

ruby slack_names.rb "Richard Lewis"

正如您所看到的那样,只返回给定值的键,当我在Groovy脚本中运行时,如何将该值保存到变量?

-- Groovy
-- DEV_NAME here equals "Richard Lewis"

SLACK_NAME = sh """#!/bin/bash -l
                   ruby ruby_scripts/slack_names.rb \"${DEV_NAME}\"
                """
echo "${SLACK_NAME}"

当我回显SLACK_NAME时,它会以空白

返回

我在这里做错了什么?

由于

2 个答案:

答案 0 :(得分:1)

首先,您正在从类中调用该方法。 (可能只是帖子中的拼写错误)

第二,为什么“.key?(”#{ARGV [0]}“)”东西?在ruby中,如果散列没有给定键的值,它将只返回nil,而nil的布尔值为false。

class SlackNames

    def developers
      { "Richard Lewis" => "/@richlewis",
        "Name 2" => "/@name2",
        "Name 3" => "/@name3"
      }
    end

    def slack_handle
     developers["#{ARGV[0]}"] if developers["#{ARGV[0]}"]
    end

end

puts SlackNames.new.slack_handle

这至少对我有用。

ruby slack_names.rb "Richard Lewis"
=> /@richlewis

我希望它有所帮助,我理解你的问题。

答案 1 :(得分:0)

只需添加到CookieNinjas,一旦我在groovy中添加了这一切,一切都按预期工作

SLACK_NAME = sh (
             script: """#!/bin/bash -l
                        ruby ruby_scripts/slack_names.rb \"${DEV_NAME}\"
                     """,
             returnStdout: true
)