しばやん雑記

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

DevOps

Terraform と Azure Pipelines を使って App Service / Azure Functions をコード化して管理する

ぼちぼち ARM Template を JSON で書くのが限界と思い始めてきたので、Terraform を使って Azure リソースの管理をやっていこうという気持ちになりました。Terraform で使われている HCL は JSON で書く ARM Template よりも読み書きがしやすいのと、CI/CD …

Azure Pipelines を使った Azure Web Apps / Azure Functions (Linux) へのデプロイを試した

Run From Package に関するドキュメントを眺めていたら、Linux の Premium Plan に対して Run From Package が使えそうな記述があったので試しました。暫く Linux の App Service を触っていなかったので、知識のアップデートを兼ねてます。まずは Linux の …

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 ばかり見てたので気が付きませんでした。承認を使いたいケースが地味にあるので、手元のプロジェクトで試してみました。…

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全…

Azure Artifacts で Public Feed を作れるようになっていた(おまけで Credential Provider も試した)

久し振りに Azure Artifacts を開いたら、いつの間にかに New public feed というボタンが追加されていたので試すことにしました。MyGet のように独自の公開リポジトリを利用出来るので、Azure Pipelines と組み合わせて Nightly Build の公開などに向いてい…

Azure Pipelines の Logging Commands が扱いにくいので CLI を作った

Azure Pipelines は Job から標準出力に特殊なテキストを書き出すと、それをコマンドとして扱う機能があります。Logging Commands と呼ばれているみたいですが、ログ以外にも機能があります。この形式がとにかく分かりにくいし、毎回 echo や Write-Host を…

Azure Pipelines の Pipeline Caching (Preview) を試してみた

Azure Pipelines の弱点としてキャッシュが使えないことがちょいちょい言われているみたいですが、最近になってキャッシュ用のタスクがプレビューとして公開されたようです。2 月ぐらいに開発が始まったようですが、まあまあ時間がかかりましたね。ドキュメ…

Azure Pipelines での Multi-stage pipelines の利用と既存パイプラインの移行

Azure Pipelines のドキュメントを読んでいると Release Pipeline に Classic と付けられていたので、先行きが少し怪しいです。Microsoft 的には YAML + Multi-stage pipelines を推奨して行くということのようです。Build 2019 で発表されていたらしいです…

Azure Storage と Azure Pipelines で静的サイトのホスティングとデプロイ自動化を行う

静的サイトのホスティングを App Service で行うことが多いのですが、まあ高確率で Azure Storage の Static website について言及されます。Static website は便利なんですが、フロントに Azure CDN がほぼ必須かつデプロイが行いにくいので避けてきました…

Azure Pipelines で VuePress のビルドとデプロイを自動化する

これまで Grav を使って shibayan.jp にペライチのコンテンツを配置していたのですが、メンテナンスが面倒だったりパフォーマンスに問題があったので移行を考えていました。そして今日もアップデートが失敗して Composer からやり直しになった結果、三宅さん…

ASP.NET Core アプリケーションにも Azure Pipelines でバージョンを付ける

.NET Core から AssemblyInfo.cs に書いていたバージョンなどを、MSBuild を使ってビルド時に自動生成されるようになったので、簡単にアセンブリのバージョンを CI で埋め込めるようになりました。NuGet 向けでは普通にビルド時にバージョンを付けてきました…

Azure Pipelines で NuGet パッケージのデプロイを自動化

AppVeyor から Azure Pipelines への移行を見越しつつも、ちゃんと NuGet パッケージの発行周りを検証していなかったので Build と Release のパイプラインを組みました。AppVeyor での自動化については前回書いたエントリを参照してください。やっているこ…

Azure Pipelines を使って Web App for Containers (Windows) への自動デプロイを行う

Azure Pipelines にも Windows Server 2019 の Hosted Agent が追加されているので、これまでも ltsc2019 向けの Docker Image はビルド出来ていました。現状の Agent Image には多少の問題*1はありますが、ビルドには問題ありません。最近は .NET Framework…

Azure Artifacts を使って自前 NuGet サーバー運用を捨てる

最近 Azure DevOps 周りを弄ってますが、あまり話として Azure Artifacts について聞いた覚えがないので軽く確認しておきました。単なるプライベート NuGet リポジトリではないのは確かです。とりあえずドキュメントは参照しておきますが、思ったより機能は…

Azure Pipelines から Run From Package としてデプロイする

そろそろ Azure Functions だけじゃなくて Web Apps でも Run From Package を使ったデプロイを行っていきたいので、ひとまず標準で Run From Package でのデプロイに対応している Azure Pipelines を使ってパイプラインを組んでみました。Run From Package …