Ejemplo n.º 1
0
        public BuildVersion FetchBuildVersion(ITaskContext context)
        {
            var content = File.ReadAllText(RootDirectory.CombineWith("build/version.props"));

            XmlDocument doc = new XmlDocument();

            doc.LoadXml(content);

            var versionMajor   = doc.DocumentElement.SelectSingleNode("/Project/PropertyGroup/VersionMajor").InnerText;
            var versionMinor   = doc.DocumentElement.SelectSingleNode("/Project/PropertyGroup/VersionMinor").InnerText;
            var versionPatch   = doc.DocumentElement.SelectSingleNode("/Project/PropertyGroup/VersionPatch").InnerText;
            var versionQuality = doc.DocumentElement.SelectSingleNode("/Project/PropertyGroup/VersionQuality").InnerText;

            versionQuality = string.IsNullOrWhiteSpace(versionQuality) ? null : versionQuality;

            var suffix = versionQuality;

            bool isCi     = false;
            bool isTagged = false;

            if (!context.BuildServers().IsLocalBuild)
            {
                isCi = true;
                bool isTagAppveyor = context.BuildServers().AppVeyor().IsTag;
                if (context.BuildServers().RunningOn == BuildServerType.AppVeyor && isTagAppveyor ||
                    context.BuildServers().RunningOn == BuildServerType.TravisCI && string.IsNullOrWhiteSpace(context.BuildServers().Travis().TagName))
                {
                    isTagged = true;
                }
            }

            if (!isTagged)
            {
                suffix += (isCi ? "preview-" : "dv-") + CreateStamp();
            }

            suffix = string.IsNullOrWhiteSpace(suffix) ? null : suffix;

            var version = new BuildVersion(int.Parse(versionMajor), int.Parse(versionMinor), int.Parse(versionPatch), versionQuality);

            version.Suffix = suffix;

            return(version);
        }