class Gitlab::Client # Defines methods related to pipelines. # @see https://docs.gitlab.com/ce/api/pipeline_triggers.html # @see https://docs.gitlab.com/ce/ci/triggers/README.html module PipelineTriggers # Gets a list of the project's pipeline triggers # # @example # Gitlab.triggers(5) # # @param [Integer, String] project The ID or name of a project. # @return [Array] The list of triggers. def triggers(project) get("/projects/#{url_encode project}/triggers") end # Gets details of project's pipeline trigger. # # @example # Gitlab.trigger(5, 1) # # @param [Integer, String] project The ID or name of a project. # @param [Integer] trigger_id The trigger ID. # @return [Gitlab::ObjectifiedHash] The trigger. def trigger(project, trigger_id) get("/projects/#{url_encode project}/triggers/#{trigger_id}") end # Create a pipeline trigger for a project. # # @example # Gitlab.create_trigger(5, description: "my description") # # @param [Integer, String] project The ID or name of a project. # @param [String] description The trigger name # @return [Gitlab::ObjectifiedHash] The created trigger. def create_trigger(project, description) post("/projects/#{url_encode project}/triggers", body: {description: description}) end # Update a project trigger # # @example # Gitlab.update_trigger(5, 1, description: "my description") # # @param [Integer, String] project The ID or name of a project. # @param [Integer] trigger_id The trigger ID. # @param [Hash] options A customizable set of options. # @option options [String] :description The trigger name. # @return [Gitlab::ObjectifiedHash] The updated trigger. def update_trigger(project, trigger_id, options={}) put("/projects/#{url_encode project}/triggers/#{trigger_id}", body: options) end # Take ownership of a project trigger # # @example # Gitlab.trigger_take_ownership(5, 1) # # @param [Integer, String] project The ID or name of a project. # @param [Integer] trigger_id The trigger ID. # @return [Gitlab::ObjectifiedHash] The updated trigger. def trigger_take_ownership(project, trigger_id) post("/projects/#{url_encode project}/triggers/#{trigger_id}/take_ownership") end # Remove a project's pipeline trigger. # # @example # Gitlab.remove_trigger(5, 1) # # @param [Integer, String] project The ID or name of a project. # @param [Integer] trigger_id The trigger ID. # @return [void] This API call returns an empty response body. def remove_trigger(project, trigger_id) delete("/projects/#{url_encode project}/triggers/#{trigger_id}") end alias_method :delete_trigger, :remove_trigger # Run the given project pipeline trigger. # # @example # Gitlab.run_trigger(5, '7b9148c158980bbd9bcea92c17522d', 'master') # Gitlab.run_trigger(5, '7b9148c158980bbd9bcea92c17522d', 'master', { variable1: "value", variable2: "value2" }) # # @see https://docs.gitlab.com/ce/ci/triggers/README.html # # @param [Integer, String] project The ID or name of the project. # @param [String] token The token of a trigger. # @param [String] ref Branch or tag name to build. # @param [Hash] variables A set of build variables to use for the build. (optional) # @return [Gitlab::ObjectifiedHash] The trigger. def run_trigger(project, token, ref, variables={}) post("/projects/#{url_encode project}/trigger/pipeline", unauthenticated: true, body: { token: token, ref: ref, variables: variables }) end end end