如何在 JIRA 脚本中 运行 shell 命令 运行ner groovy
How to run shell command in JIRA script runner groovy
我正在尝试从 Jira post-函数 Groovy 脚本配置 Jenkins 构建触发器
这是我的 Groovy 代码:
import com.atlassian.jira.component.ComponentAccessor;
import com.atlassian.jira.issue.CustomFieldManager;
import com.atlassian.jira.issue.Issue;
import com.atlassian.jira.issue.fields.CustomField;
import com.onresolve.scriptrunner.runner.util.UserMessageUtil
def WANITOPUSHField = ComponentAccessor.getCustomFieldManager().getCustomFieldObject(10802);//customfield id
def WANITOPUSHValue = issue.getCustomFieldValue(WANITOPUSHField);
def SelectVersionField = ComponentAccessor.getCustomFieldManager().getCustomFieldObject(10805);//customfield id
def SelectVersionValue = issue.getCustomFieldValue(SelectVersionField);
if(WANITOPUSHField != null) {
if(WANITOPUSHValue.toString() == 'Yes') {
'curl --user USERNAME:PASSWORD "http://JENKINS_URL/job/deploy-dev-test/buildWithParameters?token=MYTOCKEN&ENV=1"'.execute()
UserMessageUtil.success("Jenkins Build started ");
} else {
UserMessageUtil.success("Condition Not sucsess "+WANITOPUSHValue.toString());
}
}
在这里,如果 Jira 票证状态发生变化,我使用 curl 命令触发 Jenkins 构建,但 curl 命令在这里不起作用
它正在警告框上抛出输出
java.lang.UNIXProcess@4d0c79da
我不知道命令是否成功执行是什么意思,请任何人帮助我并建议我是否可以使用 Groovy 的其他方法来实现此目的
"something".execute() returns UNIXProcess java class 实例。当 toString() 方法未被覆盖时,您将看到类似 java.lang.UNIXProcess@4d0c79da
的内容
这里有一些代码可以帮助您获得 shell 命令输出:
def command = 'curl --user USERNAME:PASSWORD "http://JENKINS_URL/job/deploy-dev-test/buildWithParameters?token=MYTOCKEN&ENV=1"'
def proc = command.execute()
proc.waitFor()
println "Process exit code: ${proc.exitValue()}"
println "Std Err: ${proc.err.text}"
println "Std Out: ${proc.in.text}"
我正在尝试从 Jira post-函数 Groovy 脚本配置 Jenkins 构建触发器
这是我的 Groovy 代码:
import com.atlassian.jira.component.ComponentAccessor;
import com.atlassian.jira.issue.CustomFieldManager;
import com.atlassian.jira.issue.Issue;
import com.atlassian.jira.issue.fields.CustomField;
import com.onresolve.scriptrunner.runner.util.UserMessageUtil
def WANITOPUSHField = ComponentAccessor.getCustomFieldManager().getCustomFieldObject(10802);//customfield id
def WANITOPUSHValue = issue.getCustomFieldValue(WANITOPUSHField);
def SelectVersionField = ComponentAccessor.getCustomFieldManager().getCustomFieldObject(10805);//customfield id
def SelectVersionValue = issue.getCustomFieldValue(SelectVersionField);
if(WANITOPUSHField != null) {
if(WANITOPUSHValue.toString() == 'Yes') {
'curl --user USERNAME:PASSWORD "http://JENKINS_URL/job/deploy-dev-test/buildWithParameters?token=MYTOCKEN&ENV=1"'.execute()
UserMessageUtil.success("Jenkins Build started ");
} else {
UserMessageUtil.success("Condition Not sucsess "+WANITOPUSHValue.toString());
}
}
在这里,如果 Jira 票证状态发生变化,我使用 curl 命令触发 Jenkins 构建,但 curl 命令在这里不起作用
它正在警告框上抛出输出
java.lang.UNIXProcess@4d0c79da
我不知道命令是否成功执行是什么意思,请任何人帮助我并建议我是否可以使用 Groovy 的其他方法来实现此目的
"something".execute() returns UNIXProcess java class 实例。当 toString() 方法未被覆盖时,您将看到类似 java.lang.UNIXProcess@4d0c79da
的内容这里有一些代码可以帮助您获得 shell 命令输出:
def command = 'curl --user USERNAME:PASSWORD "http://JENKINS_URL/job/deploy-dev-test/buildWithParameters?token=MYTOCKEN&ENV=1"'
def proc = command.execute()
proc.waitFor()
println "Process exit code: ${proc.exitValue()}"
println "Std Err: ${proc.err.text}"
println "Std Out: ${proc.in.text}"