summaryrefslogtreecommitdiff
path: root/scripts/get-job-id
blob: a5d34dc545b6fd620eda4b168eda0fe63924a2ec (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#!/usr/bin/env ruby
# frozen_string_literal: true

require 'gitlab'
require 'optparse'

#
# Configure credentials to be used with gitlab gem
#
Gitlab.configure do |config|
  config.endpoint = 'https://gitlab.com/api/v4'
  config.private_token = ENV['GITLAB_BOT_MULTI_PROJECT_PIPELINE_POLLING_TOKEN']
end

options = {}
OptionParser.new do |opts|
  opts.on("-s", "--scope=SCOPE", "Find job with matching scope") do |scope|
    options[:scope] = scope
  end
end.parse!

class PipelineJobFinder
  def initialize(project_id, pipeline_id, job_name, options)
    @project_id = project_id
    @pipeline_id = pipeline_id
    @job_name = job_name
    @options = options
  end

  def execute
    Gitlab.pipeline_jobs(@project_id, @pipeline_id, @options).auto_paginate do |job|
      break job if job.name == @job_name
    end
  end
end

project_id, pipeline_id, job_name = ARGV

job = PipelineJobFinder.new(project_id, pipeline_id, job_name, options).execute

return if job.nil?

puts job.id