2015-09-05 191 views
1

我希望能夠在我的工作流程中做一些特殊的事情,只有當SVN中的特定目錄發生變化時。如何在Jenkins Workflow插件中獲得SVN更新日誌?

爲此,我希望能夠訪問當前版本的更新日誌。

我知道他們是在storred:

changelog<number>.xml 

我怎樣才能在Groovy腳本讀?

我使用:

Jenkins 1.627, Workflow 1.10, Svn plugin 2.5.2 

謝謝

回答

0

雖然目前有一些低級的獲取此類信息的方法,但如果您未使用Groovy沙箱,我提交了JENKINS-30412以支持並記錄可從任何腳本安全使用的功能。

0

好吧,我想通了。那就是:

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 
... 
+2

''$ {env.JENKINS_HOME}/jobs/$ {env.JOB_NAME}/builds/$ {env.BUILD_NUMBER}「'只適用於某些情況。最好使用'currentBuild.rawBuild.rootDir.absolutePath'。更好的辦法是使用'currentBuild.rawBuild.changeSets',這是一個解析的'List '。 –

+1

但這導致在最近的版本中出現這個錯誤: 'org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException:腳本不允許使用方法org.jenkinsci.plugins.workflow.support.steps.build.RunWrapper getRawBuild' – hypery2k