class Gitlab::Client # Defines methods related to runners. # @see https://github.com/gitlabhq/gitlabhq/blob/master/doc/api/runners.md module Runners # Get a list of specific runners available to the user. # Full runner params documentation: https://github.com/gitlabhq/gitlabhq/blob/master/doc/api/runners.md # # @example # Gitlab.runners # Gitlab.runners(:active) # Gitlab.runners(:paused) # # @param [Hash] options A customizable set of options. # @option options [String] :scope The scope of specific runners to show, one of: active, paused, online; showing all runners if none provided # @return [Array] def runners(options = {}) get("/runners", query: options) end # Get a list of all runners in the GitLab instance (specific and shared). Access is restricted to users with admin privileges. # Full runner params documentation: https://github.com/gitlabhq/gitlabhq/blob/master/doc/api/runners.md # # @example # Gitlab.all_runners # # @param [Hash] options A customizable set of options. # @option options [String] :scope The scope of runners to show, one of: specific, shared, active, paused, online; showing all runners if none provided # @return [Array] def all_runners(options = {}) get("/runners/all", query: options) end # Get details of a runner.. # Full runner params documentation: https://github.com/gitlabhq/gitlabhq/blob/master/doc/api/runners.md # # @example # Gitlab.runner(42) # # @param [Integer, String] id The ID of a runner # @return def runner(id) get("/runners/#{id}") end # Update details of a runner. # Full runner params documentation: https://github.com/gitlabhq/gitlabhq/blob/master/doc/api/runners.md # # @example # Gitlab.update_runner(42, { description: 'Awesome runner' }) # Gitlab.update_runner(42, { active: false }) # Gitlab.update_runner(42, { tag_list: [ 'awesome', 'runner' ] }) # # @param [Integer, String] id The ID of a runner # @param [Hash] options A customizable set of options. # @option options [String] :active The state of a runner; can be set to true or false. # @option options [String] :tag_list The list of tags for a runner; put array of tags, that should be finally assigned to a runner # @return def update_runner(id, options={}) put("/runners/#{id}", query: options) end # Remove a runner. # Full runner params documentation: https://github.com/gitlabhq/gitlabhq/blob/master/doc/api/runners.md # # @example # Gitlab.delete_runner(42) # # @param [Integer, String] id The ID of a runner # @return def delete_runner(id) delete("/runners/#{id}") end # 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. # Full runner params documentation: https://github.com/gitlabhq/gitlabhq/blob/master/doc/api/runners.md # # @example # Gitlab.project_runners(42) # # @param [Integer, String] id The ID of a project. # @return [Array] def project_runners(project_id) get("/projects/#{project_id}/runners") end # Enable an available specific runner in the project. # Full runner params documentation: https://github.com/gitlabhq/gitlabhq/blob/master/doc/api/runners.md # # @example # Gitlab.project_enable_runner(2, 42) # # @param [Integer, String] id The ID of a project. # @param [Integer, String] id The ID of a runner. # @return def project_enable_runner(project_id, id) body = { runner_id: id } post("/projects/#{project_id}/runners", body: body) end # Disable a specific runner from the project. It works only if the project isn't the only project associated with the specified runner. # Full runner params documentation: https://github.com/gitlabhq/gitlabhq/blob/master/doc/api/runners.md # # @example # Gitlab.project_disable_runner(2, 42) # # @param [Integer, String] id The ID of a project. # @param [Integer, String] runner_id The ID of a runner. # @return def project_disable_runner(id, runner_id) delete("/projects/#{id}/runners/#{runner_id}") end end end