2016-12-08 17 views
2

gradleでは、現在のブランチ名とコミット番号を接尾辞としてversionNameに追加したいと思います。なぜなら、私がJockkinsでHockeyAppをリリースするためにアプリケーションをビルドすると、そのアプリケーションがビルドされたブランチ&がコミットしていることを示すのが便利なのです。)プロンプトまたはAndroidでgitブランチ名を取得しています。gradle:ジェンキンスでHEADを返します。

これをコマンドプロンプトに入力すると、返さ:

git rev-parse --abbrev-ref HEAD 

同じことが、私はthis答えのいずれかのコードを使用して、AndroidのGradleの中でこのラインを使用するときに発生、またはのGradleのコードのこの部分に示すように:

def getVersionNameSuffix = { -> 

    def branch = new ByteArrayOutputStream() 
    exec { 
     // The command line to request the current branch: 
     commandLine 'git', 'rev-parse', '--abbrev-ref', 'HEAD' 
     standardOutput = branch 
    } 
    println "My current branch: " + branch 
    def versionNameSuffix = "-" + branch 

    // ... some other suffix additions ... 

    return versionNameSuffix 
} 

buildTypes { 
    debug { 
     applicationIdSuffix ".test" 
     versionNameSuffix getVersionNameSuffix() 
    } 
} 

ログ結果として得られる(これは正確に私が望むもの):

"私の現在のブランチ:機能/ MyFeature" しかし

、私はジェンキンスジョブで私のアプリを構築し、それの出力は以下となり異なる結果:

「私の現在のブランチ:HEAD "

なぜ、Jenkinsで現在のブランチ名を正しく取得するのはなぜですか?

編集:私はまた、ジェンキンスに、ほとんどの場合、正しくbranchNameを返す異なるアプローチを、使用してきました

:プロンプトで

git name-rev --name-only HEAD 

出力例:

「私の現在の支店:機能/ MyFeature」

ジェンキンスで

出力例:

"私の現在のブランチ:リモコン/起源/機能/ MyFeature"

私が好きならそれは大丈夫ですので、私は、 "リモコン/起源/" を削除することができます!

しかし、この方法では、異なる問題が発生します(プロンプト、gradle、Jenkinsの両方)。私が最後にコミットタグ付けされている場合は、支店名を出力しませんが、この:

"私の現在のブランチ:タグ/ mytagという^ 0"

EDIT 2:

第3のアプローチは、hereです。

答えの下にコメントを含めると、私はgrep *を使用して、プロンプトでブランチを取得できます。しかし、私はgradleコードでバックスラッシュを使うことはできません。これは失敗します:

commandLine 'git', 'branch', '|', 'grep', '\\*' 

アドバイスはありますか?

答えて

0

ENVをお試しください:BRANCH_NAME env.BRANCH_NAMEと

BRANCH_NAME 
    For a multibranch project, this will be set to the name of the branch being built, for example in case you wish to deploy to production from master but not from feature branches. 

アクセスを

+0

私が使用できる 'ENVを'。 build.gradleでは使用できますが、env.BRANCH_NAMEは使用できません。 JenkinsFileのenv.BRANCH_NAMEにアクセスできるので、パイプラインやJenkinsジョブのパラメータとして使用できますが、それが役に立たないと思います。私はbuild.gradleでそれが必要です。 –

+0

"$ System.env.BRANCH_NAME"を試してください – Amityo

+0

これはうまくいきません。アプリケーション(またはモバイル)モジュールのbuild.gradleでそのコマンドを使用できましたか?もしそうなら、あなたはそれをどこで定義しましたか? –

関連する問題