Skip to content

Commit ea1ccbc

Browse files
committed
enable write gerrit status back
1 parent 737ebe9 commit ea1ccbc

File tree

6 files changed

+45
-15
lines changed

6 files changed

+45
-15
lines changed

core/src/main/java/com/flowci/core/git/client/GerritAPIClient.java

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,10 @@
1515
import lombok.AllArgsConstructor;
1616
import lombok.NoArgsConstructor;
1717
import lombok.extern.log4j.Log4j2;
18+
import org.springframework.http.HttpHeaders;
1819
import org.springframework.http.HttpStatus;
20+
import org.springframework.http.MediaType;
21+
import org.springframework.web.util.UriComponentsBuilder;
1922

2023
import java.net.URI;
2124
import java.net.http.HttpClient;
@@ -25,8 +28,6 @@
2528
@Log4j2
2629
public class GerritAPIClient implements GitAPIClient {
2730

28-
private final static String SetReviewAPI = "%s/repos/a/changes/%s/revisions/%s/review";
29-
3031
private final HttpClient httpClient;
3132

3233
private final ObjectMapper objectMapper;
@@ -57,7 +58,16 @@ public void writeCommitStatus(GitCommitStatus commit, GitConfig config) {
5758

5859
try {
5960
var gitConfig = (GitConfigWithHost) config;
60-
var url = String.format(SetReviewAPI, gitConfig.getHost(), changeId.get(), commit.getId());
61+
62+
var url = UriComponentsBuilder.fromHttpUrl(gitConfig.getHost())
63+
.path("/a/changes/")
64+
.path(changeId.get())
65+
.path("/revisions/")
66+
.path(commit.getId())
67+
.path("/review")
68+
.build()
69+
.toUriString();
70+
6171
var request = getRequestBuilder(url, (AuthSecret) secret)
6272
.POST(HttpRequest.BodyPublishers.ofString(objectMapper.writeValueAsString(getBodyObj(commit))))
6373
.build();
@@ -78,7 +88,8 @@ public void writeCommitStatus(GitCommitStatus commit, GitConfig config) {
7888
private HttpRequest.Builder getRequestBuilder(String url, AuthSecret secret) {
7989
var str = secret.getUsername() + ":" + secret.getPassword();
8090
return HttpRequest.newBuilder(URI.create(url))
81-
.setHeader("Authorization", "Basic " + StringHelper.toBase64(str));
91+
.setHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE)
92+
.setHeader(HttpHeaders.AUTHORIZATION, "Basic " + StringHelper.toBase64(str));
8293
}
8394

8495
private SetReviewBody getBodyObj(GitCommitStatus c) {

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

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import com.flowci.core.auth.annotation.Action;
44
import com.flowci.core.common.domain.GitSource;
55
import com.flowci.core.git.domain.GitConfig;
6-
import com.flowci.core.git.service.GitService;
6+
import com.flowci.core.git.service.GitConfigService;
77
import com.flowci.exception.ArgumentException;
88
import lombok.extern.log4j.Log4j2;
99
import org.springframework.beans.factory.annotation.Autowired;
@@ -17,18 +17,18 @@
1717
public class GitConfigController {
1818

1919
@Autowired
20-
private GitService gitService;
20+
private GitConfigService gitConfigService;
2121

2222
@Action(GitActions.LIST)
2323
@GetMapping
2424
public List<GitConfig> list() {
25-
return gitService.list();
25+
return gitConfigService.list();
2626
}
2727

2828
@Action(GitActions.GET)
2929
@GetMapping("/{source}")
3030
public GitConfig get(@PathVariable String source) {
31-
return gitService.get(GitSource.valueOf(source.toUpperCase()));
31+
return gitConfigService.get(GitSource.valueOf(source.toUpperCase()));
3232
}
3333

3434
@Action(GitActions.SAVE)
@@ -38,12 +38,12 @@ public GitConfig save(@RequestBody Request.SaveOptions options) {
3838
throw new ArgumentException("Host address is required for Gerrit");
3939
}
4040

41-
return gitService.save(options.toGitConfig());
41+
return gitConfigService.save(options.toGitConfig());
4242
}
4343

4444
@Action(GitActions.DELETE)
4545
@DeleteMapping("/{source}")
4646
public void delete(@PathVariable String source) {
47-
gitService.delete(GitSource.valueOf(source.toUpperCase()));
47+
gitConfigService.delete(GitSource.valueOf(source.toUpperCase()));
4848
}
4949
}

core/src/main/java/com/flowci/core/git/service/GitService.java renamed to core/src/main/java/com/flowci/core/git/service/GitConfigService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
import java.util.List;
77

8-
public interface GitService {
8+
public interface GitConfigService {
99

1010
List<GitConfig> list();
1111

core/src/main/java/com/flowci/core/git/service/GitServiceImpl.java renamed to core/src/main/java/com/flowci/core/git/service/GitConfigServiceImpl.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@
3131
import java.util.*;
3232

3333
@Log4j2
34-
@Service("gitService")
35-
public class GitServiceImpl implements GitService {
34+
@Service("gitConfigService")
35+
public class GitConfigServiceImpl implements GitConfigService {
3636

3737
@Autowired
3838
private HttpClient httpClient;
@@ -95,6 +95,7 @@ public void onJobFinishEvent(JobFinishedEvent event) {
9595

9696
var commit = new GitCommitStatus();
9797
commit.setId(JobContextHelper.getCommitId(job));
98+
commit.setMessage(JobContextHelper.getGitMessage(job));
9899
commit.setUrl(JobContextHelper.getGitUrl(job));
99100
commit.setTargetUrl(JobContextHelper.getJobUrl(job));
100101
commit.setStatus(JobContextHelper.getStatus(job).name().toLowerCase());
@@ -121,7 +122,7 @@ private abstract class OperationHandler {
121122
abstract void writeCommit(GitCommitStatus commit, GitConfig config);
122123

123124
Secret fetch(String name, Class<?> expected) {
124-
var event = eventManager.publish(new GetSecretEvent(GitServiceImpl.this, name));
125+
var event = eventManager.publish(new GetSecretEvent(this, name));
125126
Secret secret = event.getFetched();
126127

127128
if (!expected.isInstance(secret)) {

core/src/main/java/com/flowci/core/job/util/JobContextHelper.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@
33
import com.flowci.core.common.domain.Variables;
44
import com.flowci.core.flow.domain.Flow;
55
import com.flowci.core.job.domain.Job;
6+
import com.flowci.util.StringHelper;
7+
8+
import static com.flowci.core.job.domain.Job.Trigger.PUSH;
69

710
public abstract class JobContextHelper {
811

@@ -78,4 +81,19 @@ public static String getCommitId(Job job) {
7881
public static String getGitSource(Job job) {
7982
return job.getContext().get(Variables.Git.SOURCE);
8083
}
84+
85+
public static String getGitMessage(Job job) {
86+
String variable = Variables.Git.PUSH_MESSAGE;
87+
88+
switch (job.getTrigger()) {
89+
case PR_MERGED:
90+
case PR_OPENED:
91+
variable = Variables.Git.PR_MESSAGE;
92+
break;
93+
case PATCHSET:
94+
variable = Variables.Git.PATCHSET_MESSAGE;
95+
}
96+
97+
return job.getContext().get(variable, StringHelper.EMPTY);
98+
}
8199
}

core/src/test/java/com/flowci/core/test/git/CommitHelperTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import com.flowci.core.git.domain.GitCommit;
44
import com.flowci.core.git.util.CommitHelper;
55
import org.junit.Test;
6-
import org.junit.Assert;;
6+
import org.junit.Assert;
77

88
public class CommitHelperTest {
99

0 commit comments

Comments
 (0)