lib/vidar/cli.rb in vidar-0.11.0 vs lib/vidar/cli.rb in vidar-0.12.0

- old
+ new

@@ -4,58 +4,64 @@ def self.exit_on_failure? true end - desc "exec", "Run any command in given docker-compose target, default target is `runner`" + desc "exec", "Run any command in given docker-compose target, default target is `base`" option :command - option :target, default: "runner" + option :target, required: false def exec - Run.docker_compose("run runner #{options[:command]}") || exit(1) + target = options[:target] || Config.get!(:base_stage_name) + Run.docker_compose("run #{target} #{options[:command]}") || exit(1) end desc "pull", "Pull existing docker images to leverage docker caching" def pull Log.info "Pulling #{Config.get!(:image)} tags" - Run.docker "pull #{Config.get!(:image)}:runner-#{Config.get!(:current_branch)} 2> /dev/null || true" - Run.docker "pull #{Config.get!(:image)}:runner-#{Config.get!(:default_branch)} 2> /dev/null || true" - Run.docker "pull #{Config.get!(:image)}:runner 2> /dev/null || true" - Run.docker "pull #{Config.get!(:image)}:release 2> /dev/null || true" + Run.docker "pull #{Config.get!(:image)}:#{Config.get!(:base_stage_name)}-#{Config.get!(:current_branch)} 2> /dev/null || true" + Run.docker "pull #{Config.get!(:image)}:#{Config.get!(:base_stage_name)}-#{Config.get!(:default_branch)} 2> /dev/null || true" + Run.docker "pull #{Config.get!(:image)}:#{Config.get!(:base_stage_name)} 2> /dev/null || true" + Run.docker "pull #{Config.get!(:image)}:#{Config.get!(:release_stage_name)} 2> /dev/null || true" Log.info "Docker images:" Run.docker("images") end desc "build", "Build docker stages" def build - Log.info "Building runner image" - Run.docker_compose "build runner" + Log.info "Building #{Config.get!(:base_stage_name)} image" + Run.docker_compose "build #{Config.get!(:base_stage_name)}" - Log.info "Building release image" - Run.docker_compose "build release" + Log.info "Building #{Config.get!(:release_stage_name)} image" + Run.docker_compose "build #{Config.get!(:release_stage_name)}" end desc "cache", "Caches intermediate docker stages" def cache - Log.info "Publishing runner image" - Run.docker "push #{Config.get!(:image)}:runner-#{Config.get!(:current_branch)}" + Log.info "Publishing #{Config.get!(:base_stage_name)} image" + Run.docker "push #{Config.get!(:image)}:#{Config.get!(:base_stage_name)}-#{Config.get!(:current_branch)}" end desc "publish", "Publish docker images on docker registry" def publish - Log.info "Publishing #{Config.get!(:image)}:#{Config.get!(:revision)}" - Run.docker "tag #{Config.get!(:image)}:release #{Config.get!(:image)}:#{Config.get!(:revision)}" - Run.docker "push #{Config.get!(:image)}:#{Config.get!(:revision)}" + base_image_tag = "#{Config.get!(:image)}:#{Config.get!(:base_stage_name)}" + revision_image_tag = "#{Config.get!(:image)}:#{Config.get!(:revision)}" + release_image_tag = "#{Config.get!(:image)}:#{Config.get!(:release_stage_name)}" + latest_image_tag = "#{Config.get!(:image)}:latest}" - return unless Config.get!(:current_branch) == Config.get!(:default_branch) + Log.info "Publishing #{revision_image_tag}" + Run.docker "tag #{release_image_tag} #{revision_image_tag}" + Run.docker "push #{revision_image_tag}" - Log.info "Publishing #{Config.get!(:image)}:runner" - Run.docker "tag #{Config.get!(:image)}:runner-#{Config.get!(:current_branch)} #{Config.get!(:image)}:runner" - Run.docker "push #{Config.get!(:image)}:runner" + return unless Config.default_branch? - Log.info "Publishing #{Config.get!(:image)}:release" - Run.docker "tag #{Config.get!(:image)}:release #{Config.get!(:image)}:latest" - Run.docker "push #{Config.get!(:image)}:release" - Run.docker "push #{Config.get!(:image)}:latest" + Log.info "Publishing #{base_image_tag}" + Run.docker "tag #{base_image_tag}-#{Config.get!(:current_branch)} #{base_image_tag}" + Run.docker "push #{base_image_tag}" + + Log.info "Publishing #{release_image_tag}" + Run.docker "tag #{release_image_tag} #{latest_image_tag}" + Run.docker "push #{release_image_tag}" + Run.docker "push #{latest_image_tag}" end desc "deploy", "Perform k8s deployment with deploy hook" method_option :revision, required: false def deploy