tdlib Docker builds
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

204 lines
3.8 KiB

3 years ago
#! /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