Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        public static IEnumerable <FileVersion> GetCloudVersions(BlobUri uri)
        {
            FileVersionList result = null;

            if (uri.Exists())
            {
                result = AzureXmlSerializerHelper.Download <FileVersionList>(uri);
            }
            else
            {
                result = new FileVersionList();
            }
            return(result);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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.");
            }
        }