我正在構建jenkins管道,並且可以通過遠程觸發作業。我有要求知道哪個IP觸發了這項工作。所以我有一個小groovy腳本,它返回遠程IP。使用EnvInject-plugin,我可以在普通的自由式作業中輕鬆使用這個變量,但是我怎樣才能在管道中使用這個變量?我不能使用EnvInject-插件與流水線插件:(使用groovy腳本在jenkins管道中注入變量
這裏是獲取IP的小腳本:
import hudson.model.*
import static hudson.model.Cause.RemoteCause
def ipaddress=""
for (CauseAction action : currentBuild.getActions(CauseAction.class)) {
for (Cause cause : action.getCauses()) {
if(cause instanceof RemoteCause){
ipaddress=cause.addr
break;
}
}
}
return ["ip":ipaddress]
也許一個更好的名字是'扳機。 originIPAddress'這會讓它更清楚它背後的原因。 – Bluehorn
謝謝你的接吻!我沒有vars文件夾,所以我創建了一個。重新啓動後,我得到:java.lang.NoSuchMethodError:在步驟中找不到這樣的DSL方法'ipTrigger',所以我認爲他沒有找到方法?該文件的名稱是ipTrigger.groovy,並且管道腳本中的調用與您所做的相同(可能是,文件名稱和調用不匹配?)我做了些什麼錯誤嗎? – user3296316
對不起,我的錯。目錄結構應該是'$ JENKINS_HOME/workflow-libs/vars/ipTrigger.groovy'。請注意我的示例中省略的'workflow-libs'目錄。更新的答案以及 – Rik