44 lines
981 B
Text
44 lines
981 B
Text
|
#!/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
|