web-dev-qa-db-ja.com

バージョン番号を使用してソフトウェアを構築する

これは、バージョンに番号を付ける方法についての質問ではありません。

特定のバージョン番号付けスキームを持つアプリケーションがあります。また、ソフトウェアを定期的に構築するJenkins CIサーバー(まもなくAtlassian's Bambooに置き換えられる予定)もあります。アプリケーションはバージョン番号を表示するため、コードベースのファイルの1つに書き込まれます。

バージョンをリリースする前に手動でバージョン番号を変更したくありません。現在の解決策は、コードベースのバージョン番号を変更し、それをコミットし、リポジトリにバージョン番号のタグを付け、それをプッシュし、アプリケーションを配布用にパッケージ化するJenkinsジョブがあることです。その問題は、ビルドが成功または失敗する前にバージョンをリリースすることを決定する必要があることです。

私たちがやりたいことは、これです。Jenkinsに定期的に製品をビルドさせ、ユニットテストを実行してもらいます。その後、合格したビルドを選択し、特定のバージョン番号でリリースします。

要約すると、これは私が望むプロセスです:

  • Jenkinsは定期的に製品のビルドとテストを行っています。
  • バージョンをリリースするときは、Jenkinsから最後に合格したビルドを選択し、チェックしてリリースします。
  • 結果のリリースには、バージョン番号が含まれているはずです。
  • ビルドおよびリリースされたコミットには、リリース番号のタグを付ける必要があります。

製品バージョンをリリースするためのベストプラクティスは何ですか?私の要求を満たすプロセスはありますか?

6
Amir Rachum

私たちにも同じような状況があり、私は次のようにビルド/リリースプロセスをセットアップします。

  • 私たちのバージョン番号は4つの部分(メジャー、マイナー、ビルド、リビジョン)で構成されています。最初の2つの部分はリリース後にのみ変更され、他の2つの部分はビルドごとに変更されます。私たちの場合、メジャーバージョンとマイナーバージョンはJenkinsビルドパラメーターから取得され、リビジョン番号はSubversionから取得され、ビルドバージョンはビルドを実行するJenkinsジョブのビルド番号です。リポジトリのファイルからメジャーバージョン番号とマイナーバージョン番号を読み取ることもできます。
  • Jenkinsは、ソフトウェアがバージョン番号を決定するために使用するファイルを書き込みます。
  • このファイルはJenkins内でビルドアーティファクトとしてアーカイブされますが、notがリポジトリにコミットされます。このように、各ビルドには後で取得できる一意のバージョン番号がありますが、バージョン番号はリポジトリで追跡されません。

  • リリースするために、Release Jenkinsの仕事があります。このジョブは実際には何もビルドしませんが、どのビルドをリリースするかをパラメーターとして取り、そのビルドのリビジョンでリポジトリにタグを付け、Jenkinsのビルドをリリースとしてマークします(ビルドプロモーション機能を使用)。バージョン情報を含むファイルを使用して、タグ名にエンコードするバージョン番号を決定できます。