Skip to content

Commit 06595b5

Browse files
committed
change to git config for each git source
1 parent 87f4d0d commit 06595b5

File tree

11 files changed

+73
-67
lines changed

11 files changed

+73
-67
lines changed

core/src/main/java/com/flowci/core/common/adviser/ExceptionAdviser.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@
4545
"com.flowci.core.config",
4646
"com.flowci.core.trigger",
4747
"com.flowci.core.api",
48+
"com.flowci.core.git",
4849
"com.flowci.core.common.controller"
4950
})
5051
public class ExceptionAdviser {

core/src/main/java/com/flowci/core/common/adviser/ResponseMessageAdviser.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
"com.flowci.core.config",
4242
"com.flowci.core.trigger",
4343
"com.flowci.core.api",
44+
"com.flowci.core.git",
4445
"com.flowci.core.common.controller"
4546
})
4647
public class ResponseMessageAdviser implements ResponseBodyAdvice {

core/src/main/java/com/flowci/core/git/controller/GithookController.java renamed to core/src/main/java/com/flowci/core/git/controller/GitHookController.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@
4545
@Log4j2
4646
@RestController
4747
@RequestMapping("/webhooks")
48-
public class GithookController {
48+
public class GitHookController {
4949

5050
@Autowired
5151
private HttpServletRequest request;

core/src/main/java/com/flowci/core/git/controller/GitSettingsController.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package com.flowci.core.git.controller;
22

33
import com.flowci.core.common.domain.GitSource;
4-
import com.flowci.core.git.domain.GitSettings;
4+
import com.flowci.core.git.domain.GitConfig;
55
import com.flowci.core.git.service.GitService;
66
import com.flowci.exception.UnsupportedException;
77
import lombok.extern.log4j.Log4j2;
@@ -20,7 +20,7 @@ public class GitSettingsController {
2020
private GitService gitService;
2121

2222
@PostMapping("/save")
23-
public GitSettings save(@RequestBody Request.SaveOptions options) {
23+
public GitConfig save(@RequestBody Request.SaveOptions options) {
2424
if (options.getSource() == GitSource.GITHUB) {
2525
return gitService.saveGithubSecret(options.getSecret());
2626
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package com.flowci.core.git.dao;
2+
3+
import com.flowci.core.common.domain.GitSource;
4+
import com.flowci.core.git.domain.GitConfig;
5+
import org.springframework.data.mongodb.repository.MongoRepository;
6+
import org.springframework.stereotype.Repository;
7+
8+
import java.util.Optional;
9+
10+
@Repository
11+
public interface GitConfigDao extends MongoRepository<GitConfig, String> {
12+
13+
Optional<GitConfig> findBySource(GitSource source);
14+
}

core/src/main/java/com/flowci/core/git/dao/GitSettingsDao.java

Lines changed: 0 additions & 13 deletions
This file was deleted.
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package com.flowci.core.git.domain;
2+
3+
import com.flowci.core.common.domain.GitSource;
4+
import com.flowci.core.common.domain.Mongoable;
5+
import lombok.Getter;
6+
import lombok.NoArgsConstructor;
7+
import lombok.Setter;
8+
import org.springframework.data.mongodb.core.index.Indexed;
9+
10+
@Getter
11+
@Setter
12+
@NoArgsConstructor
13+
public class GitConfig extends Mongoable {
14+
15+
@Indexed(unique = true)
16+
private GitSource source;
17+
18+
private String secret;
19+
20+
public GitConfig(GitSource source, String secret) {
21+
this.source = source;
22+
this.secret = secret;
23+
}
24+
}

core/src/main/java/com/flowci/core/git/domain/GitSettings.java

Lines changed: 0 additions & 21 deletions
This file was deleted.
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package com.flowci.core.git.service;
22

3-
import com.flowci.core.git.domain.GitSettings;
3+
import com.flowci.core.git.domain.GitConfig;
44

55
public interface GitService {
66

7-
GitSettings saveGithubSecret(String secret);
7+
GitConfig saveGithubSecret(String secret);
88
}

core/src/main/java/com/flowci/core/git/service/GitServiceImpl.java

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -2,30 +2,32 @@
22

33
import com.fasterxml.jackson.databind.ObjectMapper;
44
import com.flowci.core.common.domain.GitSource;
5+
import com.flowci.core.common.manager.SessionManager;
56
import com.flowci.core.common.manager.SpringEventManager;
67
import com.flowci.core.git.client.GitAPIClient;
78
import com.flowci.core.git.client.GithubAPIClient;
8-
import com.flowci.core.git.dao.GitSettingsDao;
9+
import com.flowci.core.git.dao.GitConfigDao;
910
import com.flowci.core.git.domain.GitCommitStatus;
10-
import com.flowci.core.git.domain.GitSettings;
11+
import com.flowci.core.git.domain.GitConfig;
1112
import com.flowci.core.job.domain.Job;
1213
import com.flowci.core.job.event.JobFinishedEvent;
1314
import com.flowci.core.job.util.JobContextHelper;
1415
import com.flowci.core.secret.domain.Secret;
1516
import com.flowci.core.secret.domain.TokenSecret;
1617
import com.flowci.core.secret.event.GetSecretEvent;
1718
import com.flowci.exception.ArgumentException;
19+
import com.flowci.exception.NotFoundException;
1820
import com.flowci.util.StringHelper;
1921
import lombok.extern.log4j.Log4j2;
2022
import org.springframework.beans.factory.annotation.Autowired;
2123
import org.springframework.context.event.EventListener;
22-
import org.springframework.dao.DuplicateKeyException;
2324
import org.springframework.stereotype.Service;
2425

2526
import javax.annotation.PostConstruct;
2627
import java.net.http.HttpClient;
2728
import java.util.HashMap;
2829
import java.util.Map;
30+
import java.util.Optional;
2931

3032
@Log4j2
3133
@Service("gitService")
@@ -38,40 +40,41 @@ public class GitServiceImpl implements GitService {
3840
private ObjectMapper objectMapper;
3941

4042
@Autowired
41-
private GitSettingsDao gitSettingsDao;
43+
private GitConfigDao gitConfigDao;
4244

4345
@Autowired
4446
private SpringEventManager eventManager;
4547

48+
@Autowired
49+
private SessionManager sessionManager;
50+
4651
private final Map<GitSource, ActionHandler> actions = new HashMap<>(5);
4752

4853
@PostConstruct
4954
public void init() {
5055
actions.put(GitSource.GITHUB, new GitHubActionHandler());
51-
52-
var optional = gitSettingsDao.findByKey(GitSettings.Key);
53-
if (optional.isEmpty()) {
54-
try {
55-
gitSettingsDao.save(new GitSettings());
56-
} catch (DuplicateKeyException ignore) {
57-
// ignore the duplicate git settings key
58-
}
59-
}
6056
}
6157

6258
@Override
63-
public GitSettings saveGithubSecret(String secretName) {
59+
public GitConfig saveGithubSecret(String secretName) {
6460
var event = eventManager.publish(new GetSecretEvent(this, secretName));
65-
var event1 = eventManager.publish(new GetSecretEvent(this, secretName));
66-
Secret secret = event1.getFetched();
61+
Secret secret = event.getFetched();
6762

6863
if (!(secret instanceof TokenSecret)) {
6964
throw new ArgumentException("Token secret is required");
7065
}
7166

72-
var settings = loadGitSettings();
73-
settings.setGitHubTokenSecret(secretName);
74-
return gitSettingsDao.save(settings);
67+
var optional = gitConfigDao.findBySource(GitSource.GITHUB);
68+
if (optional.isEmpty()) {
69+
GitConfig c = new GitConfig(GitSource.GITHUB, secretName);
70+
c.setCreatedBy(sessionManager.getUserEmail());
71+
return gitConfigDao.save(c);
72+
}
73+
74+
GitConfig c = optional.get();
75+
c.setSecret(secretName);
76+
c.setUpdatedBy(sessionManager.getUserEmail());
77+
return gitConfigDao.save(c);
7578
}
7679

7780
@EventListener
@@ -105,10 +108,6 @@ public void onJobFinishEvent(JobFinishedEvent event) {
105108
}
106109
}
107110

108-
private GitSettings loadGitSettings() {
109-
return gitSettingsDao.findByKey(GitSettings.Key).get();
110-
}
111-
112111
private interface ActionHandler {
113112
void write(GitCommitStatus commit);
114113
}
@@ -119,10 +118,12 @@ private class GitHubActionHandler implements ActionHandler {
119118

120119
@Override
121120
public void write(GitCommitStatus commit) {
122-
var settings = loadGitSettings();
123-
String secretName = settings.getGitHubTokenSecret();
121+
Optional<GitConfig> optional = gitConfigDao.findBySource(GitSource.GITHUB);
122+
if (optional.isEmpty()) {
123+
throw new NotFoundException("Github secret not found");
124+
}
124125

125-
var event = eventManager.publish(new GetSecretEvent(GitServiceImpl.this, secretName));
126+
var event = eventManager.publish(new GetSecretEvent(GitServiceImpl.this, optional.get().getSecret()));
126127
Secret secret = event.getFetched();
127128

128129
if (!(secret instanceof TokenSecret)) {
@@ -133,5 +134,4 @@ public void write(GitCommitStatus commit) {
133134
client.writeCommitStatus(commit, tokenSecret);
134135
}
135136
}
136-
137137
}

0 commit comments

Comments
 (0)