github.com/secure-build/gitlab-runner@v12.5.0+incompatible/scripts/prepare-changelog-entries.rb (about)

     1  #!/usr/bin/env ruby
     2  
     3  require 'json'
     4  require 'net/http'
     5  require 'uri'
     6  
     7  per_page = 15
     8  
     9  private_token = ENV['GITLAB_PRIVATE_TOKEN']
    10  unless private_token && !private_token.empty?
    11    STDERR.puts 'Please set GITLAB_PRIVATE_TOKEN variable'
    12    exit 1
    13  end
    14  
    15  starting_point = ENV['STARTING_POINT']
    16  if !starting_point || starting_point.empty?
    17    starting_point = `git describe --tags --abbrev=0 --match "v[0-9]*.[0-9]*.[0-9]*"`.strip
    18  
    19    STDERR.puts "STARTING_POINT variable not set, using autodiscovered: #{starting_point}"
    20  end
    21  unless starting_point && !starting_point.empty?
    22    STDERR.puts 'Please set STARTING_POINT variable'
    23  end
    24  
    25  exclude_mr_ids = []
    26  exclude_mr_ids = ENV['EXCLUDE_MR_IDS'].split(',').map(&:to_i) if ENV['EXCLUDE_MR_IDS']
    27  project_id = ENV['PROJECT_ID'] || 'gitlab-org%2Fgitlab-runner'
    28  
    29  base_url = URI("https://gitlab.com/api/v4/projects/#{project_id}/merge_requests")
    30  merge_requests = {}
    31  
    32  merge_request_ids_cmd = "git log #{starting_point}.. --first-parent | grep -E \"^\\s*See merge request (gitlab-org/gitlab-runner)?\![0-9]+$\" | grep -Eo \"[0-9]+$\" | xargs echo"
    33  merge_request_ids = `#{merge_request_ids_cmd}`.split(' ').map(&:to_i).reject{ |id| exclude_mr_ids.include?(id) }.reverse
    34  merge_request_ids.sort.each_slice(per_page).to_a.each do |part|
    35    query = part.map do |id|
    36      "iids[]=#{id}"
    37    end
    38  
    39    query << "per_page=#{per_page}"
    40    query << "private_token=#{private_token}"
    41  
    42    base_url.query = query.join('&')
    43  
    44    data = JSON.parse(Net::HTTP.get(base_url))
    45    data.each do |mr|
    46      merge_requests[mr['iid'].to_i] = mr['title']
    47    end
    48  end
    49  
    50  puts
    51  merge_request_ids.each do |iid|
    52    puts "- #{merge_requests[iid]} !#{iid}"
    53  end