web-dev-qa-db-ja.com

定義中に何か問題が発生した場合、変数を定義し、デフォルト値に設定します

_build.gradle_に次のコードがあります

_version.properties_の内容は次のとおりです。

_buildVersion=1.2.3
_
  • Gradleビルド中の_$v_変数の値は次のとおりです:1.2.3
  • JENKINSビルドの_$artifactoryVersion_変数の値は、1.2.3 .1、1.2.3 .2、1.2.3 .x ...など。4桁目はJenkins BUILD_NUMBERで、Jenkinsビルド中にビルドスクリプトを段階的に使用できます。

しかし、デスクトップで_build.gradle_を実行しているときに、BUILD_NUMBER変数を使用できないか、ENVIRONMENT変数に設定しないと、trim()がnullで動作できないというエラーが表示されます。 (デスクトップ/ローカルビルドには_BUILD_NUMBER_がないため)。

私は方法を見つけようとしています.

  1. _BUILD_NUMBER_が利用できない場合、エラーでgradleビルド処理が失敗する代わりに、_jenkinsBuild = "0"_(ハードコーディング)を設定し、そうでないときに取得するものを選択するように、スクリプトに何をコーディングする必要がありますかJenkinsビルド。

    例:Bashでは、変数_var1=${BUILD_NUMBER:-"0"}_を設定します。変数_var1_は、有効で値に設定されている場合は_var1 = "0"_を有効なJenkins BUILD番号に設定します。

  2. 各開発者/ユーザーに、プロパティファイルでこの_BUILD_NUMBER_を設定させたくありません。私が望むのは、この変数が存在しない場合、コードはjenkinsBuilds変数に_"0"_を配置する必要があり、デスクトップビルド中にエラーが発生しないことです。 Jenkinsのビルド中に問題なく動作することを知っています。

_// Build Script
def fname = new File( 'version.properties' )
Properties props = new Properties()
props.load( new FileInputStream( fname ) )
def v = props.get( 'buildVersion' )


def env = System.getenv()
def jenkinsBuild = env['BUILD_NUMBER'].trim()
if( jenkinsBuild.length() > 0 ) {
  artifactoryVersion = "$v.$jenkinsBuild"
}
_
46
Arun Sangal

必要なのは、通常のJava/Groovyコードです。

def jenkinsBuild = System.getenv("BUILD_NUMBER") ?: "0"

上記のコードは、Groovyの「elvis」演算子を使用し、Javaの三項演算子を使用する次のコードの短縮形です。

def buildNumber = System.getenv("BUILD_NUMBER")
def jenkinsBuild = buildNumber != null ? buildNumber : "0"
103