module Gitlab::Client::Jobs

Defines methods related to projects. @see docs.gitlab.com/ee/api/jobs.html

Public Instance Methods

download_branch_artifact_file(project_id, ref_name, artifact_path, job) click to toggle source

Download a single artifact file from specific tag or branch

@example

Gitlab.download_branch_artifact_file(1, "master", "some/release/file.pdf", 'pdf')

@param [Integer, String] project_id(required) The ID or name of a project. @param [String] ref_name(required) Branch or tag name in repository. HEAD or SHA references are not supported. @param [String] artifact_path(required) Path to a file inside the artifacts archive. @param [String] job(required) The name of the job. @return [Gitlab::FileResponse]

# File lib/gitlab/client/jobs.rb, line 138
def download_branch_artifact_file(project_id, ref_name, artifact_path, job)
  get("/projects/#{url_encode project_id}/jobs/artifacts/#{ref_name}/raw/#{artifact_path}",
      query: { job: job },
      format: nil,
      headers: { Accept: 'application/octet-stream' },
      parser: proc { |body, _|
                if body.encoding == Encoding::ASCII_8BIT # binary response
                  ::Gitlab::FileResponse.new StringIO.new(body, 'rb+')
                else # error with json response
                  ::Gitlab::Request.parse(body)
                end
              })
end
Also aliased as: download_tag_artifact_file
download_job_artifact_file(project_id, job_id, artifact_path) click to toggle source

Download a single artifact file by job ID

@example

Gitlab.download_job_artifact_file(1, 5, "some/release/file.pdf")

@param [Integer, String] project_id(required) The ID or name of a project. @param [String] job_id(required) The unique job identifier. @param [String] artifact_path(required) Path to a file inside the artifacts archive. @return [Gitlab::FileResponse]

# File lib/gitlab/client/jobs.rb, line 115
def download_job_artifact_file(project_id, job_id, artifact_path)
  get("/projects/#{url_encode project_id}/jobs/#{job_id}/artifacts/#{artifact_path}",
      format: nil,
      headers: { Accept: 'application/octet-stream' },
      parser: proc { |body, _|
                if body.encoding == Encoding::ASCII_8BIT # binary response
                  ::Gitlab::FileResponse.new StringIO.new(body, 'rb+')
                else # error with json response
                  ::Gitlab::Request.parse(body)
                end
              })
end
download_tag_artifact_file(project_id, ref_name, artifact_path, job)
job(project_id, job_id) click to toggle source

Gets a single job

@example

Gitlab.job(1, 2)
Gitlab.job("project", 2)

@param [Integer, String] The ID or name of a project. @param [Integer] the id of the job

# File lib/gitlab/client/jobs.rb, line 62
def job(project_id, job_id)
  get("/projects/#{url_encode project_id}/jobs/#{job_id}")
end
job_artifacts(project_id, job_id) click to toggle source

Gets artifacts from a job

@example

Gitlab.job_artifacts(1, 2)
Gitlab.job_artifacts("project", 2)

@param [Integer, String] The ID or name of a project. @param [Integer] the id of the job @return [Array<Gitlab::ObjectifiedHash>]

# File lib/gitlab/client/jobs.rb, line 75
def job_artifacts(project_id, job_id)
  get("/projects/#{url_encode project_id}/jobs/#{job_id}/artifacts",
      format: nil,
      headers: { Accept: 'text/plain' },
      parser: ::Gitlab::Request::Parser)
end
job_artifacts_delete(project_id, job_id) click to toggle source

Delete Artifacts Deletes the artifacts associated with a job.

@example

Gitlab.job_artifacts_delete(1,1)
Gitlab.job_artifacts_delete("project", 1)

@param [Integer, String] The ID or name of a project. @param [Integer] the id of the job @return [Array<Gitlab::ObjectifiedHash>]

# File lib/gitlab/client/jobs.rb, line 246
def job_artifacts_delete(project_id, job_id)
  delete("/projects/#{url_encode project_id}/jobs/#{job_id}/artifacts")
end
job_artifacts_download(project_id, ref_name, job_name) click to toggle source

Download Job Artifact

@example

Gitlab.job_artifacts_download(1, "master", "release")
Gitlab.job_artifacts_download("project", "master", "release")

@param [Integer, String] project_id The ID or name of a project. @param [String] ref Ref Name @param [String] job jobname @return [Gitlab::FileResponse]

# File lib/gitlab/client/jobs.rb, line 92
def job_artifacts_download(project_id, ref_name, job_name)
  get("/projects/#{url_encode project_id}/jobs/artifacts/#{ref_name}/download",
      query: { job: job_name },
      format: nil,
      headers: { Accept: 'application/octet-stream' },
      parser: proc { |body, _|
                if body.encoding == Encoding::ASCII_8BIT # binary response
                  ::Gitlab::FileResponse.new StringIO.new(body, 'rb+')
                else # error with json response
                  ::Gitlab::Request.parse(body)
                end
              })
end
job_artifacts_keep(project_id, job_id) click to toggle source

Keep Artifacts Prevents artifacts from being deleted when expiration is set.

@example

Gitlab.job_artifacts_keep(1,1)
Gitlab.job_artifacts_keep("project", 1)

@param [Integer, String] The ID or name of a project. @param [Integer] the id of the job @return [Array<Gitlab::ObjectifiedHash>]

# File lib/gitlab/client/jobs.rb, line 232
def job_artifacts_keep(project_id, job_id)
  post("/projects/#{url_encode project_id}/jobs/#{job_id}/artifacts/keep")
end
job_cancel(project_id, job_id) click to toggle source

Cancel a job

@example

Gitlab.job_cancel(1,1)
Gitlab.job_cancel("project", 1)

@param [Integer, String] The ID or name of a project. @param [Integer] the id of the job @return [Array<Gitlab::ObjectifiedHash>]

# File lib/gitlab/client/jobs.rb, line 178
def job_cancel(project_id, job_id)
  post("/projects/#{url_encode project_id}/jobs/#{job_id}/cancel")
end
job_erase(project_id, job_id) click to toggle source

Erase Job

@example

Gitlab.job_erase(1,1)
Gitlab.job_erase("project", 1)

@param [Integer, String] The ID or name of a project. @param [Integer] the id of the job @return [Array<Gitlab::ObjectifiedHash>]

# File lib/gitlab/client/jobs.rb, line 204
def job_erase(project_id, job_id)
  post("/projects/#{url_encode project_id}/jobs/#{job_id}/erase")
end
job_play(project_id, job_id) click to toggle source

Play a Job Triggers a manual action to start a job.

@example

Gitlab.job_play(1,1)
Gitlab.job_play("project", 1)

@param [Integer, String] The ID or name of a project. @param [Integer] the id of the job @return [Array<Gitlab::ObjectifiedHash>]

# File lib/gitlab/client/jobs.rb, line 218
def job_play(project_id, job_id)
  post("/projects/#{url_encode project_id}/jobs/#{job_id}/play")
end
job_retry(project_id, job_id) click to toggle source

Retry a job

@example

Gitlab.job_retry(1,1)
Gitlab.job_retry("project", 1)

@param [Integer, String] The ID or name of a project. @param [Integer] the id of the job @return [Array<Gitlab::ObjectifiedHash>]

# File lib/gitlab/client/jobs.rb, line 191
def job_retry(project_id, job_id)
  post("/projects/#{url_encode project_id}/jobs/#{job_id}/retry")
end
job_trace(project_id, job_id) click to toggle source

Get Job Trace

@example

Gitlab.job_trace(1,1)
Gitlab.job_trace("project", 1)

@param [Integer, String] The ID or name of a project. @param [Integer] the id of the job @return [Array<Gitlab::ObjectifiedHash>]

# File lib/gitlab/client/jobs.rb, line 162
def job_trace(project_id, job_id)
  get("/projects/#{url_encode project_id}/jobs/#{job_id}/trace",
      format: nil,
      headers: { Accept: 'text/plain' },
      parser: ::Gitlab::Request::Parser)
end
jobs(project_id, options = {}) click to toggle source

Gets a list of Jobs for a Project

@example

Gitlab.jobs(1)
Gitlab.jobs("project")
Gitlab.jobs("project", {scope: ["manual", "success"], per_page: 100 })

@param [Integer, String] id The ID or name of a project. @param [Hash] options A customizable set of options. @option options [Array] :scope The scope of jobs to show, one or array of: created, pending, running, failed, success, canceled, skipped, manual; showing all jobs if none provided. @option options [Integer] :page The page number. @option options [Integer] :per_page The number of results per page. @return [Array<Gitlab::ObjectifiedHash>]

# File lib/gitlab/client/jobs.rb, line 20
def jobs(project_id, options = {})
  get("/projects/#{url_encode project_id}/jobs", query: options)
end
pipeline_bridges(project_id, pipeline_id, options = {}) click to toggle source

Gets a list of Bridge Jobs from a pipeline

@example

Gitlab.pipeline_bridges(1, 2)
Gitlab.pipeline_bridges("project", 2)

@param [Integer, String] The ID or name of a project. @param [Integer] the id of the pipeline @param [Hash] options A customizable set of options. @option options [Array] :scope The scope of bridge jobs to show, one or array of: created, pending, running, failed, success, canceled, skipped, manual; showing all bridge jobs if none provided. @return [Array<Gitlab::ObjectifiedHash>]

# File lib/gitlab/client/jobs.rb, line 50
def pipeline_bridges(project_id, pipeline_id, options = {})
  get("/projects/#{url_encode project_id}/pipelines/#{pipeline_id}/bridges", query: options)
end
pipeline_jobs(project_id, pipeline_id, options = {}) click to toggle source

Gets a list of Jobs from a pipeline

@example

Gitlab.pipeline_jobs(1, 2)
Gitlab.pipeline_jobs("project", 2)

@param [Integer, String] The ID or name of a project. @param [Integer] the id of the pipeline @param [Hash] options A customizable set of options. @option options [Array] :scope The scope of jobs to show, one or array of: created, pending, running, failed, success, canceled, skipped, manual; showing all jobs if none provided. @return [Array<Gitlab::ObjectifiedHash>]

# File lib/gitlab/client/jobs.rb, line 35
def pipeline_jobs(project_id, pipeline_id, options = {})
  get("/projects/#{url_encode project_id}/pipelines/#{pipeline_id}/jobs", query: options)
end