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