2017-03-15 9 views
1

私はgitのプロジェクトをチェックアウトし、私は変更履歴に入るかを制御したいジェンキンス(2.36)パイプラインの仕事を持っている:生成カスタムGitSCM変更履歴

CHANGELOG = "" 
CHECK_SINCE = 1488326400 

stage('Fetch') { 
    node('docker') { 
     checkout([$class: 'GitSCM', branches: [[name: '*/develop']], doGenerateSubmoduleConfigurations: false, extensions: [[$class: 'WipeWorkspace'], [$class: 'AuthorInChangelog']], submoduleCfg: [], userRemoteConfigs: [[credentialsId: '...', url: '...']]]) 
     CHANGELOG = sh(returnStdout: true, script: "git log --after ${CHECK_SINCE} --pretty=fommit %H %ntree %T %nparent %P %nauthor %an <%ae> %ad %ncommiter %cn <%ce> %cd %n %n %s %n %n %n' --raw --no-abbrev").trim() 
     docker.build("pipeline_test", "tools/build").inside { 
      sh 'echo HELLO!' 
     } 
    } 
} 

stage('Update') { 
    node('master') { 
     fileExists "${JENKINS_HOME}/jobs/PipelineTest/jobs/${JOB_BASE_NAME}/builds/${BUILD_ID}/changelog0.xml" 
     changelog_file = new File("${JENKINS_HOME}/jobs/PipelineTest/jobs/${JOB_BASE_NAME}/builds/${BUILD_ID}/changelog0.xml") 
     changelog_file << CHANGELOG 
    } 
} 

私は、ファイルを表示するとchangelog0.xml、コンテンツは、それがあるべきとまったく同じです:

commit b2f615ee31bc51922cdd6ca373a90b70d5c95d1b 
tree 9bd57df4c9c85ee1958d7e5b3ba3ab999e18e752 
parent 35c47eb0b3a0cb77574465a8136ad37a294f45ca 
author ssengupta <[email protected]> 2017-03-10 12:53:41 +0100 
committer ssengupta <[email protected]> 2017-03-10 12:53:41 +0100 

    Some more changes. 



:100644 100644 1ac06d64c274f8e2dbea325a07c15f11d2f5b4d0 6460796ab551fc1b84d25ebadbd369187fdec382 M ReadMe.md 
commit 35c47eb0b3a0cb77574465a8136ad37a294f45ca 
tree 7a5cdb20288c4f3504117cfede5451e3b94fc465 
parent 5b6d2f65010c0ae758c002d7a7eb0e66677c3193 
author ssengupta <[email protected]> 2017-03-10 12:53:26 +0100 
committer ssengupta <[email protected]> 2017-03-10 12:53:26 +0100 

    Some changes 



:100644 100644 dd7dbfe9ab082d444c9510f00fc79d7f72121012 1ac06d64c274f8e2dbea325a07c15f11d2f5b4d0 M ReadMe.md 

しかし、私は左のメニューから「変更」リンクをクリックすることで、私のジェンキンスのWebフロントエンドの仕事のページから変更履歴を表示したい場合、変更履歴が表示されますもし私がを取り除いた場合にのみブロック。それ以外の場合は空です。

すべてのビルドに一意のイメージ名を設定しようとしました。私は様々な場所で遅延を導入しようとしました。助けにならない。

変更点は、ウェブフロントエンドで変更履歴の表示を空にすることです。どうすれば修正できますか?

更新

私はまた、別のアプローチを試してみました:currentBuild.changeSetsを更新する代わりに、changelog0.xmlに書き込みます。パイプラインのスクリプトは次のようになります。

import hudson.plugins.git.GitChangeSet 

CHANGELOG = "" 
CHECK_SINCE = 1488326400 

stage('Fetch') { 
    node('docker') { 
     checkout([$class: 'GitSCM', branches: [[name: '*/develop']], doGenerateSubmoduleConfigurations: false, extensions: [[$class: 'WipeWorkspace'], [$class: 'AuthorInChangelog']], submoduleCfg: [], userRemoteConfigs: [[credentialsId: '...', url: '...']]]) 
     CHANGELOG = sh(returnStdout: true, script: "git log --after ${CHECK_SINCE} --pretty=fommit %H %ntree %T %nparent %P %nauthor %an <%ae> %ad %ncommiter %cn <%ce> %cd %n %n %s %n %n %n' --raw --no-abbrev").trim() 
     docker.build("pipeline_test", "tools/build").inside { 
      sh 'echo HELLO!' 
     } 
     def modified_changes = new GitChangeSet(CHANGELOG.readLines(), true) 
     currentBuild.rawBuild.changeSets << modified_changes 
    } 
} 

は、私はJava開発者はないですが、GitChangeSetはコンストラクタpublic GitChangeSet(List<String> lines, boolean authorOrCommitter)

正常に実行パイプラインを持っているので、私は、意味のある何かをする上記のコードを期待しました。それはしません - 私は本当にあなたの質問を理解していなかったが、Java File APIを使用してパイプラインでサポートされていない

org.apache.commons.jelly.JellyTagException: jar:file:/var/lib/jenkins/plugins/workflow-job/WEB-INF/lib/workflow-job.jar!/org/jenkinsci/plugins/workflow/job/WorkflowRun/changes.jelly:33:67: <st:include> No page found 'index.jelly' for class hudson.plugins.git.GitChangeSet 
    at org.kohsuke.stapler.jelly.IncludeTag.doTag(IncludeTag.java:124) 
    at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269) 
    at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:161) 
    at org.apache.commons.jelly.tags.core.ForEachTag.doTag(ForEachTag.java:150) 
    at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269) 
    at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95) 
    at org.kohsuke.stapler.jelly.CallTagLibScript$1.run(CallTagLibScript.java:99) 
    at org.apache.commons.jelly.tags.define.InvokeBodyTag.doTag(InvokeBodyTag.java:91) 
    at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269) 
    at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95) 
    at org.apache.commons.jelly.tags.core.CoreTagLibrary$1.run(CoreTagLibrary.java:98) 
    at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95) 
    at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105) 
    at org.kohsuke.stapler.jelly.CallTagLibScript.run(CallTagLibScript.java:120) 
    at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95) 
    at org.kohsuke.stapler.jelly.CallTagLibScript$1.run(CallTagLibScript.java:99) 
    at org.apache.commons.jelly.tags.define.InvokeBodyTag.doTag(InvokeBodyTag.java:91) 
    at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269) 
    at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95) 
    at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99) 
    at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95) 
    at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99) 
    at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95) 
    at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99) 
    at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95) 
    at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99) 
    at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95) 
    at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105) 
    at org.kohsuke.stapler.jelly.CallTagLibScript.run(CallTagLibScript.java:120) 
    at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105) 
    at org.kohsuke.stapler.jelly.JellyViewScript.run(JellyViewScript.java:95) 
    at org.kohsuke.stapler.jelly.DefaultScriptInvoker.invokeScript(DefaultScriptInvoker.java:63) 
    at org.kohsuke.stapler.jelly.DefaultScriptInvoker.invokeScript(DefaultScriptInvoker.java:53) 
    at org.kohsuke.stapler.jelly.JellyFacet$1.dispatch(JellyFacet.java:97) 
    at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:715) 
    at org.kohsuke.stapler.Stapler.invoke(Stapler.java:845) 
    at org.kohsuke.stapler.MetaClass$10.dispatch(MetaClass.java:374) 
    at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:715) 
    at org.kohsuke.stapler.Stapler.invoke(Stapler.java:845) 
    at org.kohsuke.stapler.MetaClass$5.doDispatch(MetaClass.java:248) 
    at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58) 
    at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:715) 
    at org.kohsuke.stapler.Stapler.invoke(Stapler.java:845) 
    at org.kohsuke.stapler.MetaClass$5.doDispatch(MetaClass.java:248) 
    at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58) 
    at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:715) 
    at org.kohsuke.stapler.Stapler.invoke(Stapler.java:845) 
    at org.kohsuke.stapler.Stapler.invoke(Stapler.java:649) 
    at org.kohsuke.stapler.Stapler.service(Stapler.java:238) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) 
    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:812) 
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1669) 
    at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:135) 
    at com.smartcodeltd.jenkinsci.plugin.assetbundler.filters.LessCSS.doFilter(LessCSS.java:47) 
    at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:132) 
    at org.jenkinsci.plugins.modernstatus.ModernStatusFilter.doFilter(ModernStatusFilter.java:52) 
    at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:132) 
    at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:126) 
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) 
    at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:49) 
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) 
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84) 
    at hudson.security.UnwrapSecurityExceptionFilter.doFilter(UnwrapSecurityExceptionFilter.java:51) 
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) 
    at jenkins.security.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:117) 
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) 
    at org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125) 
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) 
    at org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142) 
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) 
    at org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271) 
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) 
    at jenkins.security.BasicHeaderProcessor.doFilter(BasicHeaderProcessor.java:93) 
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) 
    at org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:249) 
    at hudson.security.HttpSessionContextIntegrationFilter2.doFilter(HttpSessionContextIntegrationFilter2.java:67) 
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) 
    at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:76) 
    at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:171) 
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) 
    at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:49) 
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) 
    at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:82) 
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) 
    at org.kohsuke.stapler.DiagnosticThreadNameFilter.doFilter(DiagnosticThreadNameFilter.java:30) 
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) 
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585) 
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) 
    at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:553) 
    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223) 
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127) 
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515) 
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185) 
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061) 
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) 
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97) 
    at org.eclipse.jetty.server.Server.handle(Server.java:499) 
    at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:311) 
    at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257) 
    at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544) 
    at winstone.BoundedExecutorService$1.run(BoundedExecutorService.java:77) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    at java.lang.Thread.run(Thread.java:745) 
Caused: javax.servlet.ServletException 
    at org.kohsuke.stapler.jelly.JellyFacet$1.dispatch(JellyFacet.java:105) 
    at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:715) 
    at org.kohsuke.stapler.Stapler.invoke(Stapler.java:845) 
    at org.kohsuke.stapler.MetaClass$10.dispatch(MetaClass.java:374) 
    at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:715) 
    at org.kohsuke.stapler.Stapler.invoke(Stapler.java:845) 
    at org.kohsuke.stapler.MetaClass$5.doDispatch(MetaClass.java:248) 
    at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58) 
    at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:715) 
    at org.kohsuke.stapler.Stapler.invoke(Stapler.java:845) 
    at org.kohsuke.stapler.MetaClass$5.doDispatch(MetaClass.java:248) 
    at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58) 
    at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:715) 
    at org.kohsuke.stapler.Stapler.invoke(Stapler.java:845) 
    at org.kohsuke.stapler.Stapler.invoke(Stapler.java:649) 
    at org.kohsuke.stapler.Stapler.service(Stapler.java:238) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) 
    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:812) 
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1669) 
    at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:135) 
    at com.smartcodeltd.jenkinsci.plugin.assetbundler.filters.LessCSS.doFilter(LessCSS.java:47) 
    at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:132) 
    at org.jenkinsci.plugins.modernstatus.ModernStatusFilter.doFilter(ModernStatusFilter.java:52) 
    at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:132) 
    at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:126) 
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) 
    at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:49) 
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) 
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84) 
    at hudson.security.UnwrapSecurityExceptionFilter.doFilter(UnwrapSecurityExceptionFilter.java:51) 
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) 
    at jenkins.security.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:117) 
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) 
    at org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125) 
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) 
    at org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142) 
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) 
    at org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271) 
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) 
    at jenkins.security.BasicHeaderProcessor.doFilter(BasicHeaderProcessor.java:93) 
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) 
    at org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:249) 
    at hudson.security.HttpSessionContextIntegrationFilter2.doFilter(HttpSessionContextIntegrationFilter2.java:67) 
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) 
    at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:76) 
    at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:171) 
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) 
    at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:49) 
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) 
    at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:82) 
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) 
    at org.kohsuke.stapler.DiagnosticThreadNameFilter.doFilter(DiagnosticThreadNameFilter.java:30) 
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) 
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585) 
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) 
    at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:553) 
    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223) 
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127) 
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515) 
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185) 
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061) 
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) 
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97) 
    at org.eclipse.jetty.server.Server.handle(Server.java:499) 
    at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:311) 
    at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257) 
    at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544) 
    at winstone.BoundedExecutorService$1.run(BoundedExecutorService.java:77) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    at java.lang.Thread.run(Thread.java:745) 
+0

なぜ変更情報が不正確になりますか? Jenkinsは自動的に最後のビルドからコミットを表示します。また、内部のJenkins XMLファイルにプレーンテキストのgitログを書き込むこともできません。とにかく、Docker Buildプラグインはいくつかのフィンガープリンティングを行いますが、私はそれが変更を変更する理由を認識していません。 –

+0

パイプラインを監視する人は、最後の成功したビルドだけでなく、最後の夜間のビルド以降の変更を確認することができます。ビルドプロセス中に、 'gitman'や 'bower'のような外部依存関係マネージャが呼び出され、ユーザはサブモジュールからの変更が同じ変更ログで更新されたことを確認したいことがあります。それが間違っているかどうかは、ユーザーが望んでいるものに左右されます。 –

+0

それは私には奇妙な仕事のセットアップを示唆していますが、ええ、あなたはそれを行うことができます - あなた自身のチェンジセットをビルドに加えることが最良の方法かもしれないと思います。 –

答えて

1

:私は、Webフロントエンドの「変更」リンクをクリックしたときしかし、私はこれを得ましたあなたが期待どおりに行動します。

$JENKINS_HOMEディレクトリに直接書き込むことは避けてください。ビルドワークスペースにファイルを書き込んだ後、archiveArtifactsステップを使用して、Jenkinsマスターに確実に保存されるようにしてください。

あなたはwriteFile step、例えばを使用してこの操作を行うことができます。

def changelog = sh returnStdout: true, script: "git log …" 
writeFile file: 'changelog0.xml', text: changelog 
archiveArtifacts 'changelog0.xml' 

も注意してください、あなたが同じnode('docker')ブロックでcheckoutgit log手順の両方を実行する必要があること(彼らはまだ、しかし別のstageのブロックにすることができnodeの内部)。それ以外の場合は、どちらの場合も同じワークスペースが得られるとは限りません。git logに電話すると、空のワークスペースまたは古いワークスペースに移動することがあります。

+0

私の質問を再読した後、誤解を招くように聞こえます。私はそれを編集しました。もう一度見ていただけますか? 'changelog0.xml'への書き込みは常に成功し、Jenkinsのマスターにログインしてファイルを見ると、内容は常に同じです。ですから、なぜ私はドッカーのコンテナコールを削除したときに、ジェンキンスは(Webフロントエンドの)Job changelogに変更を表示していますか? 'changelog0.xml'は、Jenkinsの文書によるビルド構造の一部です。それを明示的にアーカイブする必要がありますか? –

+0

あなたの質問は今やもう少し意味がありますが、私のアドバイスはここでも適用されます:)ドキュメントはbuildsフォルダのchangelog.xmlを参照するかもしれませんが、このファイルを自分で書くべきではありません。特にプレーンテキストではありません。XMLでなければなりません。ファイルをアーカイブして変更に表示する方法はありません。しかし、潜在的にJenkins APIを使用して、Changesetオブジェクトを 'currentBuild.rawBuild'オブジェクトに追加することができます。 –

+0

GitSCMプラグインがチェンジログ自体を構築するとき、それはXMLでもありません。それは 'git whatchanged'をいくつかの書式設定引数とともに呼び出し、そこで結果をダンプします。少なくともこれは3.0.1にも当てはまります。私はプラグイン開発の変更履歴を読んでいます。そこにはXMLに切り替わったとは言いません。 –

0

次のパイプラインスクリプトは、必要なスクリプト承認がすべて行われた場合、変更ログに1つのコミットを追加する必要があります。

import hudson.scm.SubversionSCM 
import hudson.scm.SubversionChangeLogParser 

node('master') { 
    stage('build') 
    { 

    } 
    stage('test') { 
    writeFile file: 'changelog.xml', text: '''<?xml version="1.0" encoding="UTF-8"?> 
<log> 
    <logentry revision="12344"> 
    <author>me</author> 
    <date>2017-12-21T16:57:06.737430Z</date> 
    <paths> 
     <path prop-mods="false" text-mods="true" kind="file" action="M">/path/to/repo/modified/file.cpp</path> 
    </paths> 
    <msg>my commit message</msg> 
    </logentry> 
</log>''' 
    def parser = new SubversionChangeLogParser(false) 
    def file = new File(env.WORKSPACE,"changelog.xml") 
    def modified_changesets = parser.parse(currentBuild.rawBuild, null, file) 
    currentBuild.rawBuild.changeSets.add(modified_changesets) 
    } 
} 
関連する問題