2017-01-04 6 views
3

Jenkinsがビルドを作成するときに自動的にバージョンタグをgitリポジトリにプッシュしたいと思います。しかし、これを行うには、作成されたビルドアーティファクトにversion nameversion codeが必要です。Jenkinsがbuild.gradleファイルから環境変数にAndroidアプリケーションのバージョンを読み込みます

私は現在、(それが正常に動作します)これを達成するために以下の設定を使用しています:

  1. ビルドでGradleのタスクを作成します。
  2. バージョン名とバージョンコードを含むプロパティファイルを作成するGradleタスクを実行します。
  3. EnvInjectプラグインを使用すると、環境変数が現在のJenkinsジョブで使用できるようにプロパティファイルを読み込み/挿入します。

version.propertiesファイルを生成するコードは次のようになります。

android.applicationVariants.all { variant -> 
    def taskName = "createVersionFile" + variant.flavorName.capitalize(); 
    if (tasks.findByPath(taskName) == null) { 
     tasks.create(name: taskName) { 
      doLast { 
       def prop = new Properties() 
       def propFile = new File("$buildDir/outputs/version.properties"); 
       prop.setProperty('versionname', variant.versionName + '-' + variant.versionCode) 
       propFile.createNewFile(); 
       prop.store(propFile.newWriter(), null); 
      } 
     } 
    } 
} 

(前述のように)これは動作しますが、それは私がためにbuild.gradleファイルを変更することを余儀なくよ、かなり扱いにくい方法ですジェンキンスはその仕事をしています。

build.gradleファイルを変更することなく、簡単な方法がありますか?たぶん、に「version.properties」タスクが含まれているファイルの2番目のbuild.gradleを生成してもよいでしょうか?

+0

私はまったく同じことをしたいです。私は好奇心が強いです、あなたはどの解決策をとったのですか? –

答えて

1

私のビルドの哲学は、すべてがgradleによって利用可能でなければならないということです。あなたのプロジェクトで何をしたいのですか?これにより、どのような環境でもそれを繰り返すことができ、コマンドライン実行をサポートするだけのCIを​​簡単にセットアップできます。

だから、gradle git pluginをビルドに追加してgitを操作する(またはコマンドラインで行う)。

gradle.propertiesファイルをご覧ください。そこにバージョンコードと名前を定義することができます。 Androidのgradleスクリプトやgit操作でこれらの値をパラメータとして取得するには、特別なコードは必要ありません。だから、defaultConfigにそれらを入れることができます。

+1

私はあなたの提案が好きです、私はgralde gitプラグインをチェックアウトします。しかし、バージョン番号を 'gradle.properties'ファイルに追加することは本当にオプションではありません。これは、バージョン番号を2か所で変更する必要があるためです。 'gradle.properties'ファイルを読んで、その番号を' versionName'と 'versionCode'フィールドに注入できない限り、 –

+0

これは私の提案で、 'versionCode versions.code'と' versionName versions.name'は 'gradle.properties'から来ました –

関連する問題