예제 #1
0
        protected override (SVersion Version, bool MustBuild) PrepareBuild(
            IActivityMonitor m,
            DependentSolution s,
            ISolutionDriver driver,
            IReadOnlyList <UpdatePackageInfo> upgrades)
        {
            IReleaseSolutionInfo info = _roadmap.ReleaseInfos[s.Index];
            var targetVersion         = info.CurrentReleaseInfo.Version;

            if (upgrades.Count > 0)
            {
                if (!driver.UpdatePackageDependencies(m, upgrades))
                {
                    return(null, false);
                }
                var upText = upgrades.Select(u => u.PackageUpdate.ToString()).Concatenate();
                var msg    = info.CurrentReleaseInfo.Level == ReleaseLevel.None
                            ? $"Not released (keeping version {targetVersion}). Upgrading release dependencies: {upText}."
                            : $"Releasing {targetVersion}. Upgrading release dependencies: {upText}." + Environment.NewLine
                             + Environment.NewLine
                             + info.ReleaseNote;
                if (!driver.GitRepository.Commit(m, msg))
                {
                    return(null, false);
                }
            }
            _commits[s.Index] = driver.GitRepository.Head.CommitSha;
            return(targetVersion, info.CurrentReleaseInfo.Level != ReleaseLevel.None);
        }
예제 #2
0
        protected override BuildState Build(
            IActivityMonitor m,
            DependentSolution s,
            ISolutionDriver driver,
            IReadOnlyList <UpdatePackageInfo> upgrades,
            SVersion sVersion,
            IReadOnlyCollection <UpdatePackageInfo> buildProjectsUpgrade)
        {
            IReleaseSolutionInfo info = _roadmap.ReleaseInfos[s.Index];

            Debug.Assert((sVersion == null) == (info.CurrentReleaseInfo.Level == ReleaseLevel.None));
            var targetVersion = info.CurrentReleaseInfo.Version;

            Debug.Assert(sVersion == null || sVersion == targetVersion);

            if (_commits[s.Index] != driver.GitRepository.Head.CommitSha)
            {
                m.Error($"Commit changed between CreateBuildResult call and this Build. Build canceled.");
                return(BuildState.Failed);
            }
            if (sVersion == null)
            {
                m.Info($"Build skipped for {s.Solution.Name}.");
                return(BuildState.Succeed);
            }
            else
            {
                bool buildResult = DoBuild(m, driver, targetVersion, out bool tagCreated);
                if (!buildResult && tagCreated)
                {
                    driver.GitRepository.ClearVersionTag(m, targetVersion);
                }
                if (targetVersion.PackageQuality == PackageQuality.Release)
                {
                    buildResult &= driver.GitRepository.SwitchMasterToDevelop(m);
                }
                return(buildResult ? BuildState.Succeed : BuildState.Failed);
            }
        }