Skip to content

Commit

Permalink
Support for bridges in pipeline API (#1069)
Browse files Browse the repository at this point in the history
---------
Co-authored-by: Salamon <[email protected]>
  • Loading branch information
Salomon88 authored Dec 11, 2023
1 parent 793146e commit 6d5edeb
Show file tree
Hide file tree
Showing 7 changed files with 374 additions and 5 deletions.
31 changes: 31 additions & 0 deletions src/main/java/org/gitlab4j/api/PipelineApi.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import javax.ws.rs.core.GenericType;
import javax.ws.rs.core.Response;

import org.gitlab4j.api.models.Bridge;
import org.gitlab4j.api.models.Pipeline;
import org.gitlab4j.api.models.PipelineFilter;
import org.gitlab4j.api.models.PipelineSchedule;
Expand Down Expand Up @@ -856,4 +857,34 @@ public Pager<Variable> getPipelineVariables(Object projectIdOrPath, Long pipelin
public Stream<Variable> getPipelineVariablesStream(Object projectIdOrPath, Long pipelineId) throws GitLabApiException {
return (getPipelineVariables(projectIdOrPath, pipelineId, getDefaultPerPage()).stream());
}

/**
* Get a Pager of bridges in a pipeline.
*
* <pre><code>GitLab Endpoint: GET /projects/:id/pipelines/:pipeline_id/bridges </code></pre>
*
* @param projectIdOrPath id, path of the project, or a Project instance holding the project ID or path to get the pipelines for
* @param pipelineId the pipeline ID to get the list of bridges for
* @param itemsPerPage the number of Bridge instances that will be fetched per page
* @return a list containing the bridges for the specified project ID and pipeline ID
* @throws GitLabApiException if any exception occurs during execution
*/
public Pager<Bridge> getBridgesForPipeline(Object projectIdOrPath, long pipelineId, int itemsPerPage, JobScope scope) throws GitLabApiException {
return (new Pager<>(this, Bridge.class, itemsPerPage, getDefaultPerPageParam(),
"projects", getProjectIdOrPath(projectIdOrPath), "pipelines", pipelineId, "bridges", scope));
}

/**
* Get a Stream of bridges in a pipeline.
* <pre><code>GitLab Endpoint: GET /projects/:id/pipelines/:pipeline_id/bridges</code></pre>
*
* @param projectIdOrPath id, path of the project, or a Project instance holding the project ID or path
* @param pipelineId the pipeline ID to get the list of bridges for
* @return a Stream containing the bridges for the specified project ID
* @throws GitLabApiException if any exception occurs during execution
*/
public Stream<Bridge> getBridgesStream(Object projectIdOrPath, long pipelineId, JobScope scope) throws GitLabApiException {
return (getBridgesForPipeline(projectIdOrPath, pipelineId, getDefaultPerPage(), scope).stream());
}

}
185 changes: 185 additions & 0 deletions src/main/java/org/gitlab4j/api/models/Bridge.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,185 @@
package org.gitlab4j.api.models;

import org.gitlab4j.api.utils.JacksonJson;

import java.util.Date;

public class Bridge {
private Commit commit;
private boolean allowFailure;
private Date createdAt;
private Date startedAt;
private Date finishedAt;
private Date erasedAt;
private Double duration;
private Double queuedDuration;
private int id;
private String name;
private String coverage;
private Pipeline pipeline;
private String ref;
private String stage;
private String status;
private boolean tag;
private String webUrl;
private User user;
private DownstreamPipeline downstreamPipeline;

public Commit getCommit() {
return commit;
}

public void setCommit(Commit commit) {
this.commit = commit;
}

public boolean isAllowFailure() {
return allowFailure;
}

public void setAllowFailure(boolean allowFailure) {
this.allowFailure = allowFailure;
}

public Date getCreatedAt() {
return createdAt;
}

public void setCreatedAt(Date createdAt) {
this.createdAt = createdAt;
}

public Date getStartedAt() {
return startedAt;
}

public void setStartedAt(Date startedAt) {
this.startedAt = startedAt;
}

public Date getFinishedAt() {
return finishedAt;
}

public void setFinishedAt(Date finishedAt) {
this.finishedAt = finishedAt;
}

public Date getErasedAt() {
return erasedAt;
}

public void setErasedAt(Date erasedAt) {
this.erasedAt = erasedAt;
}

public Double getDuration() {
return duration;
}

public void setDuration(Double duration) {
this.duration = duration;
}

public Double getQueuedDuration() {
return queuedDuration;
}

public void setQueuedDuration(Double queuedDuration) {
this.queuedDuration = queuedDuration;
}

public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getCoverage() {
return coverage;
}

public void setCoverage(String coverage) {
this.coverage = coverage;
}

public Pipeline getPipeline() {
return pipeline;
}

public void setPipeline(Pipeline pipeline) {
this.pipeline = pipeline;
}

public String getRef() {
return ref;
}

public void setRef(String ref) {
this.ref = ref;
}

public String getStage() {
return stage;
}

public void setStage(String stage) {
this.stage = stage;
}

public String getStatus() {
return status;
}

public void setStatus(String status) {
this.status = status;
}

public boolean isTag() {
return tag;
}

public void setTag(boolean tag) {
this.tag = tag;
}

public String getWebUrl() {
return webUrl;
}

public void setWebUrl(String webUrl) {
this.webUrl = webUrl;
}

public User getUser() {
return user;
}

public void setUser(User user) {
this.user = user;
}

public DownstreamPipeline getDownstreamPipeline() {
return downstreamPipeline;
}

public void setDownstreamPipeline(DownstreamPipeline downstreamPipeline) {
this.downstreamPipeline = downstreamPipeline;
}

@Override
public String toString() {
return (JacksonJson.toJsonString(this));
}

}
76 changes: 76 additions & 0 deletions src/main/java/org/gitlab4j/api/models/DownstreamPipeline.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
package org.gitlab4j.api.models;

import org.gitlab4j.api.utils.JacksonJson;

import java.util.Date;

public class DownstreamPipeline {
private int id;
private String sha;
private String ref;
private String status;
private Date createdAt;
private Date updatedAt;
private String webUrl;

public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}

public String getSha() {
return sha;
}

public void setSha(String sha) {
this.sha = sha;
}

public String getRef() {
return ref;
}

public void setRef(String ref) {
this.ref = ref;
}

public String getStatus() {
return status;
}

public void setStatus(String status) {
this.status = status;
}

public Date getCreatedAt() {
return createdAt;
}

public void setCreatedAt(Date createdAt) {
this.createdAt = createdAt;
}

public Date getUpdatedAt() {
return updatedAt;
}

public void setUpdatedAt(Date updatedAt) {
this.updatedAt = updatedAt;
}

public String getWebUrl() {
return webUrl;
}

public void setWebUrl(String webUrl) {
this.webUrl = webUrl;
}

@Override
public String toString() {
return (JacksonJson.toJsonString(this));
}
}
7 changes: 7 additions & 0 deletions src/test/java/org/gitlab4j/api/TestGitLabApiBeans.java
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@
import org.gitlab4j.api.models.Blame;
import org.gitlab4j.api.models.Board;
import org.gitlab4j.api.models.Branch;
import org.gitlab4j.api.models.Bridge;
import org.gitlab4j.api.models.ChildEpic;
import org.gitlab4j.api.models.GitLabCiTemplate;
import org.gitlab4j.api.models.GitLabCiTemplateElement;
Expand Down Expand Up @@ -497,6 +498,12 @@ public void testJob() throws Exception {
assertTrue(compareJson(job, "job.json"));
}

@Test
public void testBridge() throws Exception {
Bridge bridge = unmarshalResource(Bridge.class, "bridge.json");
assertTrue(compareJson(bridge, "bridge.json"));
}

@Test
public void testDeployKeys() throws Exception {
List<DeployKey> deployKeys = unmarshalResourceList(DeployKey.class, "deploy-keys.json");
Expand Down
3 changes: 3 additions & 0 deletions src/test/java/org/gitlab4j/api/TestJobApi.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,10 @@
import static org.junit.jupiter.api.Assumptions.assumeTrue;

import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;

import org.gitlab4j.api.models.Bridge;
import org.gitlab4j.api.models.Job;
import org.gitlab4j.api.models.Project;
import org.junit.jupiter.api.AfterAll;
Expand Down
17 changes: 12 additions & 5 deletions src/test/java/org/gitlab4j/api/TestPipelineApi.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,19 +12,18 @@
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;

import org.gitlab4j.api.models.Bridge;
import org.gitlab4j.api.models.Pipeline;
import org.gitlab4j.api.models.PipelineSchedule;
import org.gitlab4j.api.models.Project;
import org.gitlab4j.api.models.RepositoryFile;
import org.gitlab4j.api.models.Trigger;
import org.gitlab4j.api.models.Variable;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.*;
import org.junit.jupiter.api.extension.ExtendWith;

@Tag("integration")
Expand Down Expand Up @@ -350,4 +349,12 @@ public void testPipelineVariables() throws GitLabApiException {
gitLabApi.getPipelineApi().deletePipeline(testProject, pipeline.getId());
}
}

@Test
@Disabled("disable till 'Move the test infrastructure to Testcontainers #925'")
public void testGetBridges() throws GitLabApiException {
Set<Bridge> bridges = gitLabApi.getPipelineApi().getBridgesStream(testProject, 4L, Constants.JobScope.SUCCESS).collect(Collectors.toSet());
assertNotNull(bridges);
}

}
Loading

0 comments on commit 6d5edeb

Please sign in to comment.