GradleスクリプトでJenkinsビルド番号にアクセスするには、次のコマンドを呼び出します。
def buildNumber = System..getenv('BUILD_NUMBER')
初めてビルドを実行したときは正常に動作します。 2回目のビルドの実行時には、数値は増分されず、前回のビルド実行と同じままです。 4.4.1バージョンのGradleを使用しています。以前のバージョンで同じ問題が発生したことを覚えていません。
私の現在の回避策は、-no-daemonスイッチをGradleに渡すことです。ただし、そうするとデーモン機能の恩恵を受けることができません。デーモンを使用して、Gradleビルドで正しいビルド番号を取得する方法はありますか?
Java 9を使用していますか?Java 9を使用すると、Gradleがデーモンの環境を変更することはできなくなります-したがって、environmentを使用してプロパティを渡すことはできません変数。ログに次の警告が表示されます。
Warning: Unable able to set daemon's environment variables to match the client because:
Java 9 does not support modifying environment variables.
代わりに、Gradleのコマンドラインから'BUILD_NUMBER'
をシステムプロパティ(-DbuildNumber=$BUILD_NUMBER
)またはGradleプロジェクトプロパティ(-PbuildNumber=$BUILD_NUMBER
)として渡すことができます。
特別なブロックでSystemenvを読み取ることにより、これが議論され、解決されたようです gradleフォーラムで 。
class Globals {
String buildNr = System.getenv( 'BUILD_NUMBER' ).toString()
}
ext {
globals = new Globals()
}
// reference it like:
println "value of BUILD_NUMBER = " + globals.buildNr
私は通常、redisを使用してビルド番号を格納するタイムスタンプを使用してKey-Valueストアを構築します。このようにして、任意のクライアント間でデータを分離して取得し、データを送受信できます。