1

Jenkins 1.596、ワークフロー 1.3、および Svn プラグイン 2.5 を使用しています。ワークフロー スクリプトで svn リビジョン番号を取得しようとしています。

私のワークフロー スクリプトのセクションは次のとおりです。

node {
   checkout scm: [ $class: "SubversionSCM", locations: [[ remote:'https://secure3.svnrepository.com/somerepo/trunk', credentialsId: cid]] ]
   stage 'build'
   dir('trunk') {
      def revision = 'svn info'.execute().in.text.split('\n').find { it.startsWith('Revision') }.split(':')[1].trim()
      println revision
      def svnHome = tool 'Svn'
      sh "$svnHome/bin/svn info"
      def mvnHome = tool 'Maven'
      sh "export JAVA_HOME=/var/jenkins_home/java; $mvnHome/bin/mvn --version"
      sh "export JAVA_HOME=/var/jenkins_home/java; $mvnHome/bin/mvn clean deploy"
}

ここでは、2 つの試行が表示されます。1 つ目は「java.io.IOException: Cannot run program "svn": error=2, No such file or directory」と表示され、2 つ目は「Svn という名前のツールが見つかりません」と表示されます (「サブバージョン」)。def revision = System.getenv('SVN_REVISION')「null」を印刷しようとしています。

どうすればこれを行うことができるでしょうか?

4

4 に答える 4

0

各 SVN モジュールの変数を使用してそれを行う方法があります。以下の回答を参照して ください https://stackoverflow.com/a/24956967/5842403 基本的に、「x」が svn URL モジュールのカウンターである $SVN_REVISION_x 変数を使用します。その変数をエコーし​​て、アーティファクトとしてファイルに入れることができます。

于 2016-01-28T12:31:15.833 に答える
0

インターネットで素敵なスクリプトを見つけたので (場所は覚えていません)、グルーヴィーなスクリプトを使用しているので、私にとって非常にうまく機能するこのソリューションを共有したいと思いました。

def url = "ENTER HERE YOUR SVN URL"
def SVN_REVISION = "svn info --show-item last-changed-revision $url".execute().text

echo "$SVN_REVISION" /*should work now*/

このスレッドを掘り下げて申し訳ありませんが、これが一部の人々にとってうまくいくことを願っています。

これらの変数を使用するときは、二重引用符を忘れずに使用してください。これは、私には見つけるのがちょっと難しかったです。:-/

于 2016-11-24T08:28:27.967 に答える