204 lines
3.8 KiB
Ruby
204 lines
3.8 KiB
Ruby
|
#! /usr/bin/env ruby
|
||
|
|
||
|
os_versions = {
|
||
|
alpine: [],
|
||
|
debian: [],
|
||
|
ubuntu: [],
|
||
|
}
|
||
|
|
||
|
tdlib_versions = []
|
||
|
|
||
|
image_names = []
|
||
|
|
||
|
puts 'Alpine versions? (end with empty line)'
|
||
|
loop do
|
||
|
line = gets
|
||
|
if line.nil?
|
||
|
break
|
||
|
end
|
||
|
|
||
|
version, *aliases = line.strip.split('|')
|
||
|
if version.nil?
|
||
|
break
|
||
|
end
|
||
|
if aliases.empty?
|
||
|
aliases.append "alpine-#{version}"
|
||
|
end
|
||
|
os_versions[:alpine].append({
|
||
|
version: version,
|
||
|
aliases: aliases,
|
||
|
})
|
||
|
end
|
||
|
|
||
|
puts 'Debian versions? (end with empty line)'
|
||
|
loop do
|
||
|
line = gets
|
||
|
if line.nil?
|
||
|
break
|
||
|
end
|
||
|
version, *aliases = line.strip.split('|')
|
||
|
if version.nil?
|
||
|
break
|
||
|
end
|
||
|
if aliases.empty?
|
||
|
aliases.append "debian-#{version}"
|
||
|
end
|
||
|
os_versions[:debian].append({
|
||
|
version: version,
|
||
|
aliases: aliases,
|
||
|
})
|
||
|
end
|
||
|
|
||
|
puts 'Ubuntu versions? (end with empty line)'
|
||
|
loop do
|
||
|
line = gets
|
||
|
if line.nil?
|
||
|
break
|
||
|
end
|
||
|
version, *aliases = line.strip.split('|')
|
||
|
if version.nil?
|
||
|
break
|
||
|
end
|
||
|
if aliases.empty?
|
||
|
aliases.append "ubuntu-#{version}"
|
||
|
end
|
||
|
os_versions[:ubuntu].append({
|
||
|
version: version,
|
||
|
aliases: aliases,
|
||
|
})
|
||
|
end
|
||
|
|
||
|
puts 'tdlib commits? (end with empty line; tag:XXX to insert tag name)'
|
||
|
loop do
|
||
|
line = gets
|
||
|
if line.nil?
|
||
|
break
|
||
|
end
|
||
|
commit, *aliases = line.strip.split('|')
|
||
|
if commit.nil?
|
||
|
break
|
||
|
end
|
||
|
if commit.start_with? 'tag:'
|
||
|
tag = commit[4..]
|
||
|
commit = nil
|
||
|
end
|
||
|
if aliases.empty?
|
||
|
if commit.nil?
|
||
|
aliases.append tag
|
||
|
else
|
||
|
aliases.append commit
|
||
|
end
|
||
|
end
|
||
|
tdlib_versions.append({
|
||
|
tag: tag,
|
||
|
commit: commit,
|
||
|
aliases: aliases,
|
||
|
})
|
||
|
end
|
||
|
|
||
|
puts 'Image names? (end with empty line)'
|
||
|
loop do
|
||
|
line = gets
|
||
|
if line.nil?
|
||
|
break
|
||
|
end
|
||
|
image_names.append(line.strip)
|
||
|
end
|
||
|
if image_names.empty?
|
||
|
image_names.append "tdlib"
|
||
|
end
|
||
|
|
||
|
def get_script os
|
||
|
case os
|
||
|
when :alpine
|
||
|
'./alpine/build.sh'
|
||
|
when :debian
|
||
|
'./debian/build.sh'
|
||
|
when :ubuntu
|
||
|
'./ubuntu/build.sh'
|
||
|
else
|
||
|
fail "Unknown OS: #{os}"
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def get_tdlib_ver_print tdlib_ver
|
||
|
if not tdlib_ver[:tag].nil?
|
||
|
"tags/#{tdlib_ver[:tag]}"
|
||
|
else
|
||
|
tdlib_ver[:commit]
|
||
|
end
|
||
|
end
|
||
|
|
||
|
failures = 0
|
||
|
os_versions.each_pair do |os, os_versions|
|
||
|
script = get_script os
|
||
|
os_versions.each do |os_version|
|
||
|
tdlib_versions.each do |tdlib_version|
|
||
|
puts "\x1b[94mNow building \x1b[92m#{os}:#{os_version[:version]}\x1b[94m, TDLIB: \x1b[92m#{get_tdlib_ver_print(tdlib_version)}\x1b[39m"
|
||
|
if not tdlib_version[:tag].nil?
|
||
|
success = system(
|
||
|
{"IMAGE_TAG" => "tdlib:ruby_temp_img", "SO_IMAGE_TAG" => "tdlib:ruby_temp_img_so"},
|
||
|
"./#{File.basename("./build.sh")}",
|
||
|
"-v",
|
||
|
os_version[:version],
|
||
|
"-t",
|
||
|
tdlib_version[:tag],
|
||
|
chdir: File.dirname(File.realpath(script)),
|
||
|
exception: true,
|
||
|
)
|
||
|
else
|
||
|
success = system(
|
||
|
{"IMAGE_TAG" => "tdlib:ruby_temp_img", "SO_IMAGE_TAG" => "tdlib:ruby_temp_img_so"},
|
||
|
"./#{File.basename("./build.sh")}",
|
||
|
"-v",
|
||
|
os_version[:version],
|
||
|
"-c",
|
||
|
tdlib_version[:commit],
|
||
|
chdir: File.dirname(File.realpath(script)),
|
||
|
exception: true,
|
||
|
)
|
||
|
end
|
||
|
if success
|
||
|
puts "Image build, tagging..."
|
||
|
image_names.each do |img_name|
|
||
|
os_version[:aliases].each do |os_alias|
|
||
|
tdlib_version[:aliases].each do |tdlib_alias|
|
||
|
tag = "#{img_name}:#{tdlib_alias}-#{os_alias}"
|
||
|
system(
|
||
|
"docker",
|
||
|
"tag",
|
||
|
"tdlib:ruby_temp_img",
|
||
|
tag
|
||
|
)
|
||
|
puts "\x1b[37m- \x1b[92m#{tag}\x1b[39m"
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
image_names.each do |img_name|
|
||
|
os_version[:aliases].each do |os_alias|
|
||
|
tdlib_version[:aliases].each do |tdlib_alias|
|
||
|
tag = "#{img_name}:so-#{tdlib_alias}-#{os_alias}"
|
||
|
system(
|
||
|
"docker",
|
||
|
"tag",
|
||
|
"tdlib:ruby_temp_img_so",
|
||
|
tag
|
||
|
)
|
||
|
puts "\x1b[37m- \x1b[92m#{tag}\x1b[39m"
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
system("docker", "image", "rm", "tdlib:ruby_temp_img")
|
||
|
system("docker", "image", "rm", "tdlib:ruby_temp_img_so")
|
||
|
else
|
||
|
$stderr.puts "Failed!"
|
||
|
failures += 1
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
if failures != 0
|
||
|
exit 1
|
||
|
end
|