diff --git a/src/main/java/io/kestra/plugin/gitlab/MergeRequest.java b/src/main/java/io/kestra/plugin/gitlab/mergerequests/Create.java similarity index 75% rename from src/main/java/io/kestra/plugin/gitlab/MergeRequest.java rename to src/main/java/io/kestra/plugin/gitlab/mergerequests/Create.java index 8bbbbcd..9c93c55 100644 --- a/src/main/java/io/kestra/plugin/gitlab/MergeRequest.java +++ b/src/main/java/io/kestra/plugin/gitlab/mergerequests/Create.java @@ -1,4 +1,4 @@ -package io.kestra.plugin.gitlab; +package io.kestra.plugin.gitlab.mergerequests; import com.fasterxml.jackson.databind.ObjectMapper; import io.kestra.core.http.HttpRequest; @@ -9,6 +9,7 @@ import io.kestra.core.models.property.Property; import io.kestra.core.models.tasks.RunnableTask; import io.kestra.core.runners.RunContext; +import io.kestra.plugin.gitlab.AbstractGitLabTask; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotNull; import lombok.*; @@ -28,28 +29,31 @@ description = "Create a new merge request in a GitLab project. " + "You need to provide a valid GitLab project ID and a personal access token with the necessary permissions." ) -@Plugin(examples = { - @Example( - title = "Create a merge request in a GitLab project using a project access token.", - full = true, - code = """ - id: gitlab_merge_request - namespace: company.team - - tasks: - - id: create_merge_request - type: io.kestra.plugin.gitlab.MergeRequest - url: https://gitlab.example.com - token: "{{ secret('GITLAB_TOKEN') }}" - projectId: "123" - title: "Feature: Add new functionality" - mergeRequestDescription: "This merge request adds new functionality to the project" - sourceBranch: "feat-testing" - targetBranch: "main" - """ - ) -}) -public class MergeRequest extends AbstractGitLabTask implements RunnableTask { +@Plugin( + examples = { + @Example( + title = "Create a merge request in a GitLab project using a project access token.", + full = true, + code = """ + id: gitlab_merge_request + namespace: company.team + + tasks: + - id: create_merge_request + type: io.kestra.plugin.gitlab.mergerequests.Create + url: https://gitlab.example.com + token: "{{ secret('GITLAB_TOKEN') }}" + projectId: "123" + title: "Feature: Add new functionality" + mergeRequestDescription: "This merge request adds new functionality to the project" + sourceBranch: "feat-testing" + targetBranch: "main" + """ + ) + }, + aliases = "io.kestra.plugin.gitlab.MergeRequest" +) +public class Create extends AbstractGitLabTask implements RunnableTask { @Schema(title = "Merge request title") @NotNull diff --git a/src/main/resources/icons/io.kestra.plugin.gitlab.mergerequests.svg b/src/main/resources/icons/io.kestra.plugin.gitlab.mergerequests.svg new file mode 100644 index 0000000..09342b0 --- /dev/null +++ b/src/main/resources/icons/io.kestra.plugin.gitlab.mergerequests.svg @@ -0,0 +1,10 @@ + + + + + + \ No newline at end of file diff --git a/src/main/resources/metadata/mergerequests.yaml b/src/main/resources/metadata/mergerequests.yaml new file mode 100644 index 0000000..82df504 --- /dev/null +++ b/src/main/resources/metadata/mergerequests.yaml @@ -0,0 +1,8 @@ +group: io.kestra.plugin.gitlab.mergerequests +name: "mergerequests" +title: "Merge Requests" +description: "Tasks that create, update, and fetch GitLab Merge Requests." +body: "Set the GitLab host, project ID, and access token to handle Merge Requests." +videos: [] +createdBy: "Kestra Core Team" +managedBy: "Kestra Core Team" diff --git a/src/test/java/io/kestra/plugin/gitlab/WireMockTest.java b/src/test/java/io/kestra/plugin/gitlab/WireMockTest.java index 46c4bf2..8106547 100644 --- a/src/test/java/io/kestra/plugin/gitlab/WireMockTest.java +++ b/src/test/java/io/kestra/plugin/gitlab/WireMockTest.java @@ -10,7 +10,7 @@ @KestraTest public abstract class WireMockTest { @RegisterExtension - static WireMockExtension wireMock = WireMockExtension.newInstance() + public static WireMockExtension wireMock = WireMockExtension.newInstance() .options(wireMockConfig().dynamicPort()) .build(); } diff --git a/src/test/java/io/kestra/plugin/gitlab/CreateIssueTest.java b/src/test/java/io/kestra/plugin/gitlab/issues/CreateTest.java similarity index 97% rename from src/test/java/io/kestra/plugin/gitlab/CreateIssueTest.java rename to src/test/java/io/kestra/plugin/gitlab/issues/CreateTest.java index d819306..77142a9 100644 --- a/src/test/java/io/kestra/plugin/gitlab/CreateIssueTest.java +++ b/src/test/java/io/kestra/plugin/gitlab/issues/CreateTest.java @@ -1,9 +1,9 @@ -package io.kestra.plugin.gitlab; +package io.kestra.plugin.gitlab.issues; import io.kestra.core.models.property.Property; import io.kestra.core.runners.RunContext; import io.kestra.core.runners.RunContextFactory; -import io.kestra.plugin.gitlab.issues.Create; +import io.kestra.plugin.gitlab.WireMockTest; import jakarta.inject.Inject; import org.junit.jupiter.api.Test; @@ -13,7 +13,7 @@ import static org.hamcrest.Matchers.notNullValue; import static org.junit.jupiter.api.Assertions.assertThrows; -public class CreateIssueTest extends WireMockTest { +public class CreateTest extends WireMockTest { @Inject private RunContextFactory runContextFactory; diff --git a/src/test/java/io/kestra/plugin/gitlab/SearchIssuesTest.java b/src/test/java/io/kestra/plugin/gitlab/issues/SearchTest.java similarity index 96% rename from src/test/java/io/kestra/plugin/gitlab/SearchIssuesTest.java rename to src/test/java/io/kestra/plugin/gitlab/issues/SearchTest.java index 9fcabe2..3eee078 100644 --- a/src/test/java/io/kestra/plugin/gitlab/SearchIssuesTest.java +++ b/src/test/java/io/kestra/plugin/gitlab/issues/SearchTest.java @@ -1,11 +1,11 @@ -package io.kestra.plugin.gitlab; +package io.kestra.plugin.gitlab.issues; import com.fasterxml.jackson.databind.ObjectMapper; import io.kestra.core.models.property.Property; import io.kestra.core.runners.RunContext; import io.kestra.core.runners.RunContextFactory; -import io.kestra.plugin.gitlab.issues.Search; +import io.kestra.plugin.gitlab.WireMockTest; import jakarta.inject.Inject; import org.junit.jupiter.api.Test; @@ -15,7 +15,7 @@ import static org.hamcrest.Matchers.notNullValue; import static org.junit.jupiter.api.Assertions.assertThrows; -public class SearchIssuesTest extends WireMockTest { +public class SearchTest extends WireMockTest { @Inject private RunContextFactory runContextFactory; diff --git a/src/test/java/io/kestra/plugin/gitlab/MergeRequestTest.java b/src/test/java/io/kestra/plugin/gitlab/mergerequests/CreateTest.java similarity index 92% rename from src/test/java/io/kestra/plugin/gitlab/MergeRequestTest.java rename to src/test/java/io/kestra/plugin/gitlab/mergerequests/CreateTest.java index 7a5fa56..f684601 100644 --- a/src/test/java/io/kestra/plugin/gitlab/MergeRequestTest.java +++ b/src/test/java/io/kestra/plugin/gitlab/mergerequests/CreateTest.java @@ -1,9 +1,10 @@ -package io.kestra.plugin.gitlab; +package io.kestra.plugin.gitlab.mergerequests; import com.fasterxml.jackson.databind.ObjectMapper; import io.kestra.core.models.property.Property; import io.kestra.core.runners.RunContext; import io.kestra.core.runners.RunContextFactory; +import io.kestra.plugin.gitlab.WireMockTest; import jakarta.inject.Inject; import org.junit.jupiter.api.Test; @@ -13,7 +14,7 @@ import static org.hamcrest.Matchers.notNullValue; import static org.junit.jupiter.api.Assertions.assertThrows; -public class MergeRequestTest extends WireMockTest { +public class CreateTest extends WireMockTest { @Inject private RunContextFactory runContextFactory; @@ -30,7 +31,7 @@ void testCreateMergeRequest() throws Exception { RunContext runContext = runContextFactory.of(); - MergeRequest task = MergeRequest.builder() + Create task = Create.builder() .id("create-merge-request") .projectId(Property.ofValue("12345")) .token(Property.ofValue("test-token")) @@ -41,7 +42,7 @@ void testCreateMergeRequest() throws Exception { .targetBranch(Property.ofValue("main")) .build(); - MergeRequest.Output runOutput = task.run(runContext); + Create.Output runOutput = task.run(runContext); assertThat(runOutput.getMergeReqID(), is(notNullValue())); assertThat(runOutput.getWebUrl(), is(notNullValue())); @@ -55,7 +56,7 @@ void testCreateMergeRequestNotFound() { RunContext runContext = runContextFactory.of(); - MergeRequest task = MergeRequest.builder() + Create task = Create.builder() .id("create-merge-request") .projectId(Property.ofValue("54321")) .token(Property.ofValue("test-token")) @@ -73,7 +74,7 @@ void testCreateMergeRequestNotFound() { void testCreateMergeRequest_missingProjectId() throws Exception { RunContext runContext = runContextFactory.of(); - MergeRequest task = MergeRequest.builder() + Create task = Create.builder() .id("create-merge-request") .token(Property.ofValue("test-token")) .url(Property.ofValue(wireMock.baseUrl())) @@ -89,7 +90,7 @@ void testCreateMergeRequest_missingProjectId() throws Exception { void testCreateMergeRequest_missingToken() throws Exception { RunContext runContext = runContextFactory.of(); - MergeRequest task = MergeRequest.builder() + Create task = Create.builder() .id("create-merge-request") .projectId(Property.ofValue("12345")) .url(Property.ofValue(wireMock.baseUrl())) @@ -110,7 +111,7 @@ void testCreateMergeRequestWithEmptyRequiredFields() throws Exception { RunContext runContext = runContextFactory.of(); // Test with null title - should create MR but GitLab API will likely fail - MergeRequest task = MergeRequest.builder() + Create task = Create.builder() .id("create-merge-request") .projectId(Property.ofValue("12345")) .token(Property.ofValue("test-token")) @@ -136,7 +137,7 @@ void testCreateMergeRequestWithMinimalData() throws Exception { RunContext runContext = runContextFactory.of(); - MergeRequest task = MergeRequest.builder() + Create task = Create.builder() .id("create-merge-request") .projectId(Property.ofValue("12345")) .token(Property.ofValue("test-token")) @@ -146,7 +147,7 @@ void testCreateMergeRequestWithMinimalData() throws Exception { .targetBranch(Property.ofValue("main")) .build(); - MergeRequest.Output runOutput = task.run(runContext); + Create.Output runOutput = task.run(runContext); assertThat(runOutput.getMergeReqID(), is("2")); assertThat(runOutput.getWebUrl(), is("https://gitlab.example.com/test/merge_requests/2")); @@ -164,7 +165,7 @@ void testCreateMergeRequestBadRequest() { RunContext runContext = runContextFactory.of(); - MergeRequest task = MergeRequest.builder() + Create task = Create.builder() .id("create-merge-request") .projectId(Property.ofValue("12345")) .token(Property.ofValue("test-token"))