Skip to content

Commit dfd0904

Browse files
committed
trigger new build
1 parent b8958b8 commit dfd0904

File tree

15 files changed

+183
-35
lines changed

15 files changed

+183
-35
lines changed
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package com.flowci.build.business;
2+
3+
import com.flowci.build.model.Build;
4+
import com.flowci.common.model.Variables;
5+
6+
public interface CreateBuild {
7+
Build invoke(Long flowId, Build.Trigger trigger, Variables inputs);
8+
}

src/main/java/com/flowci/build/business/CreateNewBuild.java

Lines changed: 0 additions & 16 deletions
This file was deleted.
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package com.flowci.build.business;
2+
3+
import com.flowci.build.model.Build;
4+
5+
public interface FetchYamlFromGit {
6+
void invoke(Build build);
7+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package com.flowci.build.business;
2+
3+
public interface WaitForAgent {
4+
void invoke(Long buildId);
5+
}

src/main/java/com/flowci/build/business/impl/CreateNewBuildImpl.java renamed to src/main/java/com/flowci/build/business/impl/CreateBuildImpl.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.flowci.build.business.impl;
22

3-
import com.flowci.build.business.CreateNewBuild;
3+
import com.flowci.build.business.CreateBuild;
4+
import com.flowci.build.business.TriggerBuild;
45
import com.flowci.build.model.Build;
56
import com.flowci.build.model.BuildYaml;
67
import com.flowci.build.repo.BuildRepo;
@@ -22,7 +23,7 @@
2223
@Slf4j
2324
@Component
2425
@AllArgsConstructor
25-
public class CreateNewBuildImpl implements CreateNewBuild {
26+
public class CreateBuildImpl implements CreateBuild {
2627

2728
private final FetchFlow fetchFlow;
2829
private final FetchFlowYamlContent fetchFlowYamlContent;
@@ -43,7 +44,7 @@ public Build invoke(Long flowId, Build.Trigger trigger, Variables inputs) {
4344
: new HashSet<>(yamlObj.getAgents());
4445

4546
var build = new Build();
46-
build.setFlowId(flowId);
47+
build.setFlowId(flow.getId());
4748
build.setTrigger(trigger);
4849
build.setStatus(Build.Status.CREATED);
4950
build.setAgentTags(agentTags.toArray(new String[0]));
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package com.flowci.build.business.impl;
2+
3+
import com.flowci.build.business.FetchYamlFromGit;
4+
import com.flowci.build.model.Build;
5+
import org.springframework.stereotype.Component;
6+
7+
@Component
8+
public class FetchYamlFromGitImpl implements FetchYamlFromGit {
9+
@Override
10+
public void invoke(Build build) {
11+
// TODO:
12+
}
13+
}
Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,26 @@
11
package com.flowci.build.business.impl;
22

3-
import com.flowci.build.business.CreateNewBuild;
3+
import com.flowci.build.business.CreateBuild;
44
import com.flowci.build.business.TriggerBuild;
5+
import com.flowci.build.business.WaitForAgent;
56
import com.flowci.build.model.Build;
67
import com.flowci.common.model.Variables;
78
import lombok.AllArgsConstructor;
8-
import lombok.extern.slf4j.Slf4j;
99
import org.springframework.stereotype.Component;
10+
import org.springframework.transaction.annotation.Transactional;
1011

11-
@Slf4j
1212
@Component
1313
@AllArgsConstructor
1414
public class TriggerBuildImpl implements TriggerBuild {
1515

16-
private final CreateNewBuild createNewBuild;
16+
private final CreateBuild createBuild;
17+
private final WaitForAgent waitForAgent;
1718

1819
@Override
20+
@Transactional
1921
public Build invoke(Long flowId, Build.Trigger trigger, Variables inputs) {
20-
var build = createNewBuild.invoke(flowId, trigger, inputs);
21-
22-
// put to queue, and wait
23-
24-
return null;
22+
var build = createBuild.invoke(flowId, trigger, inputs);
23+
waitForAgent.invoke(build.getId());
24+
return build;
2525
}
2626
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package com.flowci.build.business.impl;
2+
3+
import com.flowci.build.business.WaitForAgent;
4+
import com.flowci.build.model.Build;
5+
import com.flowci.build.repo.BuildRepo;
6+
import lombok.AllArgsConstructor;
7+
import org.springframework.stereotype.Component;
8+
9+
@Component
10+
@AllArgsConstructor
11+
public class WaitForAgentImpl implements WaitForAgent {
12+
13+
private final BuildRepo buildRepo;
14+
15+
@Override
16+
public void invoke(Long buildId) {
17+
buildRepo.updateBuildStatusById(buildId, Build.Status.QUEUED);
18+
}
19+
}

src/main/java/com/flowci/build/model/Build.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,13 @@
22

33
import com.flowci.common.model.EntityBase;
44
import io.hypersistence.utils.hibernate.type.array.StringArrayType;
5+
import io.hypersistence.utils.hibernate.type.json.JsonType;
56
import jakarta.annotation.Nullable;
67
import jakarta.persistence.*;
78
import lombok.Data;
89
import lombok.EqualsAndHashCode;
910
import org.hibernate.annotations.Generated;
11+
import org.hibernate.annotations.Type;
1012
import org.hibernate.generator.EventType;
1113

1214
import java.util.Set;
@@ -78,8 +80,8 @@ public enum Status {
7880
@org.hibernate.annotations.Type(StringArrayType.class)
7981
private String[] agentTags;
8082

81-
@Nullable
82-
private String commitHash;
83+
@Type(JsonType.class)
84+
private GitRef gitRef;
8385

8486
/**
8587
* Assigned agent id

src/main/java/com/flowci/build/model/BuildYaml.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import com.flowci.common.model.EntityBase;
44
import com.flowci.common.model.Variables;
55
import io.hypersistence.utils.hibernate.type.json.JsonType;
6-
import jakarta.persistence.Convert;
76
import jakarta.persistence.Entity;
87
import jakarta.persistence.Id;
98
import jakarta.persistence.Table;
@@ -20,7 +19,7 @@ public class BuildYaml extends EntityBase {
2019
@Id
2120
private Long id;
2221

23-
// ref to flow variables
22+
// ref to flow variables and extra inputs
2423
@Type(JsonType.class)
2524
private Variables variables;
2625

0 commit comments

Comments
 (0)