繁体   English   中英

将Groovy中的值解析为Shell step Jenkins

[英]Parse value from Groovy into Shell step Jenkins

在我的Jenkins构建步骤中,我有一个Groovy脚本,该脚本计算构建持续时间并将其值放入要在Shell脚本中执行的字符串中。

我尝试通过多种方式来实现它,但还是没有运气。 在Jenkins Slave上运行确切的字符串可以正常工作,因此希望将该字符串传递到Shell脚本步骤中并在之后运行它。 我将如何去做?

我考虑过设置一个环境变量,但是目前只能找到检索它们的方法。

import hudson.model.*
import java.math.*

def apiKey = "secret"
def buildId = System.getenv("BUILD_ID")
def buildNo = System.getenv("BUILD_NUMBER")
def jobName = System.getenv("JOB_NAME")
jobName = jobName.replaceAll("\\.","-") 
def nodeName = System.getenv("NODE_NAME")

def (startDate, startTime) = buildId.tokenize("_")
def (YY, MM, DD) = startDate.tokenize("-")
def (hh, mm, ss) = startTime.tokenize("-")
MathContext mc = new MathContext(200);
Date startDateTime = new GregorianCalendar(YY.toInteger(), MM.toInteger() - 1, DD.toInteger(), hh.toInteger(), mm.toInteger(), 
ss.toInteger()).time
Date end = new Date()
long diffMillis = end.getTime() - startDateTime.getTime()     
long buildDurationInSeconds = (diffMillis / 1000);

String metric = String.format("%s.jenkins.%s.%s.%s.duration %s", 
apiKey, nodeName, jobName, buildNo, buildDurationInSeconds)

def cmd = 'echo "+metric+" | nc carbon.hostedgraphite.com 2003'

在此步骤之后,我将在jenkins中调用“ Execute Shell”步骤,并传递“ cmd”的值。 如果有人举了两个例子,那就是传递值然后在shell脚本中调用它,这将是真正的帮助。

def cmd = "ls -a"
new File("${build.workspace}/mycmd.sh").setText("#!/bin/sh\n${cmd}\n")

然后执行Shell ./mycmd.sh

尝试这个

def metric="WHAT_YOU_WANT_TO_PASS"
sh "echo $metric | nc carbon.hostedgraphite.com 2003"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM