Azure と GitHub で継続的デプロイ (2017)

以前に Azure と GitHub で継続的インテグレーション
Azure と Visual Studio Online (Git) で継続的インテグレーションなどの記事を書きましたが、
情報が古くなっているため、現在の環境で改めて検証しました。

現在の Azure Web App でバージョン管理システムからの継続的デプロイ (Continuous Deployment, CD) を構成する方法としては、

  • [デプロイ オプション] を設定する
  • [継続的配信] を設定する (ただしプレビュー)

の 2 種類があり、いずれかを選択することになります。

image

いずれの方法でも、バージョン管理システムとして Visual Studio Team Services (VSTS) も GitHub もサポートしています。
この 2 つの主な違いは、

  • [デプロイ オプション] では、リポジトリ内に含められる Web アプリケーションは 1 つ。
  • [継続的配信] では、対象の .sln を指定できるため、リポジトリ内に Web アプリケーションが複数存在してもよい。
    その他にも、細かい設定ができる。

です。
Web アプリケーションが 1 つしか含まれていないリポジトリをシンプルに運用したいのであれば、[デプロイ オプション] でよいでしょう。

 

以下では GitHub のリポジトリに対して [デプロイ オプション] を設定してみます。
なお、GitHub 以外の Git (VSTS など) でも同様の手順で構成できます。
[継続的配信] については次回の Azure と VSTS で継続的デプロイ (2017) で書いています。

まず GitHub のリポジトリに Web アプリケーションを commit/push します。
今回は例として、ASP.NET MVC Web アプリケーションとします。
リポジトリに bin フォルダーなどを含める必要はありません。

image

リポジトリはパブリックでもプライベートでもかまいませんが、
自分が所有しているリポジトリでなければならないため、他の人のリポジトリであれば fork しておきます。

 

次に、Azure で Web App を作成します。

image

作成が完了したら、[デプロイ オプション] を構成します。
ソースとして GitHub を選択すると、アカウント承認の画面が現れます。
さらにリポジトリとブランチを選択します。

image

 

必要な設定はこれだけです。設定完了と同時に、ビルドとデプロイが開始されます。
[継続的配信] では数分かかるのに対して、かなり早く完了します。

image

以降も、ソースコードを変更してリポジトリに commit/push するだけで、自動的にビルドとデプロイが実行されます。
開発時には、開発用のブランチおよび Web App を利用するとよいでしょう。

image

過去のバージョンを選択して再デプロイすることもできます。

image

GitHub のリポジトリの [Settings] – [Webhooks] で、Azure Web App と連携していることを確認できます。

image

 

次回:Azure と VSTS で継続的デプロイ (2017)

参照
Azure App Service への継続的なデプロイ

Azure と GitHub で継続的インテグレーション (旧版)
Azure と Visual Studio Online (Git) で継続的インテグレーション (旧版)

広告
カテゴリー: ALM, クラウド. タグ: , . 3 Comments »

Azure と GitHub で継続的インテグレーション

(追記:この記事の改訂版→ Azure と GitHub で継続的デプロイ (2017) )

以前に Azure と Visual Studio Online で継続的インテグレーションというエントリを書きましたが、
今回はバージョン管理システムとして GitHub を利用した場合の
Azure での継続的インテグレーション (Continuous Integration, CI) について記述します。

 

■ リポジトリを作成する

まず、GitHub でリポジトリを作成します。
下の図ではプライベート リポジトリを作成していますが、
パブリック リポジトリでもプライベート リポジトリでも以降の手順は同じです。

image

 

■ Azure Web サイトを作成する

Microsoft Azure の管理ポータルで、新規の Web サイトを、[カスタム作成] を選択して作成します。
[ソース管理から発行] をオンにします。

image

[GitHub] を選択します。

image

GitHub の承認が完了したら、[リポジトリ名] を選択します。
[リポジトリ名] の選択肢には、プライベート リポジトリも同じように含まれます。

image

 

Web サイトの作成が完了すると、現在のリポジトリの内容がデプロイされます。

image

まだ Web アプリケーションのソースコードが含まれていないため、Web サイトはこのような表示になります。

image

GitHub のリポジトリの [Settings] で、Azure と連携していることが確認できます。

image

 

■ Web アプリケーションをコミットする

ASP.NET MVC で Web アプリケーションを作成して、GitHub に commit/push します。
bin フォルダーを含める必要はありません。
commit/push が完了すると、自動で Web アプリケーションのデプロイが開始します。

image

デプロイが完了しました。

image

以降も、ソースコードを変更して GitHub に commit/push するだけで、自動的にデプロイされます。

image

 

■ デプロイの仕組み

今回の手順では、Visual Studio Online の場合とは異なり、ビルドのタスクを設定していません。

Azure Web サイトの内部では Kudu というツールが動作しており、
GitHub や Dropbox と連携している場合にデプロイが開始されると、
ソースコードを取得し、ビルドを実行して、Web サイトにコピーする、という一連のタスクを実施します。

Kudu には管理サイトがあります。
Kudu の管理サイトにアクセスするには、まず Web サイトのダッシュボードで [デプロイ資格情報] を設定します。

image

Kudu の管理サイトは、

https://site-name.scm.azurewebsites.net/

のように、サイト名のあとに「scm」を追加すればアクセスできます。表示されない場合は、

https://site-name.scm.azurewebsites.net/deploy

も試してみてください。

Kudu の管理サイトでは、エクスプローラーのようにファイルにアクセスできます。

image

また、Web サイトの [デプロイ] ページでも、デプロイのログを見ることができます。

image

これらから判断すると、デプロイ時には差分のファイルのみを取得してビルドし、
ビルド結果の差分のファイルのみを Web サイトにコピーしているように見えます。
したがって Immutable Infrastructure ではなく、変更点が少なければデプロイが速く完了します。

前回: Azure と Visual Studio Online で継続的インテグレーション
次回: Azure Web サイトに Dropbox からデプロイ

参照
Kudu (GitHub)

カテゴリー: ALM, クラウド. タグ: , . 5 Comments »