Visual Studio Online でのビルド時に Git のコミットハッシュを埋め込む
ビルド時にどのソースバージョンのものを使ったかを知りたいことがあります。
下記の記事を参考に Visual Studio Online(VSO)で ビルドしたアセンブリに Git のコミットハッシュを埋め込んでみました。
手順は以下です。
- PowerShellで AssemblyInfo.cs の書換スクリプトを作成する
- VSOでのビルド定義に、作成したスクリプトの実行ステップを追加する
1. PowerShellで AssemblyInfo.cs の書換スクリプトを作成する
書換スクリプトの大枠は参考記事とほぼ同じで、2か所だけ変更しました。
Git のコミットハッシュ変数
VSOのビルド時における Git のコミットハッシュは $env:BUILD_SOURCEVERSION
で取得できます。
AssemblyInfo.cs の場所
$env:SYSTEM_DEFAULTWORKINGDIRECTORY
を基準にパスを直接書いています。
どちらも使える変数は以下のサイトが参考になります。
最終的なスクリプトはこちら。 gist.github.com
2.VSOでのビルド定義に、作成したスクリプトの実行ステップを追加する
赤枠のように PowerShell の実行ステップを追加します。
Git にあげた書換スクリプトを設定します。
確認
exeのプロパティから確認できました。
Git コミットハッシュ表示カッコいい!
ASP.NET Core + ubuntu + nginx + postgreSQL でWebアプリを公開してみた
ここまで作ったものをサーバ環境に上げてみることにしました。
普段ならWindowsServerにIISでといきたいところですが、 .NET CoreがLinuxに対応しているので、AzureにUbuntuサーバを立てて、 nginx + postgreSQLでいくことにしました。
仕事では専ら、WindowsServer + SQLServerなので、未知の領域です。
予想外にサクッと終了
ほぼ↓のドキュメント通りでsupervisorによる実行までできました。
https://docs.asp.net/en/latest/publishing/linuxproduction.html#monitoring-our-web-application
supervisorの設定ファイルが最初よく分かりませんでしたが、
dotnet publish
で作成されたファイルを実行するときにdotnet hoge.dll
で動くと気づくとすんなり入ってきました。
設定ファイル内に、ASPNETCORE_ENVIRONMENT=Production
もありました。
Startup.csにある、↓のコードで使われるやつですね。
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
ちなみにUbuntuは16.04を使用しました。
.NET Coreのインストールは下記のページ通りです。
.NET - Powerful Open Source Development
.NET Core周りのドキュメント、かなり充実してます。
地味?に悩んでいること
Ubuntuへのファイル転送はWinSCPを使って行いましたが、UIをポチポチしています。
これのベストプラクティスってどんな感じなんでしょうか。