コード例 #1
0
        protected virtual TeamCityProject GetProject(
            NukeBuild build,
            IReadOnlyCollection <ExecutableTarget> executableTargets)
        {
            var relevantTargets = VcsTriggeredTargets.Concat(ManuallyTriggeredTargets)
                                  .SelectMany(x => ExecutionPlanner.GetExecutionPlan(executableTargets, new[] { x }))
                                  .Distinct()
                                  .Where(x => !ExcludedTargets.Contains(x.Name) && !NonEntryTargets.Contains(x.Name)).ToList();

            var vcsRoot     = GetVcsRoot(build);
            var lookupTable = new LookupTable <ExecutableTarget, TeamCityBuildType>();
            var buildTypes  = relevantTargets
                              .SelectMany(x => GetBuildTypes(build, x, vcsRoot, lookupTable), (x, y) => (ExecutableTarget: x, BuildType: y))
                              .ForEachLazy(x => lookupTable.Add(x.ExecutableTarget, x.BuildType))
                              .Select(x => x.BuildType).ToArray();

            var parameters = GetGlobalParameters(build);

            if (Platform == TeamCityAgentPlatform.Windows)
            {
                parameters = parameters
                             .Concat(new TeamCityKeyValueParameter
                {
                    Key   = "teamcity.runner.commandline.stdstreams.encoding",
                    Value = "IBM-437"
                });
            }

            return(new TeamCityProject
            {
                VcsRoot = vcsRoot,
                BuildTypes = buildTypes,
                Parameters = parameters.ToArray()
            });
        }
コード例 #2
0
        protected virtual IEnumerable <TeamCityTrigger> GetTriggers(
            ExecutableTarget executableTarget,
            LookupTable <ExecutableTarget, TeamCityBuildType> buildTypes)
        {
            if (VcsTriggeredTargets.Contains(executableTarget.Name))
            {
                yield return(new TeamCityVcsTrigger
                {
                    BranchFilters = VcsTriggerBranchFilters,
                    TriggerRules = VcsTriggerRules
                });
            }

            if (NightlyTriggeredTargets.Contains(executableTarget.Name))
            {
                yield return(new TeamCityScheduledTrigger
                {
                    BranchFilters = NightlyTriggerBranchFilters,
                    TriggerRules = NightlyTriggerRules,
                    EnableQueueOptimization = true,
                    WithPendingChangesOnly = false,
                    TriggerBuildAlways = NightlyBuildAlways
                });
            }

            foreach (var triggerDependency in executableTarget.TriggerDependencies)
            {
                yield return(new TeamCityFinishBuildTrigger
                {
                    BuildType = buildTypes[triggerDependency].Single(x => x.Partition == null)
                });
            }
        }
コード例 #3
0
ファイル: TeamCityAttribute.cs プロジェクト: t081as/nuke
        protected override void Generate(NukeBuild build, IReadOnlyCollection <ExecutableTarget> executableTargets)
        {
            var relevantTargets = VcsTriggeredTargets.Concat(ManuallyTriggeredTargets)
                                  .SelectMany(x => ExecutionPlanner.GetExecutionPlan(executableTargets, new[] { x }))
                                  .Distinct()
                                  .Where(x => !ExcludedTargets.Contains(x.Name) && !NonEntryTargets.Contains(x.Name)).ToList();
            var configuration = GetConfiguration(build, relevantTargets);

            ControlFlow.Assert(NukeBuild.RootDirectory != null, "NukeBuild.RootDirectory != null");

            TextTasks.WriteAllLines(
                PomFile,
                ResourceUtility.GetResourceAllLines <TeamCityConfigurationEntity>("pom.xml"));

            using var writer = new CustomFileWriter(SettingsFile, indentationFactor: 4);
            configuration.Write(writer);
        }