gitlab-akerl 4.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +20 -0
- data/.prospectus +11 -0
- data/.travis.yml +8 -0
- data/CHANGELOG.md +229 -0
- data/CONTRIBUTING.md +195 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +24 -0
- data/README.md +192 -0
- data/Rakefile +9 -0
- data/bin/console +10 -0
- data/bin/setup +6 -0
- data/exe/gitlab +7 -0
- data/gitlab-akerl.gemspec +31 -0
- data/lib/gitlab.rb +45 -0
- data/lib/gitlab/api.rb +19 -0
- data/lib/gitlab/cli.rb +89 -0
- data/lib/gitlab/cli_helpers.rb +241 -0
- data/lib/gitlab/client.rb +48 -0
- data/lib/gitlab/client/branches.rb +91 -0
- data/lib/gitlab/client/build_triggers.rb +51 -0
- data/lib/gitlab/client/build_variables.rb +66 -0
- data/lib/gitlab/client/builds.rb +106 -0
- data/lib/gitlab/client/commits.rb +121 -0
- data/lib/gitlab/client/groups.rb +144 -0
- data/lib/gitlab/client/issues.rb +113 -0
- data/lib/gitlab/client/labels.rb +57 -0
- data/lib/gitlab/client/merge_requests.rb +168 -0
- data/lib/gitlab/client/milestones.rb +78 -0
- data/lib/gitlab/client/namespaces.rb +20 -0
- data/lib/gitlab/client/notes.rb +161 -0
- data/lib/gitlab/client/pipelines.rb +68 -0
- data/lib/gitlab/client/projects.rb +471 -0
- data/lib/gitlab/client/repositories.rb +78 -0
- data/lib/gitlab/client/repository_files.rb +88 -0
- data/lib/gitlab/client/runners.rb +115 -0
- data/lib/gitlab/client/services.rb +50 -0
- data/lib/gitlab/client/snippets.rb +91 -0
- data/lib/gitlab/client/system_hooks.rb +59 -0
- data/lib/gitlab/client/tags.rb +96 -0
- data/lib/gitlab/client/users.rb +250 -0
- data/lib/gitlab/configuration.rb +55 -0
- data/lib/gitlab/error.rb +85 -0
- data/lib/gitlab/file_response.rb +46 -0
- data/lib/gitlab/help.rb +95 -0
- data/lib/gitlab/objectified_hash.rb +34 -0
- data/lib/gitlab/page_links.rb +33 -0
- data/lib/gitlab/paginated_response.rb +97 -0
- data/lib/gitlab/request.rb +117 -0
- data/lib/gitlab/shell.rb +84 -0
- data/lib/gitlab/shell_history.rb +59 -0
- data/lib/gitlab/version.rb +3 -0
- data/spec/fixtures/branch.json +1 -0
- data/spec/fixtures/branch_delete.json +3 -0
- data/spec/fixtures/branches.json +1 -0
- data/spec/fixtures/build.json +38 -0
- data/spec/fixtures/build_artifacts.json +0 -0
- data/spec/fixtures/build_cancel.json +24 -0
- data/spec/fixtures/build_erase.json +24 -0
- data/spec/fixtures/build_retry.json +24 -0
- data/spec/fixtures/builds.json +78 -0
- data/spec/fixtures/builds_commits.json +64 -0
- data/spec/fixtures/compare_merge_request_diff.json +31 -0
- data/spec/fixtures/error_already_exists.json +1 -0
- data/spec/fixtures/error_project_not_found.json +1 -0
- data/spec/fixtures/get_repository_file.json +1 -0
- data/spec/fixtures/git_hook.json +1 -0
- data/spec/fixtures/group.json +60 -0
- data/spec/fixtures/group_create.json +1 -0
- data/spec/fixtures/group_create_with_description.json +1 -0
- data/spec/fixtures/group_delete.json +1 -0
- data/spec/fixtures/group_member.json +1 -0
- data/spec/fixtures/group_member_delete.json +1 -0
- data/spec/fixtures/group_member_edit.json +1 -0
- data/spec/fixtures/group_members.json +1 -0
- data/spec/fixtures/group_projects.json +44 -0
- data/spec/fixtures/group_search.json +2 -0
- data/spec/fixtures/groups.json +2 -0
- data/spec/fixtures/issue.json +1 -0
- data/spec/fixtures/issues.json +1 -0
- data/spec/fixtures/key.json +1 -0
- data/spec/fixtures/keys.json +1 -0
- data/spec/fixtures/label.json +1 -0
- data/spec/fixtures/labels.json +1 -0
- data/spec/fixtures/merge_request.json +1 -0
- data/spec/fixtures/merge_request_changes.json +1 -0
- data/spec/fixtures/merge_request_comment.json +1 -0
- data/spec/fixtures/merge_request_comments.json +1 -0
- data/spec/fixtures/merge_request_commits.json +1 -0
- data/spec/fixtures/merge_requests.json +1 -0
- data/spec/fixtures/milestone.json +1 -0
- data/spec/fixtures/milestone_issues.json +1 -0
- data/spec/fixtures/milestones.json +1 -0
- data/spec/fixtures/namespaces.json +1 -0
- data/spec/fixtures/note.json +1 -0
- data/spec/fixtures/notes.json +1 -0
- data/spec/fixtures/pipeline.json +23 -0
- data/spec/fixtures/pipeline_cancel.json +23 -0
- data/spec/fixtures/pipeline_create.json +23 -0
- data/spec/fixtures/pipeline_retry.json +23 -0
- data/spec/fixtures/pipelines.json +48 -0
- data/spec/fixtures/project.json +1 -0
- data/spec/fixtures/project_commit.json +13 -0
- data/spec/fixtures/project_commit_comment.json +1 -0
- data/spec/fixtures/project_commit_comments.json +1 -0
- data/spec/fixtures/project_commit_diff.json +10 -0
- data/spec/fixtures/project_commit_status.json +42 -0
- data/spec/fixtures/project_commits.json +1 -0
- data/spec/fixtures/project_edit.json +21 -0
- data/spec/fixtures/project_events.json +1 -0
- data/spec/fixtures/project_for_user.json +1 -0
- data/spec/fixtures/project_fork.json +50 -0
- data/spec/fixtures/project_fork_link.json +1 -0
- data/spec/fixtures/project_forked_for_user.json +50 -0
- data/spec/fixtures/project_hook.json +1 -0
- data/spec/fixtures/project_hooks.json +1 -0
- data/spec/fixtures/project_issues.json +1 -0
- data/spec/fixtures/project_key.json +6 -0
- data/spec/fixtures/project_keys.json +6 -0
- data/spec/fixtures/project_runner_enable.json +7 -0
- data/spec/fixtures/project_runners.json +16 -0
- data/spec/fixtures/project_search.json +1 -0
- data/spec/fixtures/project_star.json +44 -0
- data/spec/fixtures/project_tag_annotated.json +1 -0
- data/spec/fixtures/project_tag_lightweight.json +1 -0
- data/spec/fixtures/project_tags.json +1 -0
- data/spec/fixtures/project_unstar.json +44 -0
- data/spec/fixtures/project_update_commit_status.json +20 -0
- data/spec/fixtures/projects.json +1 -0
- data/spec/fixtures/raw_file.json +2 -0
- data/spec/fixtures/release_create.json +1 -0
- data/spec/fixtures/release_update.json +1 -0
- data/spec/fixtures/repository_file.json +1 -0
- data/spec/fixtures/runner.json +26 -0
- data/spec/fixtures/runner_delete.json +7 -0
- data/spec/fixtures/runner_edit.json +26 -0
- data/spec/fixtures/runners.json +16 -0
- data/spec/fixtures/runners_all.json +30 -0
- data/spec/fixtures/service.json +1 -0
- data/spec/fixtures/session.json +1 -0
- data/spec/fixtures/shell_history.json +2 -0
- data/spec/fixtures/snippet.json +1 -0
- data/spec/fixtures/snippet_content.json +3 -0
- data/spec/fixtures/snippets.json +1 -0
- data/spec/fixtures/system_hook.json +1 -0
- data/spec/fixtures/system_hooks.json +1 -0
- data/spec/fixtures/tag.json +1 -0
- data/spec/fixtures/tag_create.json +1 -0
- data/spec/fixtures/tag_create_with_description.json +1 -0
- data/spec/fixtures/tag_delete.json +1 -0
- data/spec/fixtures/tags.json +1 -0
- data/spec/fixtures/team_member.json +1 -0
- data/spec/fixtures/team_members.json +1 -0
- data/spec/fixtures/tree.json +1 -0
- data/spec/fixtures/trigger.json +7 -0
- data/spec/fixtures/triggers.json +16 -0
- data/spec/fixtures/user.json +1 -0
- data/spec/fixtures/user_block_unblock.json +1 -0
- data/spec/fixtures/user_email.json +1 -0
- data/spec/fixtures/user_emails.json +1 -0
- data/spec/fixtures/user_search.json +1 -0
- data/spec/fixtures/users.json +1 -0
- data/spec/fixtures/variable.json +4 -0
- data/spec/fixtures/variables.json +10 -0
- data/spec/gitlab/cli_helpers_spec.rb +57 -0
- data/spec/gitlab/cli_spec.rb +110 -0
- data/spec/gitlab/client/branches_spec.rb +99 -0
- data/spec/gitlab/client/build_triggers_spec.rb +67 -0
- data/spec/gitlab/client/build_variables_spec.rb +86 -0
- data/spec/gitlab/client/builds_spec.rb +148 -0
- data/spec/gitlab/client/client_spec.rb +11 -0
- data/spec/gitlab/client/commits_spec.rb +137 -0
- data/spec/gitlab/client/groups_spec.rb +197 -0
- data/spec/gitlab/client/issues_spec.rb +138 -0
- data/spec/gitlab/client/labels_spec.rb +68 -0
- data/spec/gitlab/client/merge_requests_spec.rb +177 -0
- data/spec/gitlab/client/milestones_spec.rb +82 -0
- data/spec/gitlab/client/namespaces_spec.rb +22 -0
- data/spec/gitlab/client/notes_spec.rb +205 -0
- data/spec/gitlab/client/pipelines_spec.rb +95 -0
- data/spec/gitlab/client/projects_spec.rb +603 -0
- data/spec/gitlab/client/repositories_spec.rb +109 -0
- data/spec/gitlab/client/repository_files_spec.rb +62 -0
- data/spec/gitlab/client/runners_spec.rb +185 -0
- data/spec/gitlab/client/services_spec.rb +55 -0
- data/spec/gitlab/client/snippets_spec.rb +100 -0
- data/spec/gitlab/client/system_hooks_spec.rb +69 -0
- data/spec/gitlab/client/tags_spec.rb +109 -0
- data/spec/gitlab/client/users_spec.rb +418 -0
- data/spec/gitlab/error_spec.rb +45 -0
- data/spec/gitlab/file_response_spec.rb +33 -0
- data/spec/gitlab/help_spec.rb +46 -0
- data/spec/gitlab/objectified_hash_spec.rb +48 -0
- data/spec/gitlab/page_links_spec.rb +16 -0
- data/spec/gitlab/paginated_response_spec.rb +60 -0
- data/spec/gitlab/request_spec.rb +73 -0
- data/spec/gitlab/shell_history_spec.rb +53 -0
- data/spec/gitlab/shell_spec.rb +80 -0
- data/spec/gitlab_spec.rb +97 -0
- data/spec/spec_helper.rb +74 -0
- metadata +476 -0
@@ -0,0 +1,78 @@
|
|
1
|
+
class Gitlab::Client
|
2
|
+
# Defines methods related to repositories.
|
3
|
+
# @see https://docs.gitlab.com/ce/api/repositories.html
|
4
|
+
module Repositories
|
5
|
+
# Get the contents of a file
|
6
|
+
#
|
7
|
+
# @example
|
8
|
+
# Gitlab.file_contents(42, 'Gemfile')
|
9
|
+
# Gitlab.repo_file_contents(3, 'Gemfile', 'ed899a2f4b50b4370feeea94676502b42383c746')
|
10
|
+
#
|
11
|
+
# @param [Integer] project The ID of a project.
|
12
|
+
# @param [String] filepath The relative path of the file in the repository
|
13
|
+
# @param [String] ref The name of a repository branch or tag or if not given the default branch.
|
14
|
+
# @return [String]
|
15
|
+
def file_contents(project, filepath, ref='master')
|
16
|
+
ref = URI.encode(ref, /\W/)
|
17
|
+
get "/projects/#{project}/repository/blobs/#{ref}?filepath=#{filepath}",
|
18
|
+
format: nil,
|
19
|
+
headers: { Accept: 'text/plain' },
|
20
|
+
parser: ::Gitlab::Request::Parser
|
21
|
+
end
|
22
|
+
alias_method :repo_file_contents, :file_contents
|
23
|
+
|
24
|
+
# Get file tree project (root level).
|
25
|
+
#
|
26
|
+
# @example
|
27
|
+
# Gitlab.tree(42)
|
28
|
+
# Gitlab.tree(42, { path: 'Gemfile' })
|
29
|
+
#
|
30
|
+
# @param [Integer] project The ID of a project.
|
31
|
+
# @param [Hash] options A customizable set of options.
|
32
|
+
# @option options [String] :path The path inside repository.
|
33
|
+
# @option options [String] :ref_name The name of a repository branch or tag.
|
34
|
+
# @return [Gitlab::ObjectifiedHash]
|
35
|
+
def tree(project, options={})
|
36
|
+
get("/projects/#{project}/repository/tree", query: options)
|
37
|
+
end
|
38
|
+
alias_method :repo_tree, :tree
|
39
|
+
|
40
|
+
# Get project repository archive
|
41
|
+
#
|
42
|
+
# @example
|
43
|
+
# Gitlab.repo_archive(42)
|
44
|
+
# Gitlab.repo_archive(42, 'deadbeef')
|
45
|
+
#
|
46
|
+
# @param [Integer] project The ID of a project.
|
47
|
+
# @param [String] ref The commit sha, branch, or tag to download.
|
48
|
+
# @return [Gitlab::FileResponse]
|
49
|
+
def repo_archive(project, ref = 'master')
|
50
|
+
get("/projects/#{project}/repository/archive",
|
51
|
+
format: nil,
|
52
|
+
headers: { Accept: 'application/octet-stream' },
|
53
|
+
query: { sha: ref },
|
54
|
+
parser: proc { |body, _|
|
55
|
+
if body.encoding == Encoding::ASCII_8BIT # binary response
|
56
|
+
::Gitlab::FileResponse.new StringIO.new(body, 'rb+')
|
57
|
+
else # error with json response
|
58
|
+
::Gitlab::Request.parse(body)
|
59
|
+
end
|
60
|
+
})
|
61
|
+
end
|
62
|
+
|
63
|
+
# Compares branches, tags or commits.
|
64
|
+
#
|
65
|
+
# @example
|
66
|
+
# Gitlab.compare(42, 'master', 'feature/branch')
|
67
|
+
# Gitlab.repo_compare(42, 'master', 'feature/branch')
|
68
|
+
#
|
69
|
+
# @param [Integer] project The ID of a project.
|
70
|
+
# @param [String] from The commit SHA or branch name of from branch.
|
71
|
+
# @param [String] to The commit SHA or branch name of to branch.
|
72
|
+
# @return [Gitlab::ObjectifiedHash]
|
73
|
+
def compare(project, from, to)
|
74
|
+
get("/projects/#{project}/repository/compare", query: { from: from, to: to })
|
75
|
+
end
|
76
|
+
alias_method :repo_compare, :compare
|
77
|
+
end
|
78
|
+
end
|
@@ -0,0 +1,88 @@
|
|
1
|
+
require 'base64'
|
2
|
+
|
3
|
+
class Gitlab::Client
|
4
|
+
# Defines methods related to repository files.
|
5
|
+
# @see https://docs.gitlab.com/ce/api/repository_files.html
|
6
|
+
module RepositoryFiles
|
7
|
+
# Gets a repository file.
|
8
|
+
#
|
9
|
+
# @example
|
10
|
+
# Gitlab.get_file(42, "README.md", "master")
|
11
|
+
#
|
12
|
+
# @param [Integer] project The ID of a project.
|
13
|
+
# @param [String] file_path The full path of the file.
|
14
|
+
# @param [String] ref The name of branch, tag or commit.
|
15
|
+
# @return [Gitlab::ObjectifiedHash]
|
16
|
+
def get_file(project, file_path, ref)
|
17
|
+
get("/projects/#{project}/repository/files", query: {
|
18
|
+
file_path: file_path,
|
19
|
+
ref: ref
|
20
|
+
})
|
21
|
+
end
|
22
|
+
|
23
|
+
# Creates a new repository file.
|
24
|
+
#
|
25
|
+
# @example
|
26
|
+
# Gitlab.create_file(42, "path", "branch", "content", "commit message")
|
27
|
+
#
|
28
|
+
# @param [Integer] project The ID of a project.
|
29
|
+
# @param [String] full path to new file.
|
30
|
+
# @param [String] the name of the branch.
|
31
|
+
# @param [String] file content.
|
32
|
+
# @param [String] commit message.
|
33
|
+
# @return [Gitlab::ObjectifiedHash]
|
34
|
+
def create_file(project, path, branch, content, commit_message)
|
35
|
+
post("/projects/#{project}/repository/files", body: {
|
36
|
+
file_path: path,
|
37
|
+
branch_name: branch,
|
38
|
+
commit_message: commit_message
|
39
|
+
}.merge(encoded_content_attributes(content)))
|
40
|
+
end
|
41
|
+
|
42
|
+
# Edits an existing repository file.
|
43
|
+
#
|
44
|
+
# @example
|
45
|
+
# Gitlab.edit_file(42, "path", "branch", "content", "commit message")
|
46
|
+
#
|
47
|
+
# @param [Integer] project The ID of a project.
|
48
|
+
# @param [String] full path to new file.
|
49
|
+
# @param [String] the name of the branch.
|
50
|
+
# @param [String] file content.
|
51
|
+
# @param [String] commit message.
|
52
|
+
# @return [Gitlab::ObjectifiedHash]
|
53
|
+
def edit_file(project, path, branch, content, commit_message)
|
54
|
+
put("/projects/#{project}/repository/files", body: {
|
55
|
+
file_path: path,
|
56
|
+
branch_name: branch,
|
57
|
+
commit_message: commit_message
|
58
|
+
}.merge(encoded_content_attributes(content)))
|
59
|
+
end
|
60
|
+
|
61
|
+
# Removes an existing repository file.
|
62
|
+
#
|
63
|
+
# @example
|
64
|
+
# Gitlab.remove_file(42, "path", "branch", "commit message")
|
65
|
+
#
|
66
|
+
# @param [Integer] project The ID of a project.
|
67
|
+
# @param [String] full path to new file.
|
68
|
+
# @param [String] the name of the branch.
|
69
|
+
# @param [String] commit message.
|
70
|
+
# @return [Gitlab::ObjectifiedHash]
|
71
|
+
def remove_file(project, path, branch, commit_message)
|
72
|
+
delete("/projects/#{project}/repository/files", body: {
|
73
|
+
file_path: path,
|
74
|
+
branch_name: branch,
|
75
|
+
commit_message: commit_message
|
76
|
+
})
|
77
|
+
end
|
78
|
+
|
79
|
+
private
|
80
|
+
|
81
|
+
def encoded_content_attributes(content)
|
82
|
+
{
|
83
|
+
encoding: 'base64',
|
84
|
+
content: Base64.encode64(content)
|
85
|
+
}
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
@@ -0,0 +1,115 @@
|
|
1
|
+
class Gitlab::Client
|
2
|
+
# Defines methods related to runners.
|
3
|
+
# @see https://docs.gitlab.com/ce/api/runners.html
|
4
|
+
module Runners
|
5
|
+
|
6
|
+
# Get a list of specific runners available to the user.
|
7
|
+
# @see https://docs.gitlab.com/ce/api/runners.html#list-owned-runners
|
8
|
+
#
|
9
|
+
# @example
|
10
|
+
# Gitlab.runners
|
11
|
+
# Gitlab.runners(:active)
|
12
|
+
# Gitlab.runners(:paused)
|
13
|
+
#
|
14
|
+
# @param [Hash] options A customizable set of options.
|
15
|
+
# @option options [String] :scope The scope of specific runners to show, one of: active, paused, online; showing all runners if none provided
|
16
|
+
# @return [Array<Gitlab::ObjectifiedHash>]
|
17
|
+
def runners(options = {})
|
18
|
+
get("/runners", query: options)
|
19
|
+
end
|
20
|
+
|
21
|
+
# Get a list of all runners in the GitLab instance (specific and shared). Access is restricted to users with admin privileges.
|
22
|
+
# @see https://docs.gitlab.com/ce/api/runners.html#list-all-runners
|
23
|
+
#
|
24
|
+
# @example
|
25
|
+
# Gitlab.all_runners
|
26
|
+
#
|
27
|
+
# @param [Hash] options A customizable set of options.
|
28
|
+
# @option options [String] :scope The scope of runners to show, one of: specific, shared, active, paused, online; showing all runners if none provided
|
29
|
+
# @return [Array<Gitlab::ObjectifiedHash>]
|
30
|
+
def all_runners(options = {})
|
31
|
+
get("/runners/all", query: options)
|
32
|
+
end
|
33
|
+
|
34
|
+
# Get details of a runner..
|
35
|
+
# @see https://docs.gitlab.com/ce/api/runners.html#get-runners-details
|
36
|
+
#
|
37
|
+
# @example
|
38
|
+
# Gitlab.runner(42)
|
39
|
+
#
|
40
|
+
# @param [Integer, String] id The ID of a runner
|
41
|
+
# @return <Gitlab::ObjectifiedHash>
|
42
|
+
def runner(id)
|
43
|
+
get("/runners/#{id}")
|
44
|
+
end
|
45
|
+
|
46
|
+
# Update details of a runner.
|
47
|
+
# @see https://docs.gitlab.com/ce/api/runners.html#update-runners-details
|
48
|
+
#
|
49
|
+
# @example
|
50
|
+
# Gitlab.update_runner(42, { description: 'Awesome runner' })
|
51
|
+
# Gitlab.update_runner(42, { active: false })
|
52
|
+
# Gitlab.update_runner(42, { tag_list: [ 'awesome', 'runner' ] })
|
53
|
+
#
|
54
|
+
# @param [Integer, String] id The ID of a runner
|
55
|
+
# @param [Hash] options A customizable set of options.
|
56
|
+
# @option options [String] :active The state of a runner; can be set to true or false.
|
57
|
+
# @option options [String] :tag_list The list of tags for a runner; put array of tags, that should be finally assigned to a runner
|
58
|
+
# @return <Gitlab::ObjectifiedHash>
|
59
|
+
def update_runner(id, options={})
|
60
|
+
put("/runners/#{id}", query: options)
|
61
|
+
end
|
62
|
+
|
63
|
+
# Remove a runner.
|
64
|
+
# @see https://docs.gitlab.com/ce/api/runners.html#remove-a-runner
|
65
|
+
#
|
66
|
+
# @example
|
67
|
+
# Gitlab.delete_runner(42)
|
68
|
+
#
|
69
|
+
# @param [Integer, String] id The ID of a runner
|
70
|
+
# @return <Gitlab::ObjectifiedHash>
|
71
|
+
def delete_runner(id)
|
72
|
+
delete("/runners/#{id}")
|
73
|
+
end
|
74
|
+
|
75
|
+
# List all runners (specific and shared) available in the project. Shared runners are listed if at least one shared runner is defined and shared runners usage is enabled in the project's settings.
|
76
|
+
# @see https://docs.gitlab.com/ce/api/runners.html#list-projects-runners
|
77
|
+
#
|
78
|
+
# @example
|
79
|
+
# Gitlab.project_runners(42)
|
80
|
+
#
|
81
|
+
# @param [Integer, String] id The ID of a project.
|
82
|
+
# @return [Array<Gitlab::ObjectifiedHash>]
|
83
|
+
def project_runners(project_id)
|
84
|
+
get("/projects/#{project_id}/runners")
|
85
|
+
end
|
86
|
+
|
87
|
+
# Enable an available specific runner in the project.
|
88
|
+
# @see https://docs.gitlab.com/ce/api/runners.html#enable-a-runner-in-project
|
89
|
+
#
|
90
|
+
# @example
|
91
|
+
# Gitlab.project_enable_runner(2, 42)
|
92
|
+
#
|
93
|
+
# @param [Integer, String] id The ID of a project.
|
94
|
+
# @param [Integer, String] id The ID of a runner.
|
95
|
+
# @return <Gitlab::ObjectifiedHash>
|
96
|
+
def project_enable_runner(project_id, id)
|
97
|
+
body = { runner_id: id }
|
98
|
+
post("/projects/#{project_id}/runners", body: body)
|
99
|
+
end
|
100
|
+
|
101
|
+
# Disable a specific runner from the project. It works only if the project isn't the only project associated with the specified runner.
|
102
|
+
# @see https://docs.gitlab.com/ce/api/runners.html#disable-a-runner-from-project
|
103
|
+
#
|
104
|
+
# @example
|
105
|
+
# Gitlab.project_disable_runner(2, 42)
|
106
|
+
#
|
107
|
+
# @param [Integer, String] id The ID of a project.
|
108
|
+
# @param [Integer, String] runner_id The ID of a runner.
|
109
|
+
# @return <Gitlab::ObjectifiedHash>
|
110
|
+
def project_disable_runner(id, runner_id)
|
111
|
+
delete("/projects/#{id}/runners/#{runner_id}")
|
112
|
+
end
|
113
|
+
|
114
|
+
end
|
115
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
class Gitlab::Client
|
2
|
+
# Third party services connected to a project.
|
3
|
+
# @see https://docs.gitlab.com/ce/api/services.html
|
4
|
+
module Services
|
5
|
+
# Create/Edit service
|
6
|
+
# Full service params documentation: https://github.com/gitlabhq/gitlabhq/blob/master/doc/api/services.md
|
7
|
+
#
|
8
|
+
# @example
|
9
|
+
# Gitlab.change_service(42, :redmine, { new_issue_url: 'https://example.com/projects/test_project/issues/new',
|
10
|
+
# project_url: 'https://example.com/projects/test_project/issues',
|
11
|
+
# issues_url: 'https://example.com/issues/:id' })
|
12
|
+
#
|
13
|
+
# @param [Integer] project The ID of a project.
|
14
|
+
# @param [String] service A service code name.
|
15
|
+
# @param [Hash] params A service parameters.
|
16
|
+
# @return [Boolean]
|
17
|
+
def change_service(project, service, params)
|
18
|
+
put("/projects/#{project}/services/#{correct_service_name(service)}", body: params)
|
19
|
+
end
|
20
|
+
|
21
|
+
# Delete service
|
22
|
+
#
|
23
|
+
# @example
|
24
|
+
# Gitlab.delete_service(42, :redmine)
|
25
|
+
#
|
26
|
+
# @param [Integer] project The ID of a project.
|
27
|
+
# @param [String] service A service code name.
|
28
|
+
# @return [Boolean]
|
29
|
+
def delete_service(project, service)
|
30
|
+
delete("/projects/#{project}/services/#{correct_service_name(service)}")
|
31
|
+
end
|
32
|
+
|
33
|
+
# Get service
|
34
|
+
#
|
35
|
+
# @example
|
36
|
+
# Gitlab.service(42, :redmine)
|
37
|
+
#
|
38
|
+
# @param [Integer] project The ID of a project.
|
39
|
+
# @param [String] service A service code name.
|
40
|
+
# @return [Gitlab::ObjectifiedHash]
|
41
|
+
def service(project, service)
|
42
|
+
get("/projects/#{project}/services/#{correct_service_name(service)}")
|
43
|
+
end
|
44
|
+
|
45
|
+
private
|
46
|
+
def correct_service_name(service)
|
47
|
+
service.to_s.gsub('_', '-')
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,91 @@
|
|
1
|
+
class Gitlab::Client
|
2
|
+
# Defines methods related to snippets.
|
3
|
+
# @see https://docs.gitlab.com/ce/api/project_snippets.html
|
4
|
+
module Snippets
|
5
|
+
# Gets a list of project's snippets.
|
6
|
+
#
|
7
|
+
# @example
|
8
|
+
# Gitlab.snippets(42)
|
9
|
+
#
|
10
|
+
# @param [Integer] project The ID of a project.
|
11
|
+
# @param [Hash] options A customizable set of options.
|
12
|
+
# @option options [Integer] :page The page number.
|
13
|
+
# @option options [Integer] :per_page The number of results per page.
|
14
|
+
# @return [Gitlab::ObjectifiedHash]
|
15
|
+
def snippets(project, options={})
|
16
|
+
get("/projects/#{project}/snippets", query: options)
|
17
|
+
end
|
18
|
+
|
19
|
+
# Gets information about a snippet.
|
20
|
+
#
|
21
|
+
# @example
|
22
|
+
# Gitlab.snippet(2, 14)
|
23
|
+
#
|
24
|
+
# @param [Integer] project The ID of a project.
|
25
|
+
# @param [Integer] id The ID of a snippet.
|
26
|
+
# @return [Gitlab::ObjectifiedHash]
|
27
|
+
def snippet(project, id)
|
28
|
+
get("/projects/#{project}/snippets/#{id}")
|
29
|
+
end
|
30
|
+
|
31
|
+
# Creates a new snippet.
|
32
|
+
#
|
33
|
+
# @example
|
34
|
+
# Gitlab.create_snippet(42, { title: 'REST', file_name: 'api.rb', code: 'some code' })
|
35
|
+
#
|
36
|
+
# @param [Integer] project The ID of a project.
|
37
|
+
# @param [Hash] options A customizable set of options.
|
38
|
+
# @option options [String] :title (required) The title of a snippet.
|
39
|
+
# @option options [String] :file_name (required) The name of a snippet file.
|
40
|
+
# @option options [String] :code (required) The content of a snippet.
|
41
|
+
# @option options [String] :lifetime (optional) The expiration date of a snippet.
|
42
|
+
# @return [Gitlab::ObjectifiedHash] Information about created snippet.
|
43
|
+
def create_snippet(project, options={})
|
44
|
+
post("/projects/#{project}/snippets", body: options)
|
45
|
+
end
|
46
|
+
|
47
|
+
# Updates a snippet.
|
48
|
+
#
|
49
|
+
# @example
|
50
|
+
# Gitlab.edit_snippet(42, 34, { file_name: 'README.txt' })
|
51
|
+
#
|
52
|
+
# @param [Integer] project The ID of a project.
|
53
|
+
# @param [Integer] id The ID of a snippet.
|
54
|
+
# @param [Hash] options A customizable set of options.
|
55
|
+
# @option options [String] :title The title of a snippet.
|
56
|
+
# @option options [String] :file_name The name of a snippet file.
|
57
|
+
# @option options [String] :code The content of a snippet.
|
58
|
+
# @option options [String] :lifetime The expiration date of a snippet.
|
59
|
+
# @return [Gitlab::ObjectifiedHash] Information about updated snippet.
|
60
|
+
def edit_snippet(project, id, options={})
|
61
|
+
put("/projects/#{project}/snippets/#{id}", body: options)
|
62
|
+
end
|
63
|
+
|
64
|
+
# Deletes a snippet.
|
65
|
+
#
|
66
|
+
# @example
|
67
|
+
# Gitlab.delete_snippet(2, 14)
|
68
|
+
#
|
69
|
+
# @param [Integer] project The ID of a project.
|
70
|
+
# @param [Integer] id The ID of a snippet.
|
71
|
+
# @return [Gitlab::ObjectifiedHash] Information about deleted snippet.
|
72
|
+
def delete_snippet(project, id)
|
73
|
+
delete("/projects/#{project}/snippets/#{id}")
|
74
|
+
end
|
75
|
+
|
76
|
+
# Returns raw project snippet content as plain text.
|
77
|
+
#
|
78
|
+
# @example
|
79
|
+
# Gitlab.snippet_content(2, 14)
|
80
|
+
#
|
81
|
+
# @param [Integer] project The ID of a project.
|
82
|
+
# @param [Integer] id The ID of a snippet.
|
83
|
+
# @return [Gitlab::ObjectifiedHash] Information about deleted snippet.
|
84
|
+
def snippet_content(project, id)
|
85
|
+
get("/projects/#{project}/snippets/#{id}/raw",
|
86
|
+
format: nil,
|
87
|
+
headers: { Accept: 'text/plain' },
|
88
|
+
parser: ::Gitlab::Request::Parser)
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
class Gitlab::Client
|
2
|
+
# Defines methods related to system hooks.
|
3
|
+
# @see https://docs.gitlab.com/ce/api/system_hooks.html
|
4
|
+
module SystemHooks
|
5
|
+
# Gets a list of system hooks.
|
6
|
+
#
|
7
|
+
# @example
|
8
|
+
# Gitlab.hooks
|
9
|
+
# Gitlab.system_hooks
|
10
|
+
#
|
11
|
+
# @param [Hash] options A customizable set of options.
|
12
|
+
# @option options [Integer] :page The page number.
|
13
|
+
# @option options [Integer] :per_page The number of results per page.
|
14
|
+
# @return [Array<Gitlab::ObjectifiedHash>]
|
15
|
+
def hooks(options={})
|
16
|
+
get("/hooks", query: options)
|
17
|
+
end
|
18
|
+
alias_method :system_hooks, :hooks
|
19
|
+
|
20
|
+
# Adds a new system hook.
|
21
|
+
#
|
22
|
+
# @example
|
23
|
+
# Gitlab.add_hook('http://example.com/hook')
|
24
|
+
# Gitlab.add_system_hook('https://api.example.net/v1/hook')
|
25
|
+
#
|
26
|
+
# @param [String] url The hook URL.
|
27
|
+
# @return [Gitlab::ObjectifiedHash]
|
28
|
+
def add_hook(url)
|
29
|
+
post("/hooks", body: { url: url })
|
30
|
+
end
|
31
|
+
alias_method :add_system_hook, :add_hook
|
32
|
+
|
33
|
+
# Tests a system hook.
|
34
|
+
#
|
35
|
+
# @example
|
36
|
+
# Gitlab.hook(3)
|
37
|
+
# Gitlab.system_hook(12)
|
38
|
+
#
|
39
|
+
# @param [Integer] id The ID of a system hook.
|
40
|
+
# @return [Array<Gitlab::ObjectifiedHash>]
|
41
|
+
def hook(id)
|
42
|
+
get("/hooks/#{id}")
|
43
|
+
end
|
44
|
+
alias_method :system_hook, :hook
|
45
|
+
|
46
|
+
# Deletes a new system hook.
|
47
|
+
#
|
48
|
+
# @example
|
49
|
+
# Gitlab.delete_hook(3)
|
50
|
+
# Gitlab.delete_system_hook(12)
|
51
|
+
#
|
52
|
+
# @param [Integer] id The ID of a system hook.
|
53
|
+
# @return [Gitlab::ObjectifiedHash]
|
54
|
+
def delete_hook(id)
|
55
|
+
delete("/hooks/#{id}")
|
56
|
+
end
|
57
|
+
alias_method :delete_system_hook, :delete_hook
|
58
|
+
end
|
59
|
+
end
|