Skip to content

Commit 858662c

Browse files
committed
write git patchset vars to job context
1 parent 8a0b2d1 commit 858662c

File tree

7 files changed

+92
-27
lines changed

7 files changed

+92
-27
lines changed

core/src/main/java/com/flowci/core/common/domain/Variables.java

Lines changed: 36 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -129,18 +129,10 @@ public abstract static class Git {
129129
* Push / Tag variables
130130
*/
131131
public static final String PUSH_AUTHOR = "FLOWCI_GIT_AUTHOR";
132-
133132
public static final String PUSH_BRANCH = "FLOWCI_GIT_BRANCH";
134-
135133
public static final String PUSH_MESSAGE = "FLOWCI_GIT_COMMIT_MESSAGE";
136-
137134
public static final String PUSH_COMMIT_TOTAL = "FLOWCI_GIT_COMMIT_TOTAL";
138-
139-
/**
140-
* b64 json content
141-
*/
142-
public static final String PUSH_COMMIT_LIST = "FLOWCI_GIT_COMMIT_LIST";
143-
135+
public static final String PUSH_COMMIT_LIST = "FLOWCI_GIT_COMMIT_LIST"; // b64 json
144136
public static final Collection<String> PUSH_TAG_VARS = ImmutableList.<String>builder()
145137
.add(PUSH_AUTHOR)
146138
.add(PUSH_BRANCH)
@@ -153,31 +145,18 @@ public abstract static class Git {
153145
* Variables for git pull(mr) request
154146
*/
155147
public static final String PR_TITLE = "FLOWCI_GIT_PR_TITLE";
156-
157148
public static final String PR_MESSAGE = "FLOWCI_GIT_PR_MESSAGE";
158-
159149
public static final String PR_AUTHOR = "FLOWCI_GIT_AUTHOR";
160-
161150
public static final String PR_URL = "FLOWCI_GIT_PR_URL";
162-
163151
public static final String PR_TIME = "FLOWCI_GIT_PR_TIME";
164-
165152
public static final String PR_NUMBER = "FLOWCI_GIT_PR_NUMBER";
166-
167153
public static final String PR_IS_MERGED = "FLOWCI_GIT_PR_IS_MERGED";
168-
169154
public static final String PR_HEAD_REPO_NAME = "FLOWCI_GIT_PR_HEAD_REPO_NAME";
170-
171155
public static final String PR_HEAD_REPO_BRANCH = "FLOWCI_GIT_PR_HEAD_REPO_BRANCH";
172-
173156
public static final String PR_HEAD_REPO_COMMIT = "FLOWCI_GIT_PR_HEAD_REPO_COMMIT";
174-
175157
public static final String PR_BASE_REPO_NAME = "FLOWCI_GIT_PR_BASE_REPO_NAME";
176-
177158
public static final String PR_BASE_REPO_BRANCH = "FLOWCI_GIT_PR_BASE_REPO_BRANCH";
178-
179159
public static final String PR_BASE_REPO_COMMIT = "FLOWCI_GIT_PR_BASE_REPO_COMMIT";
180-
181160
public static final Collection<String> PR_VARS = ImmutableList.<String>builder()
182161
.add(PR_TITLE)
183162
.add(PR_MESSAGE)
@@ -194,5 +173,40 @@ public abstract static class Git {
194173
.add(PR_BASE_REPO_COMMIT)
195174
.build();
196175

176+
/**
177+
* Variables for gerrit patchset
178+
*/
179+
public static final String PATCHSET_SUBJECT = "FLOWCI_GIT_PATCHSET_SUBJECT";
180+
public static final String PATCHSET_MESSAGE = "FLOWCI_GIT_PATCHSET_MESSAGE";
181+
public static final String PATCHSET_PROJECT = "FLOWCI_GIT_PATCHSET_PROJECT";
182+
public static final String PATCHSET_BRANCH = "FLOWCI_GIT_PATCHSET_BRANCH";
183+
public static final String PATCHSET_CHANGE_ID = "FLOWCI_GIT_PATCHSET_CHANGE_ID";
184+
public static final String PATCHSET_CHANGE_NUM = "FLOWCI_GIT_PATCHSET_CHANGE_NUM";
185+
public static final String PATCHSET_CHANGE_URL = "FLOWCI_GIT_PATCHSET_CHANGE_URL";
186+
public static final String PATCHSET_PATCH_NUM = "FLOWCI_GIT_PATCHSET_PATCH_NUM";
187+
public static final String PATCHSET_PATCH_URL = "FLOWCI_GIT_PATCHSET_PATCH_URL";
188+
public static final String PATCHSET_REVISION = "FLOWCI_GIT_PATCHSET_REVISION";
189+
public static final String PATCHSET_REF = "FLOWCI_GIT_PATCHSET_REF";
190+
public static final String PATCHSET_CREATE_TIME = "FLOWCI_GIT_PATCHSET_CREATE_TIME";
191+
public static final String PATCHSET_INSERT_SIZE = "FLOWCI_GIT_PATCHSET_INSERT_SIZE";
192+
public static final String PATCHSET_DELETE_SIZE = "FLOWCI_GIT_PATCHSET_DELETE_SIZE";
193+
public static final String PATCHSET_AUTHOR = "FLOWCI_GIT_PATCHSET_AUTHOR";
194+
public static final Collection<String> PATCH_VARS = ImmutableList.<String>builder()
195+
.add(PATCHSET_SUBJECT)
196+
.add(PATCHSET_MESSAGE)
197+
.add(PATCHSET_PROJECT)
198+
.add(PATCHSET_BRANCH)
199+
.add(PATCHSET_CHANGE_ID)
200+
.add(PATCHSET_CHANGE_NUM)
201+
.add(PATCHSET_CHANGE_URL)
202+
.add(PATCHSET_PATCH_NUM)
203+
.add(PATCHSET_PATCH_URL)
204+
.add(PATCHSET_REVISION)
205+
.add(PATCHSET_REF)
206+
.add(PATCHSET_CREATE_TIME)
207+
.add(PATCHSET_INSERT_SIZE)
208+
.add(PATCHSET_DELETE_SIZE)
209+
.add(PATCHSET_AUTHOR)
210+
.build();
197211
}
198212
}

core/src/main/java/com/flowci/core/githook/domain/GitPatchSetTrigger.java

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
package com.flowci.core.githook.domain;
22

3+
import com.flowci.domain.StringVars;
34
import com.flowci.util.StringHelper;
45
import lombok.Getter;
56
import lombok.Setter;
67

8+
import static com.flowci.core.common.domain.Variables.Git.*;
9+
710
/**
811
* Git trigger to handle gerrit patchset-created event
912
*/
@@ -41,6 +44,27 @@ public class GitPatchSetTrigger extends GitTrigger {
4144

4245
private GitUser author;
4346

47+
@Override
48+
public StringVars toVariableMap() {
49+
var map = super.toVariableMap();
50+
map.put(PATCHSET_SUBJECT, subject);
51+
map.put(PATCHSET_MESSAGE, message);
52+
map.put(PATCHSET_PROJECT, project);
53+
map.put(PATCHSET_BRANCH, branch);
54+
map.put(PATCHSET_CHANGE_ID, changeId);
55+
map.put(PATCHSET_CHANGE_NUM, String.valueOf(changeNumber));
56+
map.put(PATCHSET_CHANGE_URL, changeUrl);
57+
map.put(PATCHSET_PATCH_NUM, String.valueOf(patchNumber));
58+
map.put(PATCHSET_PATCH_URL, patchUrl);
59+
map.put(PATCHSET_REVISION, revision);
60+
map.put(PATCHSET_REF, ref);
61+
map.put(PATCHSET_CREATE_TIME, createdOn);
62+
map.put(PATCHSET_INSERT_SIZE, String.valueOf(sizeInsertions));
63+
map.put(PATCHSET_DELETE_SIZE, String.valueOf(sizeDeletions));
64+
map.put(PATCHSET_AUTHOR, author.getEmail());
65+
return map;
66+
}
67+
4468
@Override
4569
public boolean isSkip() {
4670
return StringHelper.hasValue(message) && message.contains(SkipMessage);

core/src/main/java/com/flowci/core/githook/domain/GitTrigger.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
import com.flowci.domain.StringVars;
2323
import com.flowci.exception.NotFoundException;
2424
import com.flowci.util.StringHelper;
25-
import lombok.EqualsAndHashCode;
2625
import lombok.Getter;
2726
import lombok.Setter;
2827
import lombok.ToString;
@@ -36,7 +35,6 @@
3635
@Getter
3736
@Setter
3837
@ToString(of = {"source", "event"})
39-
@EqualsAndHashCode(of = {"source", "event"})
4038
public abstract class GitTrigger implements Serializable {
4139

4240
protected final static String SkipMessage = "[ci skip]";
@@ -90,6 +88,10 @@ public Trigger toJobTrigger() {
9088
return Trigger.PR_MERGED;
9189
}
9290

91+
if (event == GitEvent.PATCHSET_UPDATE) {
92+
return Trigger.PATCHSET;
93+
}
94+
9395
throw new NotFoundException("Cannot found related job trigger for {0}", event.name());
9496
}
9597

@@ -100,7 +102,7 @@ public Trigger toJobTrigger() {
100102
*/
101103
public abstract String getId();
102104

103-
protected static String buildId(String ...props) {
105+
protected static String buildId(String... props) {
104106
return StringHelper.toBase64(StringHelper.join(props));
105107
}
106108

core/src/main/java/com/flowci/core/job/domain/Job.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,12 @@ public enum Trigger {
8888
/**
8989
* Git tag event
9090
*/
91-
TAG
91+
TAG,
92+
93+
/**
94+
* Git patchset trigger
95+
*/
96+
PATCHSET
9297
}
9398

9499
public enum Status {

core/src/main/java/com/flowci/core/job/domain/JobItem.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,15 @@ public Context convert(org.bson.Document source) {
8989
context.putIfNotEmpty(PR_BASE_REPO_NAME);
9090
context.putIfNotEmpty(PR_BASE_REPO_BRANCH);
9191

92+
// git patchset
93+
context.putIfNotEmpty(PATCHSET_SUBJECT);
94+
context.putIfNotEmpty(PATCHSET_BRANCH);
95+
context.putIfNotEmpty(PATCHSET_CHANGE_ID);
96+
context.putIfNotEmpty(PATCHSET_PATCH_NUM);
97+
context.putIfNotEmpty(PATCHSET_PATCH_URL);
98+
context.putIfNotEmpty(PATCHSET_AUTHOR);
99+
context.putIfNotEmpty(PATCHSET_REF);
100+
92101
return context;
93102
}
94103
}

core/src/main/java/com/flowci/core/job/service/JobServiceImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -436,7 +436,7 @@ private void setTriggerBy(Job job) {
436436
return;
437437
}
438438

439-
String createdBy = context.get(PUSH_AUTHOR, "Unknown");
439+
String createdBy = context.get(new String[]{PUSH_AUTHOR, PR_AUTHOR, PATCHSET_AUTHOR}, "Unknown");
440440
job.setCreatedBy(createdBy);
441441
context.put(Variables.Job.TriggerBy, createdBy);
442442
}

domain/src/main/java/com/flowci/domain/Vars.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,17 @@ public V get(String key, V defaultValue) {
6363
return Objects.isNull(value) ? defaultValue : value;
6464
}
6565

66+
public V get(String []keys, V defaultValue) {
67+
for (var key : keys) {
68+
V value = get(key);
69+
if (Objects.isNull(value)) {
70+
continue;
71+
}
72+
return value;
73+
}
74+
return defaultValue;
75+
}
76+
6677
public Vars<V> putAndReturn(String k, V v) {
6778
put(k, v);
6879
return this;

0 commit comments

Comments
 (0)