public IArtifactDetails GetArtifactDetails(IExecutionContext context, AgentArtifactDefinition agentArtifactDefinition) { var artifactDetails = JsonConvert.DeserializeObject <Dictionary <string, string> >(agentArtifactDefinition.Details); var projectId = string.Empty; var repositoryId = string.Empty; var branch = string.Empty; if (artifactDetails.TryGetValue("ProjectId", out projectId) && artifactDetails.TryGetValue("RepositoryId", out repositoryId) && artifactDetails.TryGetValue("Branch", out branch)) { string checkoutSubmodules; string gitLfsSupport; string fetchDepth; artifactDetails.TryGetValue("checkoutSubmodules", out checkoutSubmodules); artifactDetails.TryGetValue("gitLfsSupport", out gitLfsSupport); artifactDetails.TryGetValue("fetchDepth", out fetchDepth); return(new TfsGitArtifactDetails { RelativePath = "\\", ProjectId = projectId, RepositoryId = repositoryId, Branch = branch, CheckoutSubmodules = checkoutSubmodules, GitLfsSupport = gitLfsSupport, FetchDepth = fetchDepth }); } else { throw new InvalidOperationException(StringUtil.Loc("RMArtifactDetailsIncomplete")); } }
public IArtifactDetails GetArtifactDetails(IExecutionContext context, AgentArtifactDefinition agentArtifactDefinition) { var artifactDetails = JsonConvert.DeserializeObject <Dictionary <string, string> >(agentArtifactDefinition.Details); string connectionName; string relativePath = string.Empty; string customArtifactDetails = string.Empty; if (!(artifactDetails.TryGetValue("ConnectionName", out connectionName) && artifactDetails.TryGetValue("RelativePath", out relativePath) && artifactDetails.TryGetValue("ArtifactDetails", out customArtifactDetails))) { throw new InvalidOperationException(StringUtil.Loc("RMArtifactDetailsIncomplete")); } var customEndpoint = context.Endpoints.FirstOrDefault((e => string.Equals(e.Name, connectionName, StringComparison.OrdinalIgnoreCase))); if (customEndpoint == null) { throw new InvalidOperationException(StringUtil.Loc("RMCustomEndpointNotFound", agentArtifactDefinition.Name)); } var details = JToken.Parse(customArtifactDetails).ToObject <CustomArtifactDetails>(); details.RelativePath = relativePath; details.Endpoint = new ServiceEndpoint { Url = customEndpoint.Url, Authorization = customEndpoint.Authorization }; return(details); }
public IArtifactDetails GetArtifactDetails(IExecutionContext context, AgentArtifactDefinition agentArtifactDefinition) { ArgUtil.NotNull(context, nameof(context)); ArgUtil.NotNull(agentArtifactDefinition, nameof(agentArtifactDefinition)); var artifactDetails = JsonConvert.DeserializeObject <Dictionary <string, string> >(agentArtifactDefinition.Details); var projectId = string.Empty; var repositoryId = string.Empty; var mappings = string.Empty; var mandatoryFields = artifactDetails.TryGetValue(ArtifactDefinitionConstants.ProjectId, out projectId) && artifactDetails.TryGetValue(ArtifactDefinitionConstants.RepositoryId, out repositoryId); if (!artifactDetails.TryGetValue(ArtifactDefinitionConstants.MappingsId, out mappings) || mappings == null) { string baseRepoPath = string.Join("/", "$", projectId); var defaultMapping = new List <Dictionary <string, InputValue> >() { new Dictionary <string, InputValue>() { { ArtifactDefinitionConstants.ServerPathId, new InputValue { Value = baseRepoPath } }, { ArtifactDefinitionConstants.MappingTypeId, new InputValue { Value = Constants.Release.Map } }, { ArtifactDefinitionConstants.LocalPathId, new InputValue { Value = string.Empty } } } }; mappings = JsonConvert.SerializeObject(defaultMapping); } if (mandatoryFields) { return(new TfsVCArtifactDetails { RelativePath = "\\", ProjectId = projectId, RepositoryId = repositoryId, Mappings = mappings }); } else { throw new InvalidOperationException(StringUtil.Loc("RMArtifactDetailsIncomplete")); } }
public IArtifactDetails GetArtifactDetails(IExecutionContext context, AgentArtifactDefinition agentArtifactDefinition) { ArgUtil.NotNull(context, nameof(context)); ArgUtil.NotNull(agentArtifactDefinition, nameof(agentArtifactDefinition)); Trace.Entering(); ServiceEndpoint vssEndpoint = context.Endpoints.FirstOrDefault(e => string.Equals(e.Name, WellKnownServiceEndpointNames.SystemVssConnection, StringComparison.OrdinalIgnoreCase)); ArgUtil.NotNull(vssEndpoint, nameof(vssEndpoint)); ArgUtil.NotNull(vssEndpoint.Url, nameof(vssEndpoint.Url)); var artifactDetails = JsonConvert.DeserializeObject <Dictionary <string, string> >(agentArtifactDefinition.Details); VssCredentials vssCredentials = VssUtil.GetVssCredential(vssEndpoint); var tfsUrl = context.Variables.Get(WellKnownDistributedTaskVariables.TFCollectionUrl); Guid projectId = context?.Variables.System_TeamProjectId ?? Guid.Empty; if (artifactDetails.ContainsKey("Project")) { Guid.TryParse(artifactDetails["Project"], out projectId); } ArgUtil.NotEmpty(projectId, nameof(projectId)); string relativePath; string accessToken; vssEndpoint.Authorization.Parameters.TryGetValue(EndpointAuthorizationParameters.AccessToken, out accessToken); if (artifactDetails.TryGetValue("RelativePath", out relativePath)) { var buildArtifactDetails = new BuildArtifactDetails { Credentials = vssCredentials, RelativePath = artifactDetails["RelativePath"], AccessToken = accessToken, Project = projectId.ToString(), TfsUrl = new Uri(tfsUrl) }; if (artifactDetails.ContainsKey("DefinitionName")) { buildArtifactDetails.DefinitionName = artifactDetails["DefinitionName"]; } if (artifactDetails.ContainsKey("DefinitionId")) { buildArtifactDetails.DefintionId = Convert.ToInt32(artifactDetails["DefinitionId"], CultureInfo.InvariantCulture); } return(buildArtifactDetails); } else { throw new InvalidOperationException(StringUtil.Loc("RMArtifactDetailsIncomplete")); } }
public IArtifactDetails GetArtifactDetails( IExecutionContext context, AgentArtifactDefinition agentArtifactDefinition) { ArgUtil.NotNull(context, nameof(context)); ArgUtil.NotNull(agentArtifactDefinition, nameof(agentArtifactDefinition)); var artifactDetails = JsonConvert.DeserializeObject <Dictionary <string, string> >(agentArtifactDefinition.Details); string connectionName; string repositoryName = string.Empty; string branch = string.Empty; if (artifactDetails.TryGetValue(ArtifactDefinitionConstants.ConnectionName, out connectionName) && artifactDetails.TryGetValue(ArtifactDefinitionConstants.RepositoryId, out repositoryName) && artifactDetails.TryGetValue(ArtifactDefinitionConstants.BranchId, out branch)) { string checkoutNestedSubmodules; string checkoutSubmodules; string gitLfsSupport; string fetchDepth; artifactDetails.TryGetValue("checkoutNestedSubmodules", out checkoutNestedSubmodules); artifactDetails.TryGetValue("checkoutSubmodules", out checkoutSubmodules); artifactDetails.TryGetValue("gitLfsSupport", out gitLfsSupport); artifactDetails.TryGetValue("fetchDepth", out fetchDepth); ServiceEndpoint gitHubEndpoint = context.Endpoints.FirstOrDefault((e => string.Equals(e.Name, connectionName, StringComparison.OrdinalIgnoreCase))); if (gitHubEndpoint == null) { throw new InvalidOperationException(StringUtil.Loc("RMGitHubEndpointNotFound", agentArtifactDefinition.Name)); } string accessToken = gitHubEndpoint.Authorization.Parameters[EndpointAuthorizationParameters.AccessToken]; GitHubRepository repository = HostContext.GetService <IGitHubHttpClient>().GetUserRepo(accessToken, repositoryName); Trace.Info($"Found github repository url {repository.Clone_url}"); return(new GitHubArtifactDetails { RelativePath = Path.DirectorySeparatorChar.ToString(), ConnectionName = connectionName, CloneUrl = new Uri(repository.Clone_url), Branch = branch, CheckoutSubmodules = checkoutSubmodules, CheckoutNestedSubmodules = checkoutNestedSubmodules, GitLfsSupport = gitLfsSupport, FetchDepth = fetchDepth }); } else { throw new InvalidOperationException(StringUtil.Loc("RMArtifactDetailsIncomplete")); } }
public IArtifactDetails GetArtifactDetails(IExecutionContext context, AgentArtifactDefinition agentArtifactDefinition) { ArgUtil.NotNull(context, nameof(context)); ArgUtil.NotNull(agentArtifactDefinition, nameof(agentArtifactDefinition)); Trace.Entering(); var artifactDetails = JsonConvert.DeserializeObject <Dictionary <string, string> >(agentArtifactDefinition.Details); ServiceEndpoint jenkinsEndpoint = context.Endpoints.FirstOrDefault(e => string.Equals(e.Name, artifactDetails["ConnectionName"], StringComparison.OrdinalIgnoreCase)); if (jenkinsEndpoint == null) { throw new InvalidOperationException(StringUtil.Loc("RMJenkinsEndpointNotFound", agentArtifactDefinition.Name)); } string relativePath; var jobName = string.Empty; var allFieldsPresents = artifactDetails.TryGetValue("RelativePath", out relativePath) && artifactDetails.TryGetValue("JobName", out jobName); bool acceptUntrusted = jenkinsEndpoint.Data != null && jenkinsEndpoint.Data.ContainsKey("acceptUntrustedCerts") && StringUtil.ConvertToBoolean(jenkinsEndpoint.Data["acceptUntrustedCerts"]); string startCommitArtifactVersion = string.Empty; string endCommitArtifactVersion = string.Empty; artifactDetails.TryGetValue("StartCommitArtifactVersion", out startCommitArtifactVersion); artifactDetails.TryGetValue("EndCommitArtifactVersion", out endCommitArtifactVersion); if (allFieldsPresents) { return(new JenkinsArtifactDetails { RelativePath = relativePath, AccountName = jenkinsEndpoint.Authorization.Parameters[EndpointAuthorizationParameters.Username], AccountPassword = jenkinsEndpoint.Authorization.Parameters[EndpointAuthorizationParameters.Password], BuildId = Convert.ToInt32(agentArtifactDefinition.Version, CultureInfo.InvariantCulture), JobName = jobName, Url = jenkinsEndpoint.Url, AcceptUntrustedCertificates = acceptUntrusted, StartCommitArtifactVersion = startCommitArtifactVersion, EndCommitArtifactVersion = endCommitArtifactVersion, Alias = agentArtifactDefinition.Alias }); } else { throw new InvalidOperationException(StringUtil.Loc("RMArtifactDetailsIncomplete")); } }
private ArtifactDefinition ConvertToArtifactDefinition(AgentArtifactDefinition agentArtifactDefinition, IExecutionContext executionContext, IArtifactExtension extension) { Trace.Entering(); ArgUtil.NotNull(agentArtifactDefinition, nameof(agentArtifactDefinition)); ArgUtil.NotNull(executionContext, nameof(executionContext)); var artifactDefinition = new ArtifactDefinition { ArtifactType = agentArtifactDefinition.ArtifactType, Name = agentArtifactDefinition.Name, Version = agentArtifactDefinition.Version }; artifactDefinition.Details = extension.GetArtifactDetails(executionContext, agentArtifactDefinition); return(artifactDefinition); }
private ArtifactDefinition ConvertToArtifactDefinition(AgentArtifactDefinition agentArtifactDefinition, IExecutionContext executionContext, IArtifactExtension extension) { Trace.Entering(); ArgUtil.NotNull(agentArtifactDefinition, nameof(agentArtifactDefinition)); ArgUtil.NotNull(executionContext, nameof(executionContext)); var artifactDefinition = new ArtifactDefinition { ArtifactType = agentArtifactDefinition.ArtifactType, Name = agentArtifactDefinition.Name, Version = agentArtifactDefinition.Version }; RetryExecutor retryExecutor = new RetryExecutor(); retryExecutor.ShouldRetryAction = (ex) => { bool retry = true; if (ex is InvalidOperationException) { retry = false; } else { Trace.Warning(ex.ToString()); } return(retry); }; retryExecutor.Execute( () => { artifactDefinition.Details = extension.GetArtifactDetails(executionContext, agentArtifactDefinition); }); return(artifactDefinition); }
public IArtifactDetails GetArtifactDetails(IExecutionContext context, AgentArtifactDefinition agentArtifactDefinition) { Trace.Entering(); var artifactDetails = JsonConvert.DeserializeObject <Dictionary <string, string> >(agentArtifactDefinition.Details); ServiceEndpoint jenkinsEndpoint = context.Endpoints.FirstOrDefault(e => string.Equals(e.Name, artifactDetails["ConnectionName"], StringComparison.OrdinalIgnoreCase)); if (jenkinsEndpoint == null) { throw new InvalidOperationException(StringUtil.Loc("RMJenkinsEndpointNotFound", agentArtifactDefinition.Name)); } string relativePath; var jobName = string.Empty; var allFieldsPresents = artifactDetails.TryGetValue("RelativePath", out relativePath) && artifactDetails.TryGetValue("JobName", out jobName); if (allFieldsPresents) { return(new JenkinsArtifactDetails { RelativePath = relativePath, AccountName = jenkinsEndpoint.Authorization.Parameters[EndpointAuthorizationParameters.Username], AccountPassword = jenkinsEndpoint.Authorization.Parameters[EndpointAuthorizationParameters.Password], BuildId = Convert.ToInt32(agentArtifactDefinition.Version, CultureInfo.InvariantCulture), JobName = jobName, Url = jenkinsEndpoint.Url }); } else { throw new InvalidOperationException(StringUtil.Loc("RMArtifactDetailsIncomplete")); } }
public IArtifactDetails GetArtifactDetails(IExecutionContext context, AgentArtifactDefinition agentArtifactDefinition) { var artifactDetails = JsonConvert.DeserializeObject <Dictionary <string, string> >(agentArtifactDefinition.Details); var projectId = string.Empty; var repositoryId = string.Empty; var branch = string.Empty; if (artifactDetails.TryGetValue("ProjectId", out projectId) && artifactDetails.TryGetValue("RepositoryId", out repositoryId) && artifactDetails.TryGetValue("Branch", out branch)) { return(new TfsGitArtifactDetails { RelativePath = "\\", ProjectId = projectId, RepositoryId = repositoryId, Branch = branch }); } else { throw new InvalidOperationException(StringUtil.Loc("RMArtifactDetailsIncomplete")); } }
private ArtifactDefinition ConvertToArtifactDefinition(AgentArtifactDefinition agentArtifactDefinition, IExecutionContext executionContext, IArtifactExtension extension) { Trace.Entering(); ArgUtil.NotNull(agentArtifactDefinition, nameof(agentArtifactDefinition)); ArgUtil.NotNull(executionContext, nameof(executionContext)); var artifactDefinition = new ArtifactDefinition { ArtifactType = agentArtifactDefinition.ArtifactType, Name = agentArtifactDefinition.Name, Version = agentArtifactDefinition.Version }; artifactDefinition.Details = extension.GetArtifactDetails(executionContext, agentArtifactDefinition); return artifactDefinition; }
public IArtifactDetails GetArtifactDetails(IExecutionContext context, AgentArtifactDefinition agentArtifactDefinition) { Trace.Entering(); ServiceEndpoint vssEndpoint = context.Endpoints.FirstOrDefault(e => string.Equals(e.Name, ServiceEndpoints.SystemVssConnection, StringComparison.OrdinalIgnoreCase)); ArgUtil.NotNull(vssEndpoint, nameof(vssEndpoint)); ArgUtil.NotNull(vssEndpoint.Url, nameof(vssEndpoint.Url)); var artifactDetails = JsonConvert.DeserializeObject<Dictionary<string, string>>(agentArtifactDefinition.Details); VssCredentials vssCredentials = ApiUtil.GetVssCredential(vssEndpoint); var tfsUrl = context.Variables.Get(WellKnownDistributedTaskVariables.TFCollectionUrl); Guid projectId = context.Variables.System_TeamProjectId ?? Guid.Empty; ArgUtil.NotEmpty(projectId, nameof(projectId)); string relativePath; string accessToken; vssEndpoint.Authorization.Parameters.TryGetValue(EndpointAuthorizationParameters.AccessToken, out accessToken); if (artifactDetails.TryGetValue("RelativePath", out relativePath)) { return new BuildArtifactDetails { Credentials = vssCredentials, RelativePath = artifactDetails["RelativePath"], Project = projectId.ToString(), TfsUrl = new Uri(tfsUrl), }; } else { throw new InvalidOperationException(StringUtil.Loc("RMArtifactDetailsIncomplete")); } }
public IArtifactDetails GetArtifactDetails(IExecutionContext context, AgentArtifactDefinition agentArtifactDefinition) { Trace.Entering(); var artifactDetails = JsonConvert.DeserializeObject<Dictionary<string, string>>(agentArtifactDefinition.Details); ServiceEndpoint jenkinsEndpoint = context.Endpoints.FirstOrDefault(e => string.Equals(e.Name, artifactDetails["ConnectionName"], StringComparison.OrdinalIgnoreCase)); if (jenkinsEndpoint == null) { throw new InvalidOperationException(StringUtil.Loc("RMJenkinsEndpointNotFound", agentArtifactDefinition.Name)); } string relativePath; var jobName = string.Empty; var allFieldsPresents = artifactDetails.TryGetValue("RelativePath", out relativePath) && artifactDetails.TryGetValue("JobName", out jobName); if (allFieldsPresents) { return new JenkinsArtifactDetails { RelativePath = relativePath, AccountName = jenkinsEndpoint.Authorization.Parameters[EndpointAuthorizationParameters.Username], AccountPassword = jenkinsEndpoint.Authorization.Parameters[EndpointAuthorizationParameters.Password], BuildId = Convert.ToInt32(agentArtifactDefinition.Version, CultureInfo.InvariantCulture), JobName = jobName, Url = jenkinsEndpoint.Url }; } else { throw new InvalidOperationException(StringUtil.Loc("RMArtifactDetailsIncomplete")); } }