void PublishToJira(string token, DeploymentEventType eventType, IDeployment deployment) { var envSettings = deploymentEnvironmentSettingsProvider .GetSettings <DeploymentEnvironmentSettingsMetadataProvider.JiraDeploymentEnvironmentSettings>( JiraConfigurationStore.SingletonId, deployment.EnvironmentId) ?? new DeploymentEnvironmentSettingsMetadataProvider.JiraDeploymentEnvironmentSettings(); var serverUri = serverConfigurationStore.GetServerUri()?.TrimEnd('/'); if (string.IsNullOrWhiteSpace(serverUri)) { log.Warn("To use Jira integration you must have the Octopus server's external url configured (see the Configuration/Nodes page)"); return; } var project = projectStore.Get(deployment.ProjectId); var deploymentEnvironment = deploymentEnvironmentStore.Get(deployment.EnvironmentId); var release = releaseStore.Get(deployment.ReleaseId); var serverTask = serverTaskStore.Get(deployment.TaskId); var data = new OctopusJiraPayloadData { InstallationId = installationIdProvider.GetInstallationId().ToString(), BaseHostUrl = store.GetBaseUrl(), DeploymentsInfo = new JiraPayloadData { Deployments = new[]
public override void BuildMappings(IResourceMappingsBuilder builder) { builder.Map <JiraConfigurationResource, JiraConfiguration>() .EnrichResource((model, resource) => { resource.OctopusInstallationId = installationIdProvider.GetInstallationId().ToString(); resource.OctopusServerUrl = serverConfigurationStore.GetServerUri(); }); builder.Map <ReleaseNoteOptionsResource, ReleaseNoteOptions>(); }
public async Task PublishToJira(string eventType, DeploymentResource deployment, IJiraApiDeployment jiraApiDeployment, ITaskLog taskLog, CancellationToken cancellationToken) { if (JiraIntegrationUnavailable(deployment)) { jiraApiDeployment.HandleJiraIntegrationIsUnavailable(); return; } var serverUri = serverConfigurationStore.GetServerUri()?.TrimEnd('/'); if (string.IsNullOrWhiteSpace(serverUri)) { taskLog.Warn("To use Jira integration you must have the Octopus server's external url configured (see the Configuration/Nodes page)"); return; } if (string.IsNullOrWhiteSpace(store.GetConnectAppUrl()) || string.IsNullOrWhiteSpace(store.GetConnectAppPassword()?.Value)) { taskLog.Warn("Jira integration is enabled but settings are incomplete, ignoring deployment events"); return; } var taskLogBlock = taskLogFactory.CreateBlock(taskLog, $"Sending Jira state update - {eventType}"); // get token from connect App var token = await connectAppClient.GetAuthTokenFromConnectApp(taskLogBlock); if (token is null) { taskLogFactory.Finish(taskLogBlock); return; } var getDeploymentEnvironmentResponse = await mediator.Request(new GetDeploymentEnvironmentRequest(deployment.EnvironmentId), cancellationToken); var deploymentEnvironment = getDeploymentEnvironmentResponse.DeploymentEnvironment; var environmentSettings = deploymentEnvironmentSettingsProvider .GetSettings <DeploymentEnvironmentSettingsMetadataProvider.JiraDeploymentEnvironmentSettings?>( JiraConfigurationStore.SingletonId, deployment.EnvironmentId.Value) ?? new DeploymentEnvironmentSettingsMetadataProvider.JiraDeploymentEnvironmentSettings(); var data = await PrepareOctopusJiraPayload( eventType, serverUri, deployment, jiraApiDeployment, cancellationToken, deploymentEnvironment, environmentSettings); // Push data to Jira await SendToJira( token, data, deployment, taskLogBlock, deploymentEnvironment, environmentSettings); taskLogFactory.Finish(taskLogBlock); }