Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
G
go-gitlab
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
go
go-gitlab
Commits
3ec30a65
Commit
3ec30a65
authored
Oct 20, 2017
by
Sander van Harmelen
Committed by
GitHub
Oct 20, 2017
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #228 from bearstech/environments_service
add environments support
parents
b54e5b9d
b70b0e80
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
171 additions
and
0 deletions
+171
-0
README.md
README.md
+1
-0
environments.go
environments.go
+168
-0
gitlab.go
gitlab.go
+2
-0
No files found.
README.md
View file @
3ec30a65
...
...
@@ -38,6 +38,7 @@ includes all calls to the following services:
-
[
x
]
Pipelines
-
[
x
]
Version
-
[
x
]
Wikis
-
[
x
]
Environments
## Usage
...
...
environments.go
0 → 100644
View file @
3ec30a65
//
// Copyright 2017, 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"
)
// EnvironmentsService handles communication with the environment related methods
// of the GitLab API.
//
// GitLab API docs: https://docs.gitlab.com/ce/api/environments.html
type
EnvironmentsService
struct
{
client
*
Client
}
// Environment represents a GitLab environment.
//
// GitLab API docs: https://docs.gitlab.com/ce/api/environments.html
type
Environment
struct
{
ID
int
`json:"id"`
Name
string
`json:"name"`
Slug
string
`json:"slug"`
ExternalUrl
string
`json:"external_url"`
}
func
(
b
Environment
)
String
()
string
{
return
Stringify
(
b
)
}
// ListEnvironmentsOptions represents the available ListEnvironments() options.
//
// GitLab API docs:
// https://docs.gitlab.com/ee/api/environments.html#list-environments
type
ListEnvironmentsOptions
struct
{
ListOptions
}
// ListEnvironments gets a list of environments from a project, sorted by name
// alphabetically.
//
// GitLab API docs:
// https://docs.gitlab.com/ee/api/environments.html#list-environments
func
(
s
*
EnvironmentsService
)
ListEnvironments
(
pid
interface
{},
opts
*
ListEnvironmentsOptions
,
options
...
OptionFunc
)
([]
*
Environment
,
*
Response
,
error
)
{
project
,
err
:=
parseID
(
pid
)
if
err
!=
nil
{
return
nil
,
nil
,
err
}
u
:=
fmt
.
Sprintf
(
"projects/%s/environments"
,
url
.
QueryEscape
(
project
))
req
,
err
:=
s
.
client
.
NewRequest
(
"GET"
,
u
,
opts
,
options
)
if
err
!=
nil
{
return
nil
,
nil
,
err
}
var
b
[]
*
Environment
resp
,
err
:=
s
.
client
.
Do
(
req
,
&
b
)
if
err
!=
nil
{
return
nil
,
resp
,
err
}
return
b
,
resp
,
err
}
// CreateEnvironmentOptions represents the available CreateEnvironment() options.
//
// GitLab API docs:
// https://docs.gitlab.com/ee/api/environments.html#create-a-new-environment
type
CreateEnvironmentOptions
struct
{
Name
*
string
`url:"name,omitempty" json:"name,omitempty"`
ExternalUrl
*
string
`url:"external_url,omitempty" json:"external_url,omitempty"`
}
// CreateEnvironment adds a environment to a project. This is an idempotent
// method and can be called multiple times with the same parameters. Createing
// an environment that is already a environment does not affect the
// existing environmentship.
//
// GitLab API docs:
// https://docs.gitlab.com/ee/api/environments.html#create-a-new-environment
func
(
s
*
EnvironmentsService
)
CreateEnvironment
(
pid
interface
{},
opt
*
CreateEnvironmentOptions
,
options
...
OptionFunc
)
(
*
Environment
,
*
Response
,
error
)
{
project
,
err
:=
parseID
(
pid
)
if
err
!=
nil
{
return
nil
,
nil
,
err
}
u
:=
fmt
.
Sprintf
(
"projects/%s/environments"
,
url
.
QueryEscape
(
project
))
req
,
err
:=
s
.
client
.
NewRequest
(
"POST"
,
u
,
opt
,
options
)
if
err
!=
nil
{
return
nil
,
nil
,
err
}
pm
:=
new
(
Environment
)
resp
,
err
:=
s
.
client
.
Do
(
req
,
pm
)
if
err
!=
nil
{
return
nil
,
resp
,
err
}
return
pm
,
resp
,
err
}
// EditEnvironmentOptions represents the available EditEnvironment() options.
//
// GitLab API docs:
// https://docs.gitlab.com/ee/api/environments.html#edit-an-existing-environment
type
EditEnvironmentOptions
struct
{
Name
*
string
`url:"name,omitempty" json:"name,omitempty"`
ExternalUrl
*
string
`url:"external_url,omitempty" json:"external_url,omitempty"`
}
// EditEnvironment updates a project team environment to a specified access level..
//
// GitLab API docs:
// https://docs.gitlab.com/ee/api/environments.html#edit-an-existing-environment
func
(
s
*
EnvironmentsService
)
EditEnvironment
(
pid
interface
{},
environment
int
,
opt
*
EditEnvironmentOptions
,
options
...
OptionFunc
)
(
*
Environment
,
*
Response
,
error
)
{
project
,
err
:=
parseID
(
pid
)
if
err
!=
nil
{
return
nil
,
nil
,
err
}
u
:=
fmt
.
Sprintf
(
"projects/%s/environments/%d"
,
url
.
QueryEscape
(
project
),
environment
)
req
,
err
:=
s
.
client
.
NewRequest
(
"PUT"
,
u
,
opt
,
options
)
if
err
!=
nil
{
return
nil
,
nil
,
err
}
pm
:=
new
(
Environment
)
resp
,
err
:=
s
.
client
.
Do
(
req
,
pm
)
if
err
!=
nil
{
return
nil
,
resp
,
err
}
return
pm
,
resp
,
err
}
// DeleteEnvironment removes a environment from a project team.
//
// GitLab API docs:
// https://docs.gitlab.com/ce/api/environments.html#remove-a-environment-from-a-group-or-project
func
(
s
*
EnvironmentsService
)
DeleteEnvironment
(
pid
interface
{},
environment
int
,
options
...
OptionFunc
)
(
*
Response
,
error
)
{
project
,
err
:=
parseID
(
pid
)
if
err
!=
nil
{
return
nil
,
err
}
u
:=
fmt
.
Sprintf
(
"projects/%s/environments/%d"
,
url
.
QueryEscape
(
project
),
environment
)
req
,
err
:=
s
.
client
.
NewRequest
(
"DELETE"
,
u
,
nil
,
options
)
if
err
!=
nil
{
return
nil
,
err
}
return
s
.
client
.
Do
(
req
,
nil
)
}
gitlab.go
View file @
3ec30a65
...
...
@@ -165,6 +165,7 @@ type Client struct {
BuildVariables
*
BuildVariablesService
Commits
*
CommitsService
DeployKeys
*
DeployKeysService
Environments
*
EnvironmentsService
Features
*
FeaturesService
Groups
*
GroupsService
Issues
*
IssuesService
...
...
@@ -236,6 +237,7 @@ func newClient(httpClient *http.Client, tokenType tokenType, token string) *Clie
c
.
BuildVariables
=
&
BuildVariablesService
{
client
:
c
}
c
.
Commits
=
&
CommitsService
{
client
:
c
}
c
.
DeployKeys
=
&
DeployKeysService
{
client
:
c
}
c
.
Environments
=
&
EnvironmentsService
{
client
:
c
}
c
.
Features
=
&
FeaturesService
{
client
:
c
}
c
.
Groups
=
&
GroupsService
{
client
:
c
}
c
.
Issues
=
&
IssuesService
{
client
:
c
,
timeStats
:
timeStats
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment