aboutsummaryrefslogtreecommitdiff
path: root/vendor/github.com/xanzy/go-gitlab/deployments.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/xanzy/go-gitlab/deployments.go')
-rw-r--r--vendor/github.com/xanzy/go-gitlab/deployments.go121
1 files changed, 121 insertions, 0 deletions
diff --git a/vendor/github.com/xanzy/go-gitlab/deployments.go b/vendor/github.com/xanzy/go-gitlab/deployments.go
new file mode 100644
index 0000000..a648605
--- /dev/null
+++ b/vendor/github.com/xanzy/go-gitlab/deployments.go
@@ -0,0 +1,121 @@
+//
+// Copyright 2018, Sander van Harmelen
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package gitlab
+
+import (
+ "fmt"
+ "net/url"
+ "time"
+)
+
+// DeploymentsService handles communication with the deployment related methods
+// of the GitLab API.
+//
+// GitLab API docs: https://docs.gitlab.com/ce/api/deployments.html
+type DeploymentsService struct {
+ client *Client
+}
+
+// Deployment represents the Gitlab deployment
+type Deployment struct {
+ ID int `json:"id"`
+ IID int `json:"iid"`
+ Ref string `json:"ref"`
+ Sha string `json:"sha"`
+ CreatedAt *time.Time `json:"created_at"`
+ User *ProjectUser `json:"user"`
+ Environment *Environment `json:"environment"`
+ Deployable struct {
+ ID int `json:"id"`
+ Status string `json:"status"`
+ Stage string `json:"stage"`
+ Name string `json:"name"`
+ Ref string `json:"ref"`
+ Tag bool `json:"tag"`
+ Coverage float64 `json:"coverage"`
+ CreatedAt *time.Time `json:"created_at"`
+ StartedAt *time.Time `json:"started_at"`
+ FinishedAt *time.Time `json:"finished_at"`
+ Duration float64 `json:"duration"`
+ User *User `json:"user"`
+ Commit *Commit `json:"commit"`
+ Pipeline struct {
+ ID int `json:"id"`
+ Sha string `json:"sha"`
+ Ref string `json:"ref"`
+ Status string `json:"status"`
+ } `json:"pipeline"`
+ Runner *Runner `json:"runner"`
+ } `json:"deployable"`
+}
+
+// ListProjectDeploymentsOptions represents the available ListProjectDeployments() options.
+//
+// GitLab API docs:
+// https://docs.gitlab.com/ce/api/deployments.html#list-project-deployments
+type ListProjectDeploymentsOptions struct {
+ ListOptions
+ OrderBy *OrderByValue `url:"order_by,omitempty" json:"order_by,omitempty"`
+ Sort *string `url:"sort,omitempty" json:"sort,omitempty"`
+}
+
+// ListProjectDeployments gets a list of deployments in a project.
+//
+// GitLab API docs: https://docs.gitlab.com/ce/api/deployments.html#list-project-deployments
+func (s *DeploymentsService) ListProjectDeployments(pid interface{}, opts *ListProjectDeploymentsOptions, options ...OptionFunc) ([]*Deployment, *Response, error) {
+ project, err := parseID(pid)
+ if err != nil {
+ return nil, nil, err
+ }
+ u := fmt.Sprintf("projects/%s/deployments", url.QueryEscape(project))
+
+ req, err := s.client.NewRequest("GET", u, opts, options)
+ if err != nil {
+ return nil, nil, err
+ }
+
+ var ds []*Deployment
+ resp, err := s.client.Do(req, &ds)
+ if err != nil {
+ return nil, resp, err
+ }
+
+ return ds, resp, err
+}
+
+// GetProjectDeployment get a deployment for a project.
+//
+// GitLab API docs: https://docs.gitlab.com/ce/api/deployments.html#get-a-specific-deployment
+func (s *DeploymentsService) GetProjectDeployment(pid interface{}, deployment int, options ...OptionFunc) (*Deployment, *Response, error) {
+ project, err := parseID(pid)
+ if err != nil {
+ return nil, nil, err
+ }
+ u := fmt.Sprintf("projects/%s/deployments/%d", url.QueryEscape(project), deployment)
+
+ req, err := s.client.NewRequest("GET", u, nil, options)
+ if err != nil {
+ return nil, nil, err
+ }
+
+ d := new(Deployment)
+ resp, err := s.client.Do(req, d)
+ if err != nil {
+ return nil, resp, err
+ }
+
+ return d, resp, err
+}