我希望能夠在我的工作流程中做一些特殊的事情,只有當SVN中的特定目錄發生變化時。如何在Jenkins Workflow插件中獲得SVN更新日誌?
爲此,我希望能夠訪問當前版本的更新日誌。
我知道他們是在storred:
changelog<number>.xml
我怎樣才能在Groovy腳本讀?
我使用:
Jenkins 1.627, Workflow 1.10, Svn plugin 2.5.2
謝謝
我希望能夠在我的工作流程中做一些特殊的事情,只有當SVN中的特定目錄發生變化時。如何在Jenkins Workflow插件中獲得SVN更新日誌?
爲此,我希望能夠訪問當前版本的更新日誌。
我知道他們是在storred:
changelog<number>.xml
我怎樣才能在Groovy腳本讀?
我使用:
Jenkins 1.627, Workflow 1.10, Svn plugin 2.5.2
謝謝
雖然目前有一些低級的獲取此類信息的方法,但如果您未使用Groovy沙箱,我提交了JENKINS-30412以支持並記錄可從任何腳本安全使用的功能。
好吧,我想通了。那就是:
node ('master') {
dir ("${env.JENKINS_HOME}/jobs/${env.JOB_NAME}/builds/${env.BUILD_NUMBER}") {
int changelogNumber = 0;
while(true){
String changelogFile = "changelog${changelogNumber}.xml";
if (fileExists(changelogFile)) {
String changelogFileContents = readFile(changelogFile)
// check changes in special dir
} else {
break;
}
changelogNumber++;
}
}
}
不過我不知道是什麼導致更新日誌是空的:
-rw-r--r-- 1 jenkins jenkins 6 Sep 8 16:04 changelog0.xml
-rw-r--r-- 1 jenkins jenkins 6 Sep 8 16:04 changelog1.xml
-rw-r--r-- 1 jenkins jenkins 6 Sep 8 16:04 changelog2.xml
即使我可以在日誌中一些SCM變化看:
Running: General SCM
Updating svn://<my_repository> at revision '2015-09-08T16:04:40.627 +0200'
U <path>/<file>.txt
...
''$ {env.JENKINS_HOME}/jobs/$ {env.JOB_NAME}/builds/$ {env.BUILD_NUMBER}「'只適用於某些情況。最好使用'currentBuild.rawBuild.rootDir.absolutePath'。更好的辦法是使用'currentBuild.rawBuild.changeSets',這是一個解析的'List'。 –
但這導致在最近的版本中出現這個錯誤: 'org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException:腳本不允許使用方法org.jenkinsci.plugins.workflow.support.steps.build.RunWrapper getRawBuild' – hypery2k