protected virtual JenkinsPipelineAgent GetAgent(ExecutableTarget executableTarget, IReadOnlyDictionary <string, JenkinsPipelineAgent> registeredAgents) { JenkinsPipelineAgent agent; string agentLabel = executableTarget.GetAgents().FirstOrDefault(); if (string.IsNullOrWhiteSpace(agentLabel)) { agent = new JenkinsPipelineAgent { AgentType = JenkinsAgentType.Any, AgentPlatform = JenkinsAgentPlatform.Unix, }; } else if (!registeredAgents.TryGetValue(agentLabel, out agent)) { agent = new JenkinsPipelineAgent { AgentType = JenkinsAgentType.Node, AgentPlatform = JenkinsAgentPlatform.Unix, Label = agentLabel, }; } return(agent); }
protected virtual JenkinsPipelineStage GetStage(ExecutableTarget executableTarget, IReadOnlyDictionary <string, JenkinsPipelineAgent> registeredAgents) { IEnumerable <string> artifactProduct = executableTarget.GetArtifactProducts().ToArray(); IEnumerable <JenkinsPipelineStash> stashes = artifactProduct .Select((v, i) => GetStash(executableTarget, v)) .OrderBy(s => s.Name); IEnumerable <(Target, string[])> artifactDependencies = ArtifactExtensionsAccessor.ArtifactDependencies[executableTarget.GetDefinition()].ToArray(); IEnumerable <JenkinsPipelineUnstash> unstashes = artifactDependencies .SelectMany(d => GetUnstashesFromDependency(executableTarget, d.Item1, d.Item2)) .OrderBy(s => s.Name) .Prepend(new JenkinsPipelineUnstash { Name = "source", }); JenkinsPipelineAgent agent = GetAgent(executableTarget, registeredAgents); return(new JenkinsPipelineStage { Name = executableTarget.Name, InvokedTarget = executableTarget.Name, Agent = agent, Stashes = stashes.ToArray(), Unstashes = unstashes.ToArray(), }); }