| require 'octokit' |
| |
| client = Octokit::Client.new(:access_token => ENV['GITHUB_TOKEN']) |
| |
| repo = Octokit::Repository.from_url("https://github.com/NICTA/cogent") |
| |
| tags = client.tags("NICTA/cogent") |
| tagnames = tags.map { |t| t.name } |
| |
| auto_deploy_tags_all = tagnames.select { |t| t =~ /^auto-deploy-*/ } |
| |
| # In reverse order. |
| |
| auto_deploy_tags_sorted = auto_deploy_tags_all.sort{ |x,y| |
| |
| pre = "auto-deploy-" |
| |
| nx = x.delete_prefix(pre).to_i |
| ny = y.delete_prefix(pre).to_i |
| ny <=> nx |
| |
| } |
| |
| # No matter what, always keep the most recent. |
| |
| auto_deploy_tags_sorted.shift |
| |
| if auto_deploy_tags_sorted.nil? then |
| |
| puts "No auto-deployed releases." |
| exit |
| |
| elsif auto_deploy_tags_sorted.length == 0 then |
| |
| puts "Only one release available, do not delete." |
| exit |
| |
| end |
| |
| auto_deploy_tags = auto_deploy_tags_sorted |
| |
| auto_deploy_tags.each { |t| |
| |
| release = client.release_for_tag(repo, t) |
| release_url = release.url |
| |
| del_rel_res = client.delete_release(release_url) |
| puts "Deleting release " + t |
| if del_rel_res then puts "Succeeded!" else puts "Failed!" end |
| |
| del_tag_res = client.delete_ref(repo, "tags/" + t) |
| puts "Deleting tag " + t |
| if del_tag_res then puts "Succeeded!" else puts "Failed!" end |
| |
| } |
| |
| puts "Clean-up done." |