Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2472,7 +2472,7 @@ response, err := pipelinesManager.GetPipelineRunStatusByBranch(branch, pipeline)
```go
branch := "master"
pipeline := "pipeline_name"
status, err := pipelinesManager.TriggerPipelineRun(branch, pipeline)
triggerId, err := pipelinesManager.TriggerPipelineRun(branch, pipeline)
```

#### Trigger Pipeline Sync
Expand Down
2 changes: 1 addition & 1 deletion pipelines/manager.go
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,7 @@ func (sm *PipelinesServicesManager) GetPipelineRunStatusByBranch(branch, pipelin
return runService.GetRunStatus(branch, pipeline, isMultiBranch)
}

func (sm *PipelinesServicesManager) TriggerPipelineRun(branch, pipeline string, isMultiBranch bool) error {
func (sm *PipelinesServicesManager) TriggerPipelineRun(branch, pipeline string, isMultiBranch bool) (int, error) {
runService := services.NewRunService(sm.client)
runService.ServiceDetails = sm.config.GetServiceDetails()
return runService.TriggerPipelineRun(branch, pipeline, isMultiBranch)
Expand Down
29 changes: 20 additions & 9 deletions pipelines/services/run.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,22 +4,27 @@ import (
"bytes"
"encoding/json"
"fmt"
"net/http"
"strconv"
"strings"

"github.com/jfrog/jfrog-client-go/artifactory/services/utils"
"github.com/jfrog/jfrog-client-go/auth"
"github.com/jfrog/jfrog-client-go/http/jfroghttpclient"
"github.com/jfrog/jfrog-client-go/utils/errorutils"
"github.com/jfrog/jfrog-client-go/utils/io/httputils"
"github.com/jfrog/jfrog-client-go/utils/log"
"net/http"
"strconv"
"strings"
)

type RunService struct {
client *jfroghttpclient.JfrogHttpClient
auth.ServiceDetails
}

type triggerRunResponse struct {
TriggerID int `json:"triggerID"`
}

func NewRunService(client *jfroghttpclient.JfrogHttpClient) *RunService {
return &RunService{client: client}
}
Expand Down Expand Up @@ -70,7 +75,7 @@ func (rs *RunService) getHttpDetails() httputils.HttpClientDetails {
return rs.ServiceDetails.CreateHttpClientDetails()
}

func (rs *RunService) TriggerPipelineRun(branch, pipeline string, isMultiBranch bool) error {
func (rs *RunService) TriggerPipelineRun(branch, pipeline string, isMultiBranch bool) (int, error) {
httpDetails := rs.getHttpDetails()
queryParams := make(map[string]string, 0)

Expand All @@ -89,29 +94,35 @@ func (rs *RunService) TriggerPipelineRun(branch, pipeline string, isMultiBranch
buf := new(bytes.Buffer)
_, err := buf.ReadFrom(payload)
if err != nil {
return errorutils.CheckError(err)
return 0, errorutils.CheckError(err)
}

// URL Construction
utils.AddHeader("Content-Type", "application/json", &httpDetails.Headers)
uri, err := constructPipelinesURL(queryParams, rs.ServiceDetails.GetUrl(), triggerpipeline)
if err != nil {
return err
return 0, err
}

// Prepare Request
resp, body, err := rs.client.SendPost(uri, buf.Bytes(), &httpDetails)
if err != nil {
return err
return 0, err
}

// Response Analysis
if err := errorutils.CheckResponseStatusWithBody(resp, body, http.StatusOK); err != nil {
return err
return 0, err
}
log.Info(fmt.Sprintf("Triggered successfully\n%s %s \n%14s %s", "PipelineName :", pipeline, "Branch :", branch))

return nil
var triggerID triggerRunResponse

if err := json.Unmarshal(body, &triggerID); err != nil {
return 0, err
}

return triggerID.TriggerID, nil
}

func (rs *RunService) CancelRun(runID int) error {
Expand Down
9 changes: 5 additions & 4 deletions tests/pipelinesrun_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,14 @@ package tests

import (
"fmt"
"strings"
"testing"
"time"

pipelinesServices "github.com/jfrog/jfrog-client-go/pipelines/services"
"github.com/jfrog/jfrog-client-go/utils/io/httputils"
"github.com/jfrog/jfrog-client-go/utils/log"
"github.com/stretchr/testify/assert"
"strings"
"testing"
"time"
)

func TestPipelinesRunService(t *testing.T) {
Expand Down Expand Up @@ -94,7 +95,7 @@ func testGetRunStatus(t *testing.T) {

assert.NoError(t, resourceErr)
pipelineName := "pipelines_run_int_test"
trigErr := testPipelinesRunService.TriggerPipelineRun(*PipelinesVcsBranch, pipelineName, *res.IsMultiBranch)
_, trigErr := testPipelinesRunService.TriggerPipelineRun(*PipelinesVcsBranch, pipelineName, *res.IsMultiBranch)
assert.NoError(t, trigErr)

pollGetRunStatus(t, pipelineName)
Expand Down