Skip to content

Commit 903759b

Browse files
committed
[feat]: [CI-4254]: Trigger Creation flow for Git Exp
1 parent ff97a46 commit 903759b

14 files changed

Lines changed: 242 additions & 12 deletions

File tree

810-ng-triggers/src/main/java/io/harness/ngtriggers/beans/config/NGTriggerConfigV2.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ public class NGTriggerConfigV2 implements NGTriggerInterface {
2929
String pipelineIdentifier;
3030
Map<String, String> tags;
3131
String inputYaml;
32+
String branch;
33+
String inputSetRef;
3234
NGTriggerSourceV2 source;
3335
@Builder.Default Boolean enabled = Boolean.TRUE;
3436
}

810-ng-triggers/src/main/java/io/harness/ngtriggers/buildtriggers/helpers/BuildTriggerHelper.java

Lines changed: 45 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,18 @@
1919
import io.harness.exception.InvalidRequestException;
2020
import io.harness.expression.EngineExpressionEvaluator;
2121
import io.harness.jackson.JsonNodeUtils;
22+
import io.harness.ngtriggers.beans.config.NGTriggerConfigV2;
2223
import io.harness.ngtriggers.beans.dto.TriggerDetails;
2324
import io.harness.ngtriggers.beans.entity.NGTriggerEntity;
2425
import io.harness.ngtriggers.beans.source.NGTriggerSpecV2;
2526
import io.harness.ngtriggers.beans.source.artifact.BuildAware;
2627
import io.harness.ngtriggers.buildtriggers.helpers.dtos.BuildTriggerOpsData;
28+
import io.harness.ngtriggers.mapper.NGTriggerElementMapper;
2729
import io.harness.pipeline.remote.PipelineServiceClient;
30+
import io.harness.pms.inputset.MergeInputSetResponseDTOPMS;
2831
import io.harness.pms.merger.YamlConfig;
2932
import io.harness.pms.merger.fqn.FQN;
33+
import io.harness.pms.ngpipeline.inputset.beans.resource.MergeInputSetRequestDTOPMS;
3034
import io.harness.pms.pipeline.PMSPipelineResponseDTO;
3135
import io.harness.pms.pipeline.TemplatesResolvedPipelineResponseDTO;
3236
import io.harness.pms.yaml.YamlUtils;
@@ -58,11 +62,23 @@
5862
@OwnedBy(PIPELINE)
5963
public class BuildTriggerHelper {
6064
private PipelineServiceClient pipelineServiceClient;
65+
private NGTriggerElementMapper ngTriggerElementMapper;
6166

6267
public Optional<String> fetchPipelineForTrigger(NGTriggerEntity ngTriggerEntity) {
68+
NGTriggerConfigV2 triggerConfigV2 = ngTriggerElementMapper.toTriggerConfigV2(ngTriggerEntity);
69+
String pipelineBranch = triggerConfigV2.getBranch();
70+
String branch = null;
71+
72+
if (Strings.isNotBlank(pipelineBranch)) {
73+
if (!(pipelineBranch.startsWith(EngineExpressionEvaluator.EXPR_START)
74+
&& pipelineBranch.endsWith(EngineExpressionEvaluator.EXPR_END))) {
75+
branch = pipelineBranch;
76+
}
77+
}
78+
6379
PMSPipelineResponseDTO response = NGRestUtils.getResponse(pipelineServiceClient.getPipelineByIdentifier(
6480
ngTriggerEntity.getTargetIdentifier(), ngTriggerEntity.getAccountId(), ngTriggerEntity.getOrgIdentifier(),
65-
ngTriggerEntity.getProjectIdentifier(), null, null, false));
81+
ngTriggerEntity.getProjectIdentifier(), branch, null, false));
6682

6783
return response != null ? Optional.of(response.getYamlPipeline()) : Optional.empty();
6884
}
@@ -387,4 +403,32 @@ public void verifyStageAndBuildRef(TriggerDetails triggerDetails, String fieldNa
387403
throw new InvalidArgumentsException(msg.toString());
388404
}
389405
}
406+
407+
public Optional<String> fetchInputSetForTrigger(NGTriggerEntity ngTriggerEntity) {
408+
NGTriggerConfigV2 triggerConfigV2 = ngTriggerElementMapper.toTriggerConfigV2(ngTriggerEntity);
409+
String pipelineBranch = triggerConfigV2.getBranch();
410+
String branch = null;
411+
if (Strings.isNotEmpty(pipelineBranch)) {
412+
if (!(pipelineBranch.startsWith(EngineExpressionEvaluator.EXPR_START)
413+
&& pipelineBranch.endsWith(EngineExpressionEvaluator.EXPR_END))) {
414+
branch = pipelineBranch;
415+
}
416+
}
417+
String inputSetRef = triggerConfigV2.getInputSetRef();
418+
String inputSetId = getInputsetId(inputSetRef);
419+
List<String> inputSetRefs = new ArrayList<>();
420+
inputSetRefs.add(inputSetId);
421+
MergeInputSetRequestDTOPMS mergeInputSetRequestDTOPMS =
422+
MergeInputSetRequestDTOPMS.builder().inputSetReferences(inputSetRefs).build();
423+
MergeInputSetResponseDTOPMS response =
424+
NGRestUtils.getResponse(pipelineServiceClient.getMergeInputSetFromPipelineTemplate(
425+
ngTriggerEntity.getAccountId(), ngTriggerEntity.getOrgIdentifier(), ngTriggerEntity.getProjectIdentifier(),
426+
ngTriggerEntity.getTargetIdentifier(), branch, null, branch, null, false, mergeInputSetRequestDTOPMS));
427+
428+
return response != null ? Optional.of(response.getPipelineYaml()) : Optional.empty();
429+
}
430+
431+
private String getInputsetId(String inputSetRef) {
432+
return inputSetRef.split("pipeline.")[1];
433+
}
390434
}

810-ng-triggers/src/main/java/io/harness/ngtriggers/service/impl/NGTriggerServiceImpl.java

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@
8686
import com.cronutils.parser.CronParser;
8787
import com.fasterxml.jackson.databind.JsonNode;
8888
import com.fasterxml.jackson.databind.node.ObjectNode;
89+
import com.fasterxml.jackson.databind.node.TextNode;
8990
import com.google.inject.Inject;
9091
import com.google.inject.Singleton;
9192
import com.mongodb.client.result.UpdateResult;
@@ -591,8 +592,7 @@ private void validatePipelineRef(TriggerDetails triggerDetails) {
591592
if (pipelineYmlOptional.isPresent()) {
592593
String pipelineYaml = pipelineYmlOptional.get();
593594
String templateYaml = createRuntimeInputForm(pipelineYaml);
594-
String triggerYaml = triggerDetails.getNgTriggerEntity().getYaml();
595-
String triggerPipelineYml = getPipelineComponent(triggerYaml);
595+
String triggerPipelineYml = getPipelineComponent(ngTriggerEntity);
596596
Map<FQN, String> invalidFQNs = getInvalidFQNsInTrigger(templateYaml, triggerPipelineYml);
597597
if (EmptyPredicate.isEmpty(invalidFQNs)) {
598598
return;
@@ -608,7 +608,8 @@ private void validatePipelineRef(TriggerDetails triggerDetails) {
608608
}
609609
}
610610

611-
private String getPipelineComponent(String triggerYml) {
611+
public String getPipelineComponent(NGTriggerEntity ngTriggerEntity) {
612+
String triggerYml = ngTriggerEntity.getYaml();
612613
try {
613614
if (EmptyPredicate.isEmpty(triggerYml)) {
614615
return triggerYml;
@@ -619,6 +620,13 @@ private String getPipelineComponent(String triggerYml) {
619620
throw new InvalidRequestException("Invalid Trigger Yaml.");
620621
}
621622
JsonNode inputYaml = innerMap.get(INPUT_YAML);
623+
JsonNode inputSetRef = innerMap.get("inputSetRef");
624+
if (inputSetRef != null) {
625+
Optional<String> inputSetYmlOptional = validationHelper.fetchInputSetForTrigger(ngTriggerEntity);
626+
if (inputSetYmlOptional.isPresent()) {
627+
inputYaml = new TextNode(inputSetYmlOptional.get());
628+
}
629+
}
622630
if (inputYaml == null) {
623631
throw new InvalidRequestException("Invalid Trigger Yaml.");
624632
}

810-ng-triggers/src/test/java/io/harness/ngtriggers/buildtriggers/helper/generator/GeneratorFactoryTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ public class GeneratorFactoryTest extends CategoryTest {
5454
@Before
5555
public void setUp() throws IOException {
5656
MockitoAnnotations.initMocks(this);
57-
buildTriggerHelper = new BuildTriggerHelper(null);
57+
buildTriggerHelper = new BuildTriggerHelper(null, null);
5858
httpHelmPollingItemGenerator = new HttpHelmPollingItemGenerator(buildTriggerHelper);
5959
s3HelmPollingItemGenerator = new S3HelmPollingItemGenerator(buildTriggerHelper);
6060
GCSHelmPollingItemGenerator gcsHelmPollingItemGenerator = new GCSHelmPollingItemGenerator(buildTriggerHelper);

810-ng-triggers/src/test/java/io/harness/ngtriggers/buildtriggers/helper/generator/artifacts/DockerRegistryPollingItemGeneratorTest.java

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

3838
@OwnedBy(PIPELINE)
3939
public class DockerRegistryPollingItemGeneratorTest extends CategoryTest {
40-
BuildTriggerHelper buildTriggerHelper = new BuildTriggerHelper(null);
40+
BuildTriggerHelper buildTriggerHelper = new BuildTriggerHelper(null, null);
4141
@InjectMocks NGTriggerElementMapper ngTriggerElementMapper;
4242
DockerRegistryPollingItemGenerator dockerRegistryPollingItemGenerator =
4343
new DockerRegistryPollingItemGenerator(buildTriggerHelper);

810-ng-triggers/src/test/java/io/harness/ngtriggers/buildtriggers/helper/generator/artifacts/EcrPollingItemGeneratorTest.java

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

3838
@OwnedBy(PIPELINE)
3939
public class EcrPollingItemGeneratorTest extends CategoryTest {
40-
BuildTriggerHelper buildTriggerHelper = new BuildTriggerHelper(null);
40+
BuildTriggerHelper buildTriggerHelper = new BuildTriggerHelper(null, null);
4141
@InjectMocks NGTriggerElementMapper ngTriggerElementMapper;
4242
EcrPollingItemGenerator ecrPollingItemGenerator = new EcrPollingItemGenerator(buildTriggerHelper);
4343
String ecr_pipeline_artifact_snippet_runtime_all;

810-ng-triggers/src/test/java/io/harness/ngtriggers/buildtriggers/helper/generator/artifacts/GcrPollingItemGeneratorTest.java

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

3838
@OwnedBy(PIPELINE)
3939
public class GcrPollingItemGeneratorTest extends CategoryTest {
40-
BuildTriggerHelper buildTriggerHelper = new BuildTriggerHelper(null);
40+
BuildTriggerHelper buildTriggerHelper = new BuildTriggerHelper(null, null);
4141
@InjectMocks NGTriggerElementMapper ngTriggerElementMapper;
4242
GcrPollingItemGenerator gcrPollingItemGenerator = new GcrPollingItemGenerator(buildTriggerHelper);
4343
String gcr_pipeline_artifact_snippet_runtime_all;

810-ng-triggers/src/test/java/io/harness/ngtriggers/buildtriggers/helper/generator/manifests/HelmGcsPollingItemGeneratorTest.java

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

3939
@OwnedBy(PIPELINE)
4040
public class HelmGcsPollingItemGeneratorTest extends CategoryTest {
41-
BuildTriggerHelper buildTriggerHelper = new BuildTriggerHelper(null);
41+
BuildTriggerHelper buildTriggerHelper = new BuildTriggerHelper(null, null);
4242
@InjectMocks NGTriggerElementMapper ngTriggerElementMapper;
4343
GCSHelmPollingItemGenerator gcsHelmPollingItemGenerator = new GCSHelmPollingItemGenerator(buildTriggerHelper);
4444
String helm_gcs_pipeline_manifest_snippet_runtime_all;

810-ng-triggers/src/test/java/io/harness/ngtriggers/buildtriggers/helper/generator/manifests/HelmHttpPollingItemGeneratorTest.java

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

3838
@OwnedBy(PIPELINE)
3939
public class HelmHttpPollingItemGeneratorTest extends CategoryTest {
40-
BuildTriggerHelper buildTriggerHelper = new BuildTriggerHelper(null);
40+
BuildTriggerHelper buildTriggerHelper = new BuildTriggerHelper(null, null);
4141
@InjectMocks NGTriggerElementMapper ngTriggerElementMapper;
4242
HttpHelmPollingItemGenerator httpHelmPollingItemGenerator = new HttpHelmPollingItemGenerator(buildTriggerHelper);
4343
String helm_http_pipeline_manifest_snippet_runtime_all;

810-ng-triggers/src/test/java/io/harness/ngtriggers/buildtriggers/helper/generator/manifests/HelmS3PollingItemGeneratorTest.java

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

3838
@OwnedBy(PIPELINE)
3939
public class HelmS3PollingItemGeneratorTest extends CategoryTest {
40-
BuildTriggerHelper buildTriggerHelper = new BuildTriggerHelper(null);
40+
BuildTriggerHelper buildTriggerHelper = new BuildTriggerHelper(null, null);
4141
@InjectMocks NGTriggerElementMapper ngTriggerElementMapper;
4242
S3HelmPollingItemGenerator s3HelmPollingItemGenerator = new S3HelmPollingItemGenerator(buildTriggerHelper);
4343
String helm_s3_pipeline_manifest_snippet_runtime_all;

0 commit comments

Comments
 (0)