|
14 | 14 | import de.tum.cit.aet.helios.user.User; |
15 | 15 | import de.tum.cit.aet.helios.user.github.GitHubUserSyncService; |
16 | 16 | import java.io.IOException; |
| 17 | +import java.time.Instant; |
17 | 18 | import java.util.Optional; |
18 | 19 | import lombok.RequiredArgsConstructor; |
19 | 20 | import lombok.extern.log4j.Log4j2; |
@@ -41,6 +42,8 @@ public class GitHubDeploymentStatusMessageHandler |
41 | 42 | private final GitHubFacade github; |
42 | 43 | private final GitHubDataSyncOrchestrator gitHubDataSyncOrchestrator; |
43 | 44 |
|
| 45 | + private final Instant applicationStartTime = Instant.now(); |
| 46 | + |
44 | 47 | @Override |
45 | 48 | protected Class<GHEventPayload.DeploymentStatus> getPayloadClass() { |
46 | 49 | return GHEventPayload.DeploymentStatus.class; |
@@ -141,10 +144,21 @@ protected void handleInstalledRepositoryEvent(GHEventPayload.DeploymentStatus ev |
141 | 144 | deploymentSyncService.processDeployment( |
142 | 145 | deploymentSource, repository, environment, convertedUser); |
143 | 146 |
|
144 | | - // TODO: Don't approve deployment on data sync |
| 147 | + // Auto-approve deployments in WAITING state |
145 | 148 | if (deploymentSource.getState() == Deployment.State.WAITING) { |
146 | | - log.info("Deployment is in WAITING state. Reviewing the deployment."); |
147 | | - approvalService.reviewDeployment(deploymentSource, repository, environment, convertedUser); |
| 149 | + // Check if this is a recent event (after app startup) or an old event being replayed |
| 150 | + Instant eventTime; |
| 151 | + try { |
| 152 | + eventTime = eventPayload.getDeploymentStatus().getCreatedAt().toInstant(); |
| 153 | + } catch (IOException e) { |
| 154 | + eventTime = Instant.now(); |
| 155 | + } |
| 156 | + |
| 157 | + // Only automatically approve if the event is recent (after application startup) |
| 158 | + if (eventTime.isAfter(applicationStartTime)) { |
| 159 | + log.info("Recent deployment in WAITING state. Reviewing the deployment."); |
| 160 | + approvalService.reviewDeployment(deploymentSource, repository, environment, convertedUser); |
| 161 | + } |
148 | 162 | } |
149 | 163 | } |
150 | 164 | } |
0 commit comments