Get releases from Docker Hub
This commit is contained in:
22
update.rb
22
update.rb
@@ -5,6 +5,8 @@ require 'json'
|
||||
require 'rugged'
|
||||
require 'liquid'
|
||||
require 'digest'
|
||||
require 'net/http'
|
||||
require 'uri'
|
||||
|
||||
WEBSITE_DIR = ARGV[0]
|
||||
CACHE_DIR = ARGV[1]
|
||||
@@ -101,12 +103,30 @@ def generate_commit_message
|
||||
end
|
||||
end
|
||||
|
||||
def get_releases_from_dockerhub(config)
|
||||
url = "https://hub.docker.com/v2/repositories/#{config['dockerhub']}/tags?page_size=100&page=1"
|
||||
ret = {}
|
||||
loop do
|
||||
data = JSON.parse Net::HTTP.get(URI.parse(url))
|
||||
data['results'].each do |r|
|
||||
next unless good_tag(r['name'], config)
|
||||
tag_proper_name = render_tag(r['name'], config)
|
||||
ret[tag_proper_name] = r['tag_last_pushed'][0..9]
|
||||
end
|
||||
url = data['next']
|
||||
break if url.nil?
|
||||
end
|
||||
ret
|
||||
end
|
||||
|
||||
def get_releases(product, config, i)
|
||||
type = get_update_type(config)
|
||||
if type == 'git'
|
||||
dir = get_cache_dir('git', product, config)
|
||||
fetch_git_releases(dir, config)
|
||||
return get_releases_from_git(dir, config)
|
||||
elsif type == 'dockerhub'
|
||||
return get_releases_from_dockerhub(config)
|
||||
else
|
||||
puts "Not implemented: #{type}"
|
||||
return {}
|
||||
@@ -114,7 +134,7 @@ def get_releases(product, config, i)
|
||||
end
|
||||
|
||||
def get_update_type(config)
|
||||
for i in ['git', 'oci', 'npm']
|
||||
for i in ['git', 'oci', 'npm', 'dockerhub']
|
||||
return i if config[i]
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user