public async Task <ExitCode> RunAsync(string deploymentTaskId, DeploymentTargetId deploymentTargetId, CancellationToken cancellationToken = default) { var agent = _agentsData.Agents.SingleOrDefault(current => current.Id.Equals(AgentId)); if (agent is null) { _logger.Error("Agents is not found"); return(ExitCode.Failure); } if (agent.ConnectionId is null) { _logger.Error("Agent"); return(ExitCode.Failure); } await _agentHub.Clients.Clients(agent.ConnectionId).SendAsync(AgentConstants.SignalRDeployCommand, deploymentTaskId, deploymentTargetId.TargetId, cancellationToken); await Task.Delay(TimeSpan.FromSeconds(5), cancellationToken); //TODO return(ExitCode.Success); }
public UpdateDeploymentTarget( DeploymentTargetId id, bool allowExplicitPreRelease, string?url, string packageId, string?iisSiteName = null, string?nugetPackageSource = null, string?nugetConfigFile = null, bool autoDeployEnabled = false, string?publishSettingsXml = null, string?targetDirectory = null, string?webConfigTransform = null, string?excludedFilePatterns = null, string?environmentTypeId = null, string?packageListTimeout = null, string?publishType = null, string?ftpPath = null, string?metadataTimeout = default, bool requireEnvironmentConfig = default, string?environmentConfiguration = null, bool packageListPrefixEnabled = false, string?packageListPrefix = null) { Id = id; AllowExplicitPreRelease = allowExplicitPreRelease; Uri.TryCreate(url, UriKind.Absolute, out var uri); Url = uri; PackageId = packageId?.Trim(); ExcludedFilePatterns = excludedFilePatterns; PublishType.TryParseOrDefault(publishType, out var foundPublishType); FtpPath.TryParse(ftpPath, FileSystemType.Directory, out var path); PublishType = foundPublishType ?? PublishType.Default; FtpPath = path; IisSiteName = iisSiteName; NugetPackageSource = nugetPackageSource; NugetConfigFile = nugetConfigFile; AutoDeployEnabled = autoDeployEnabled; PublishSettingsXml = publishSettingsXml; TargetDirectory = targetDirectory; WebConfigTransform = webConfigTransform; IsValid = Id != DeploymentTargetId.Invalid; EnvironmentTypeId = environmentTypeId?.Trim(); PackageListPrefix = packageListPrefix; if (TimeSpan.TryParse(packageListTimeout, out var timeout) && timeout.TotalSeconds > 0.5D) { PackageListTimeout = timeout; } if (TimeSpan.TryParse(metadataTimeout, out var parsedMetadataTimeout) && parsedMetadataTimeout.TotalSeconds > 0.5D) { MetadataTimeout = parsedMetadataTimeout; } RequireEnvironmentConfig = requireEnvironmentConfig; EnvironmentConfiguration = environmentConfiguration; PackageListPrefixEnabled = packageListPrefixEnabled; }
public UpdateDeploymentTargetResult(string targetName, DeploymentTargetId targetId, params ValidationError[] validationErrors) { TargetName = targetName; TargetId = targetId; ValidationErrors = validationErrors.ToImmutableArray(); }
public AgentLogNotification(string deploymentTaskId, DeploymentTargetId deploymentTargetId, string message, LogEventLevel logEventLevel) { DeploymentTaskId = deploymentTaskId; DeploymentTargetId = deploymentTargetId; Message = message; LogEventLevel = logEventLevel; }
public async Task <ExitCode> RunAsync(string deploymentTaskId, DeploymentTargetId deploymentTargetId, CancellationToken cancellationToken = default) { _logger.Information("Received deployment task {DeploymentTaskId}", deploymentTaskId); IHttpClient client = _logHttpClientFactory.CreateClient(deploymentTaskId, deploymentTargetId, AgentId, _logger); Logger logger = new LoggerConfiguration() .MinimumLevel.Verbose() .WriteTo.Logger(_logger) .WriteTo.DurableHttpUsingTimeRolledBuffers(AgentConstants.DeploymentTaskLogRoute, period: TimeSpan.FromMilliseconds(100), httpClient: client) .CreateLogger(); //TODO create job logger in agent ExitCode exitCode; try { using CancellationTokenSource cancellationTokenSource = _timeoutHelper.CreateCancellationTokenSource(TimeSpan.FromMinutes(30)); var deploymentTaskPackage = await _deploymentTaskPackageService.GetDeploymentTaskPackageAsync(deploymentTaskId, cancellationTokenSource.Token); if (deploymentTaskPackage is null) { _logger.Error("Could not get deployment task package for deployment task id {DeploymentTaskId}", deploymentTaskId); return(ExitCode.Failure); } if (string.IsNullOrWhiteSpace(deploymentTaskPackage.DeploymentTaskId)) { _logger.Error( "Deployment task package for deployment task id {DeploymentTaskId} is missing deployment task id", deploymentTaskId); return(ExitCode.Failure); } exitCode = await _deploymentPackageHandler.RunAsync(deploymentTaskPackage, logger, cancellationTokenSource.Token); logger.Dispose(); } catch (Exception ex) when(!ex.IsFatal()) { _logger.Error(ex, "Failed to deploy {DeploymentTaskId}", deploymentTaskId); return(ExitCode.Failure); } return(exitCode); }
public DeploymentLogNotification([NotNull] DeploymentTargetId deploymentTargetId, [NotNull] string message) { if (string.IsNullOrWhiteSpace(message)) { throw new ArgumentException("Value cannot be null or whitespace.", nameof(message)); } DeploymentTargetId = deploymentTargetId; Message = message; }
public DeploymentTaskItem(string deploymentTaskId, string packageVersion, DeploymentTargetId deploymentTargetId, string?startedBy) { DeploymentTaskId = deploymentTaskId; PackageVersion = packageVersion; DeploymentTargetId = deploymentTargetId; StartedBy = startedBy; }
public CustomHttpClient(IHttpClientFactory httpClientFactory, string deploymentTaskId, DeploymentTargetId deploymentTargetId, AgentId agentId, ILogger logger) { _httpClientFactory = httpClientFactory; _deploymentTaskId = deploymentTaskId; _deploymentTargetId = deploymentTargetId; _agentId = agentId; _logger = logger; }
public async Task <DeploymentTarget?> GetDeploymentTargetAsync( DeploymentTargetId deploymentTargetId, CancellationToken cancellationToken = default) { var organizations = await GetOrganizationsAsync(cancellationToken); DeploymentTarget?foundDeploymentTarget = organizations .SelectMany(organizationInfo => organizationInfo.Projects) .SelectMany(projectInfo => projectInfo.DeploymentTargets) .SingleOrDefault(deploymentTarget => deploymentTarget.Id == deploymentTargetId); return(foundDeploymentTarget); }
private DeploymentTargetWorker?GetWorkerByTargetId([NotNull] DeploymentTargetId targetId) { if (!_configurationInstanceHolder.TryGet(targetId.TargetId, out DeploymentTargetWorker? worker)) { int registered = _configurationInstanceHolder.RegisteredTypes .Count(type => type == typeof(DeploymentTargetWorker)); _logger.Warning("Could not get worker for target id {TargetId}, {Count} worker types registered", targetId, registered); } return(worker); }
public DeploymentTaskResult( string deploymentTaskId, DeploymentTargetId deploymentTargetId, ExitCode exitCode, DateTime startedAtUtc, DateTime finishedAtUtc, string metadata) { DeploymentTaskId = deploymentTaskId; DeploymentTargetId = deploymentTargetId; ExitCode = exitCode; StartedAtUtc = startedAtUtc; FinishedAtUtc = finishedAtUtc; Metadata = metadata; }
public DeploymentTask( [NotNull] PackageVersion packageVersion, [NotNull] DeploymentTargetId deploymentTargetId, Guid deploymentTaskId, string?startedBy) { if (packageVersion is null) { throw new ArgumentNullException(nameof(packageVersion)); } SemanticVersion = packageVersion.Version; PackageId = packageVersion.PackageId; DeploymentTargetId = deploymentTargetId; StartedBy = startedBy; DeploymentTaskId = $"{DateTime.UtcNow.ToString("O", CultureInfo.InvariantCulture).Replace(":", "_", StringComparison.Ordinal)}_{deploymentTaskId.ToString().Substring(0, 8)}"; }
public DeploymentTask( [NotNull] string packageVersion, DeploymentTargetId deploymentTargetId, Guid deploymentTaskId, string startedBy) { if (string.IsNullOrWhiteSpace(packageVersion)) { throw new ArgumentException("Value cannot be null or whitespace.", nameof(packageVersion)); } string[] parts = packageVersion.Split(' '); string packageId = parts[0]; var version = SemanticVersion.Parse(parts.Last()); SemanticVersion = version; PackageId = packageId; DeploymentTargetId = deploymentTargetId; StartedBy = startedBy; DeploymentTaskId = $"{DateTime.UtcNow.ToString("O", CultureInfo.InvariantCulture).Replace(":", "_", StringComparison.InvariantCulture)}_{deploymentTaskId.ToString().Substring(0, 8)}"; }
public Task <DeploymentTarget?> GetDeploymentTargetAsync(DeploymentTargetId deploymentTargetId, CancellationToken cancellationToken = default) => Task.FromResult((DeploymentTarget?)null);
public AgentDeploymentFailed(string deploymentTaskId, DeploymentTargetId deploymentTargetId, string agentId) { DeploymentTaskId = deploymentTaskId; DeploymentTargetId = deploymentTargetId; AgentId = new AgentId(agentId); }
public TargetCreated(DeploymentTargetId targetId) => TargetId = targetId;
public void CtorShouldCreateInstanceForValid() { var deploymentTargetId = new DeploymentTargetId("abc"); deploymentTargetId.Should().NotBeNull(); }
public TargetEnabled(DeploymentTargetId targetId) => TargetId = targetId;
public CreateTargetResult(DeploymentTargetId targetId, string targetName) { TargetId = targetId; TargetName = targetName; ValidationErrors = ImmutableArray <ValidationError> .Empty; }