Chapters
📘 Chapter #1
📗 Chapter #1-1 継続的インテグレーション(CI)構築
📗 Chapter #1-2 継続的インテグレーション(CI)手順
📘 Chapter #2
📗 Chapter #2-1 VB6で使用する 環境設定
📗 Chapter #2-2 VB6で使用する プロジェクトの追加
📘 Chapter #A
📗 Chapter #A-1 バージョンアップ TFS 2018 Update 1 → Update 3、検索サービスの分割
📗 Chapter #A-2 バージョンアップ 2019→2019 Update1
TL;DR
- Azure DevOps Serverの環境(オンプレ)は構築し、ビルドサーバー設定済みであることが前提
- .NET アプリケーションのプロジェクトで事前に必要な設定
- ビルド定義作成、手動キューまでの手順
そもそも継続的インテグレーションとは?
定期的、または手動でリポジトリに頻繁にマージし、かつ「定期的・自動的」に「ビルド・テスト」を行うという手法。また、その先の継続的配置(CD)を行うこともできる。
https://www.techmatrix.co.jp/product/cisolution/cisolution1.html
https://docs.microsoft.com/ja-jp/sharepoint/dev/spfx/toolchain/implement-ci-cd-with-azure-devops
利点
- そのビルドにどの変更点が含まれているか、ということがわかりやすくなる
- テストコードを記載すると、テストまで自動で実施してくれる
- 毎日ビルドを実施すると、どの時点でビルド、テストに失敗したかということを早めに見つけることができる
- ビルド結果をリリースとして保存することもできる。リリースで自動でテストサイトに適用することも可能であるため、正確性、時短につながる
- ビルド結果をダウンロードできるため、いつ時点のビルドでテストをしたのか、ということも分かりやすい
- ビルド結果は、ファイル共有に出力することも可能
.NET アプリケーションのプロジェクトで事前に必要な設定
同じソースコードから常に同じバイナリを生成する
Deteministicを使用する
ビルドした日が違うと、ソースが同じでも作成したバイナリが別になることへの対応。
/deteministic: GUID の算出にタイムスタンプと乱数を使わなくする
ソースコードなどのハッシュ値から計算するので、ソースコードに変化がない限り一意
制限としては、バージョンとして*を使用できなくなる
手順:Directory.Build.propsを作成
https://ufcpp.net/blog/2018/12/directorybuild/
https://thomaslevesque.com/tag/build/
対象としたいプロジェクトファイルの上の階層(ソリューションファイルと同じ場所など)に、Directory.Build.props
を配置する。vbproj, csprojなどに、自働で適用される。UTF-8で作成する。
<Project>
<PropertyGroup>
<Deterministic>true</Deterministic>
</PropertyGroup>
</Project>
Pathmapを使用する
デバッグ情報のパスが問題となる場合は、pathmapの設定も行う
/pathmap: デバッグ情報などで使うファイルのパスを所定のルールで置き換え可能にする
置き換え元=置き換え後 という形式で、単純な置換をするだけ
置き換え元の方に $(MSBuildProjectDirectory) とかを指定して、置き換え先の方を/とかあたりさわりのない固定の文字列にしておけば、どの環境でも同じ結果が得られる
手順
1.パイプラインの作成
1-1.左側のビルドをクリックし、新しいパイプラインをクリック(すでに作成していたら新規作成)
1-2.使用しているソース管理を選ぶ、TFVCかAzure Git
- 自分のプロジェクト以外に参照している(相対で)ソースがあれば追加する
1-3.作成したいテンプレートを選択(ここでは、.NET デスクトップ)
1-4.エージェントを選択する
後は、必要に応じてカスタマイズ(対象とするソリューションや、最終的にコピーする成果物の絞り込みなど)
2.手動ビルド(キュー)の手順
2-1.ビルド定義右上のキューをクリック(ビルドできる)
2-2.ビルド結果を参照できる
右上のリンクから、成果物(デスクトップアプリならexeなど)をダウンロード
※成果物リンクがない場合は、F5更新