50 以上のサイトで同じコード ベースを使用して、非常によく似たプロセスを実行しています。Azure REST Management APIを使用してデプロイを実行します。サイト固有の設定を web.config から個々の ServiceConfiguration..cscfg ファイルに移動し、使用CloudConfigurationManager.GetSetting("settingsKey")
して構成値を取得することをお勧めします。設定にアクセスするために、おそらくドメインベースのキーの簡単なリストを作成します。
Management APIの使用に関する Azure チームの優れたコード サンプルは、こちら にあります。これをコード ベースに適用して、コンソール アプリを作成し、TFS ビルド プロセス中にそのコンソール アプリを呼び出しました。以下は、サブスクリプション内のホストされたサービスのリストを取得し、各ホストされたサービスの展開を更新するために使用する関連コードです。
var packageUrl = UploadFileToBlob(package);
var services = new ListHostedServicesCommand();
services.Run();
hostedServices = services.HostedServices;
var date = DateTime.UtcNow.ToString("yyyyMMdd-hhmmss-");
var label = date + "some-deployment-name";
var fileinfo = new FileInfo(config);
if (!string.IsNullOrEmpty(packageUrl) && fileinfo.Exists)
{
// get the url of the package uploaded to blob
AzureCommand.PackageLocation = packageUrl;
AzureCommand.ConfigFileLocation = fileinfo.FullName;
AzureCommand.DeploymentSlot = "production";
AzureCommand.Mode = "auto";
AzureCommand.Label = label;
foreach (var hostedService in hostedServices)
{
Console.WriteLine("updating: " + hostedService.ServiceName);
// get the deployment unique name - required for upgrade
AzureCommand.HostedServiceName = hostedService.ServiceName;
AzureCommand.DeploymentName = null;
var getDeployment = new GetDeploymentCommand();
getDeployment.Run();
AzureCommand.DeploymentName = getDeployment.Deployment.Name;
// upgrade the existing deployment
var upgradeDeployment = new UpgradeDeploymentCommand();
upgradeDeployment.Run();
servicesOperations.Add(upgradeDeployment.TrackingId, upgradeDeployment.ServiceManagement);
}
// check status of all operations submitted
foreach (var servicesOperation in servicesOperations)
{
// check status of operations
AzureCommand.WaitForAsyncOperation(servicesOperation.Value, servicesOperation.Key);
}
}