Unverified Commit 5a20858e authored by Ruben's avatar Ruben Committed by GitHub
Browse files

feat: add method for "run a scheduled pipeline immediately" (#914)



* feat(scheduled-pipeline): makes scheduled pipelines runnable

* Update src/main/java/org/gitlab4j/api/PipelineApi.java

Co-authored-by: default avatarJérémie Bresson <dev@jmini.fr>

* fix(scheduled-pipeline): change post()-call

* Update src/main/java/org/gitlab4j/api/PipelineApi.java

Co-authored-by: default avatarJérémie Bresson <dev@jmini.fr>

* Add missing import

---------

Co-authored-by: default avatarJérémie Bresson <dev@jmini.fr>
Co-authored-by: default avatarJeremie Bresson <jeremie.bresson@unblu.com>
Co-authored-by: default avatarRuben Vitt <dev@rubeen.one>
parent 49e2f3f2
...@@ -5,6 +5,7 @@ import java.util.Map; ...@@ -5,6 +5,7 @@ import java.util.Map;
import java.util.Optional; import java.util.Optional;
import java.util.stream.Stream; import java.util.stream.Stream;
import javax.ws.rs.core.Form;
import javax.ws.rs.core.GenericType; import javax.ws.rs.core.GenericType;
import javax.ws.rs.core.Response; import javax.ws.rs.core.Response;
...@@ -546,6 +547,19 @@ public class PipelineApi extends AbstractApi implements Constants { ...@@ -546,6 +547,19 @@ public class PipelineApi extends AbstractApi implements Constants {
return (response.readEntity(PipelineSchedule.class)); return (response.readEntity(PipelineSchedule.class));
} }
/**
* Trigger a new scheduled pipeline, which runs immediately.
*
* <pre><code>POST /projects/:id/pipeline_schedules/:pipeline_schedule_id/play</code></pre>
*
* @param projectIdOrPath projectIdOrPath the project in the form of an Long(ID), String(path), or Project instance, required
* @param pipelineScheduleId the pipelineSchedule instance id which should run immediately
* @throws GitLabApiException if any exception occurs during execution
*/
public void playPipelineSchedule(Object projectIdOrPath, Long pipelineScheduleId) throws GitLabApiException {
post(Response.Status.CREATED, (Form)null, "projects", getProjectIdOrPath(projectIdOrPath), "pipeline_schedules", pipelineScheduleId, "play");
}
/** /**
* Create a pipeline schedule variable. * Create a pipeline schedule variable.
* *
......
...@@ -146,6 +146,26 @@ public class TestPipelineApi extends AbstractIntegrationTest { ...@@ -146,6 +146,26 @@ public class TestPipelineApi extends AbstractIntegrationTest {
assertTrue(scheduleDecriptions.contains(newScheduleDescription)); assertTrue(scheduleDecriptions.contains(newScheduleDescription));
} }
@Test
void testPlayScheduledPipeline() throws GitLabApiException {
assertNotNull(testProject);
String scheduleDescription = SCHEDULE_DESCRIPTION + " - test playScheduledPipeline()";
PipelineSchedule newPipelineSchedule = new PipelineSchedule();
newPipelineSchedule.setDescription(scheduleDescription);
newPipelineSchedule.setCron("3 4 * * *");
newPipelineSchedule.setRef("master");
PipelineSchedule createdPipelineSchedule = gitLabApi.getPipelineApi().createPipelineSchedule(testProject, newPipelineSchedule);
assertNotNull(createdPipelineSchedule);
// Make sure the created schedule is present before playing
List<PipelineSchedule> pipelineSchedules = gitLabApi.getPipelineApi().getPipelineSchedules(testProject);
assertNotNull(pipelineSchedules);
assertTrue(pipelineSchedules.stream().map(PipelineSchedule::getDescription).collect(toList()).contains(scheduleDescription));
gitLabApi.getPipelineApi().playPipelineSchedule(testProject, createdPipelineSchedule.getId());
}
@Test @Test
public void testDeleteProjectPipeLineSchedule() throws GitLabApiException { public void testDeleteProjectPipeLineSchedule() throws GitLabApiException {
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment