しばやん雑記

Azure とメイドさんが大好きなフリーランスのプログラマーのブログ

Task ベースの初期化が必要なクラスを .NET Core の DI で利用する

.NET Core / ASP.NET Core で追加された Dependency Injection は Task ベースの Factory は用意されておらず、ドキュメントではサービスの解決は同期的に行うよう推奨されています。とはいえ、Task ベースでの初期化が必要な場面がちょいちょいあるので、何…

Azure Functions から送信される Application Insights テレメトリにバージョンを付ける

勝手に付いてるだろうと思っていましたが、Azure Functions の場合は Application Insights の各テレメトリにバージョンが付いていなかったので、ITelemetryInitializer を使ってカスタマイズすることにしました。ASP.NET Core の場合はデフォルトで付いてい…

Templates を使って Azure Pipelines から複数 App Service へのデプロイを効率化する

現実問題として 1 つのリポジトリに 1 つだけアプリケーションが存在するというケースはあまりなく、大体は複数のアプリケーションをそれぞれデプロイする必要があります。アプリケーションが 1 つだけであっても、別のリージョンに DR としてデプロイしてお…

Azure Pipelines の Hosted Agent を使うと C# 7.1 以降のコードがビルド出来ないのを直す

Azure Functions なプロジェクトのビルドで Azure Pipelines を使っていたところ、手元ではビルド出来ていたコードが Azure Pipelines だとビルドエラーになってしまったので、最適な解決策を調べていました。具体的には C# 7.1 以降のコードが Azure Pipeli…

Azure Pipelines の Multi-stage pipelines でデプロイの承認機能を利用する

Azure Pipelines の YAML だと使えない機能だったデプロイの承認が、ちょっと前に使えるようになっていたらしいです。Pipeline Caching ばかり見てたので気が付きませんでした。承認を使いたいケースが地味にあるので、手元のプロジェクトで試してみました。…

C# で Interactive な Prompt を構築するライブラリを作った

C#

Go や Node.js 向けは見つけられたのですが、C# / .NET Core 向けは探しても見つからなかったので作りました。.NET Standard 2.0 なので .NET Core / .NET Framework の両方で動くはずです。CoreFx の Console ベースで書いていて、Windows / Linux / macOS …

Azure Pipelines でよく使う YAML のチートシートを作った

Azure Pipelines は YAML を使ってスクリプトを書くだけではなく、予め用意されたタスクを使って面倒な処理をシンプルに書くことが出来ますが、地味にはまるポイントも多いのでよく使う定義をメモしておきます。YAML Schema 読めば大体は理解できるはずです…

Node.js アプリを Azure App Service へ最適な形でデプロイする

何となく package.json を眺めていて、これまでは devDependencies も含めた形でデプロイしていたことがあったと思ったので、最適なパッケージをビルドしてデプロイする方法を確認しました。実際は Docker Image を Multi-stage build で作成するのと考え方…

Azure Pipelines のディレクトリを指す変数はどれを使うべきなのか調べた

Azure Pipelines を使っていて地味に悩むのがディレクトリの扱いです。一般的な CI SaaS だとソースがチェックアウトされたディレクトリを基準に、ビルドなり発行を行っていきますが、Azure Pipelines はディレクトリが複数用意されています。Predefined var…

AppVeyor を捨てて Azure Pipelines に全て移行した話

4 年ほど使ってきた AppVeyor にあった 30 近いプロジェクトを今日、隅田川花火大会という外に出たくないタイミングで断捨離しつつ全て Azure Pipelines に移行しました。最近は Azure Pipelines をガッツリ弄っていたので、すんなりと移行出来ました。*1全…