private IEnumerable <UploadLogEntry> GetChangeLogEntries() { List <UploadLogEntry> results = new List <UploadLogEntry>(); var container = GetContainer(); var logEntries = container.ListBlobs(prefix: ProductName.Trim() + "/", useFlatBlobListing: true, blobListingDetails: BlobListingDetails.None); foreach (var entry in logEntries) { results.Add(AzureXmlSerializerHelper.Download <UploadLogEntry>(entry.Uri)); } return(results); }
public static IEnumerable <FileVersion> GetCloudVersions(BlobUri uri) { FileVersionList result = null; if (uri.Exists()) { result = AzureXmlSerializerHelper.Download <FileVersionList>(uri); } else { result = new FileVersionList(); } return(result); }
public static async Task <IEnumerable <FileVersion> > GetCloudVersionsAsync(BlobUri uri) { FileVersionList result = null; if (uri.Exists()) { result = await AzureXmlSerializerHelper.DownloadAsync <FileVersionList>(uri); } else { result = new FileVersionList(); } return(result); }
public async Task ExecuteAsync() { var creds = GetAzureCredentials(); var localFileInfo = Common.Utilities.GetLocalVersions(StagingFolder); var cloudFileInfo = Common.Utilities.GetCloudVersions(creds.AccountName, ContainerName, ProductName); IEnumerable <Common.FileVersion> versions = null; bool newVersionAvailable = false; string newVersionInfo = null; if (!cloudFileInfo.Any()) { // no cloud version info present, so we'll assume new version available newVersionAvailable = true; newVersionInfo = "No cloud version info found, installer will be uploaded."; versions = localFileInfo; } else { // have any local version numbers increased? var newVersions = from local in localFileInfo join cloud in cloudFileInfo on local.Filename equals cloud.Filename where local.GetVersion() > cloud.GetVersion() select local; if (newVersions.Any()) { newVersionAvailable = true; newVersionInfo = $"New file versions found: {string.Join(", ", newVersions.Select(fv => $"{fv.Filename} = {fv.Version.ToString()}"))}"; versions = newVersions; } if (!newVersionAvailable) { // have any new files been added? var newFiles = localFileInfo.Where(local => !cloudFileInfo.Any(cloud => local.Filename.Equals(cloud.Filename))); versions = newFiles; newVersionInfo = $"New files added to project: {string.Join(", ", newFiles.Select(fv => fv.Filename))}"; newVersionAvailable = newFiles.Any(); } } if (newVersionAvailable) { Console.WriteLine(newVersionInfo); Console.WriteLine("AzDeploy: building installer..."); _installers[Type].Run(this); string version = GetProductVersion(); Console.WriteLine($"AzDeploy: uploading {InstallerOutput}, version {version}..."); await UploadInstallerAsync(version); Console.WriteLine("AzDeploy: uploading new version info..."); var versionInfoList = new Common.FileVersionList(); versionInfoList.AddRange(localFileInfo); AzureXmlSerializerHelper.Upload(versionInfoList, Common.Utilities.VersionInfoUri(creds.AccountName, ContainerName, ProductName), creds.AccountKey); Console.WriteLine("AzDeploy: uploading log entry..."); UploadLogEntry entry = new UploadLogEntry(); entry.LocalTime = DateTime.Now; entry.Files = new Common.FileVersionList(versions); entry.Version = version; AzureXmlSerializerHelper.Upload(entry, UploadLogUri(), creds.AccountKey); Console.WriteLine("AzDeploy: generating log html"); await BuildUpdateLogAsync(); Console.WriteLine("AzDeploy: upload completed successfully."); } else { Console.WriteLine("AzDeploy: no new version to upload."); } }