Sha256: 33551a88238a0ac9d2260431e6b9429b6f1f00152288de4f02c9dd1ee9f6b922

Contents?: true

Size: 1.92 KB

Versions: 1

Compression:

Stored size: 1.92 KB

Contents

# encoding: UTF-8

require 'colorize'
require 'tty'

options = Central::Devtools.project.container.options
version = options['build_tag'].to_s
versions = if version.nil? || version == 'latest'
             ['latest']
           else
             ['latest', version.match(/(\d+\.\d+)/)[1]].freeze
           end
name = "#{options['prefix']}/#{options['component']}"
from = "#{options['from_image']}:#{options['from_version']}"

def msg(text)
  ttable = TTY::Table.new
  ttable << [text]
  renderer = TTY::Table::Renderer::Unicode.new(ttable)
  renderer.border.style = :red
  puts renderer.render
end

def pull
  " ↓ ".colorize(:red)
end

def push
  " ↑ ".colorize(:light_red)
end

def tag
  " ✓ ".colorize(:green)
end

def spin
  " ↻ ".colorize(:cyan)
end

def sync
  " ⎘ ".colorize(:light_green)
end

def build
  " ◴ ".colorize(:light_magenta)
end

namespace :docker do
  desc "Build #{name} container from #{from}"
  task build: ['docker:build:task']

  namespace :build do
    task :task, :name, :version do |_t, _args|
      msg "#{pull} docker pull #{from.colorize(:cyan)} "
      sh "docker pull #{from}"
      msg "#{build} docker build --no-cache --force-rm -t #{name.colorize(:cyan)}:#{version.colorize(:cyan)} "
      sh "docker build --no-cache --force-rm -t #{name}:#{version} ."

      versions.each do |v|
        msg "#{tag} docker tag #{name.colorize(:yellow)}:#{version.colorize(:cyan)} #{name.colorize(:yellow)}:#{v.colorize(:cyan)} "
        sh "docker tag #{name}:#{version} #{name}:#{v}"
      end
    end
  end

  desc "Push image #{name}"
  task push: ['docker:push:task']

  namespace :push do
    task task: ['docker:build'] do
      msg "#{push} docker push #{name.colorize(:cyan)}:#{version.colorize(:cyan)} "
      sh "docker push #{name}:#{version}"

      versions.each do |v|
        msg "#{push} docker push #{name.colorize(:yellow)}:#{v.colorize(:cyan)} "
        sh "docker push #{name}:#{v}"
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
central-devtools-0.8.3 shared/tasks/docker.rake