22

私は現在プロジェクトに取り組んでおり (私だけ)、そのプロジェクトのバージョン管理を処理する方法を既に知っています。クラシックを使用してい<major>.<minor>.<build or patch>ます。

私が抱えている問題は、対応するバージョンを指すいくつかのコミットにタグを付けたいのですが、手動で行いたくないということです。

今、私は現在やっています:

  • をリリースする場合はv0.2.13、 を変更してAssemblyInfo.csそのバージョンを設定します
  • Git で変更をコミットする
  • Git でタグをv0.2.13(手動で)追加する
  • プロジェクトをビルドする
  • ファイルを作成し.zip(すべての時間ではありません)、次のように名前を付けますProjectName v0.2.13

私はそれを間違っていますか?

最後のステップを自動的に実行するスクリプトを簡単に作成できますが、他の部分を自動化するための適切な方法があるかどうか疑問に思っています。

4

5 に答える 5

8

現在チェックアウトされている git commit を自動的に取得し、ビルド時に次のような属性をアセンブリに追加するビルド スクリプトが MSBuild にあります。

[assembly: AssemblyInformationalVersion("0.2.13+e3a6f2c1")]
[assembly: AssemblyVersion("0.2")]
[assembly: AssemblyFileVersion("0.2.13")]

バージョンの数値部分は、ビルド スクリプトが読み取る version.txt ファイルから取得されます。

アセンブリ バージョンには、ビルド番号をインクリメントするときにバインド リダイレクト要件が回避されるため、3 番目のオクテットがありません。AssemblyFileVersion には、その属性で許可されているすべてのデータが含まれており、AssemblyInformationVersion は任意の文字列にすることができるため、セマンティック バージョニングを使用して git コミット ID を含めることで、このプロジェクトをビルドしたソース バージョンを正確に示すことができます。

ビルドが成功したら、必要に応じて v0.2.13 タグを追加できます。個人的には、最終リリースをビルドするとすぐに、version.txt ファイルをインクリメントして、後続のすべてのビルドが次に高いバージョン番号を持つようにします。その後の各ビルドには、そのバージョンをリリースするまでそれがあり、コミットにタグを付け、version.txt ファイルを再度インクリメントし、繰り返します。

ちなみに、AssemblyInformationalVersion文字列は Windows エクスプローラーのファイル プロパティに表示されるため、これにより、任意にビルドされたバイナリから、一致する元のソース コードに確実に移動できます。また、残念ながら、この方法では csc.exe が AL を報告します???? セマンティック バージョンの形式が xyz 構文に準拠していないため、ビルドに関する警告。ただし、何かが壊れているわけではなく、警告を無視します。

ソース管理の責任と重複するため、明示的にソースを圧縮することはありません。少なくとも、ソースが何らかのオンライン サービスによってホストされている場合 (プライベート イントラネット上であっても)、ほとんどの git ホストは、特定のコミット ID に対してオンザフライでの zip としてのダウンロード機能を既に提供しています。

于 2012-12-28T16:03:29.000 に答える
1

ビルド サーバーを使用する機能がない場合は、手動で行うのがおそらく最善の方法です。ただし、時間があれば、何らかの種類のビルド サーバーを配置することを強くお勧めします。TeamCityで多くの成功を収めました。リポジトリを追跡するように設定している場合は、アセンブリ情報へのパッチ適用タグ付け、およびビルド後の展開を行う方法があります (これらには、可能なリンクがたくさんあります。ドキュメントを参照することをお勧めします)。

この投稿は、バージョン管理をセットアップする際に非常に役立ちました。NuGet ビットをほとんど除外することができ、適切な情報が含まれているはずです。TeamCity のセットアップに関する限り、「TeamCity セットアップ チュートリアル」をすばやく検索するだけで、大量のリソースが得られるはずです。幸運を!

于 2012-12-28T15:55:55.820 に答える
1

コミット後のすべてにMakefileを使用します。

ビルド システムの仕組みによっては、現在のブランチにタグを付けてこのタグをプッシュするターゲット「リリース」を追加できる場合があります。「ビルド」および「リリース」ターゲットに依存する「パッケージ」ターゲットも追加します。

それでもうまくいかない場合は、独自の Makefile を作成してください。「Makefile」に別の名前を付ける必要がある場合とない場合があります。

于 2012-12-23T12:06:22.530 に答える
0

あなたのニーズに合ったナント!これを確認してください:NAntタスクリファレンス

使いやすく、git リポジトリと組み合わせるのも簡単です :-)

于 2012-12-28T15:49:32.273 に答える
0

次の手順を使用して、次のようなことを成功させました。

  • 新しいコミットを共有 git リポジトリにプッシュする
  • TeamCity サーバーはコードをチェックアウトし、テストを実行してプロジェクトをビルドします
  • 成功した場合、TeamCity は展開パッケージのファイルも移動/削除/パッケージ化します
  • 次に、手動で展開できる展開ステージング領域に zip を FTP 送信します (これは完全に自動化できますが、セットアップは奇妙でした)。

ポストコミット フックを使用してブランチにタグを付け、TeamCity サーバーにプッシュできます。

于 2012-10-16T22:43:38.637 に答える