lib/vidar/cli.rb in vidar-0.1.5 vs lib/vidar/cli.rb in vidar-0.1.6

- old
+ new

@@ -12,65 +12,65 @@ Run.docker_compose("run runner #{options[:command]}") || exit(1) end desc "pull", "Pulls existing docker images to leverage docker caching" def pull - Log.info "Pulling #{Config.get(:image)} tags" - Run.docker "pull #{Config.get(:image)}:builder-#{Config.get(:current_branch)} 2> /dev/null || true" - Run.docker "pull #{Config.get(:image)}:builder 2> /dev/null || true" - Run.docker "pull #{Config.get(:image)}:release 2> /dev/null || true" + Log.info "Pulling #{Config.get!(:image)} tags" + Run.docker "pull #{Config.get!(:image)}:builder-#{Config.get!(:current_branch)} 2> /dev/null || true" + Run.docker "pull #{Config.get!(:image)}:builder 2> /dev/null || true" + Run.docker "pull #{Config.get!(:image)}:release 2> /dev/null || true" Log.info "Docker images:" puts Run.docker "images" end desc "build", "Builds docker stages" def build - Log.info "Building #{Config.get(:image)}:builder-#{Config.get(:current_branch)}" + Log.info "Building #{Config.get!(:image)}:builder-#{Config.get!(:current_branch)}" Run.docker_compose "build builder" - Log.info "Building #{Config.get(:image)}:runner-#{Config.get(:current_branch)}" + Log.info "Building #{Config.get!(:image)}:runner-#{Config.get!(:current_branch)}" Run.docker_compose "build runner" - Log.info "Building #{Config.get(:image)}:release" + Log.info "Building #{Config.get!(:image)}:release" Run.docker_compose "build release" end desc "cache", "Caches intermediate docker stages" def cache - Log.info "Publish #{Config.get(:image)}:builder-#{Config.get(:current_branch)}" - Run.docker "push #{Config.get(:image)}:builder-#{Config.get(:current_branch)}" + Log.info "Publish #{Config.get!(:image)}:builder-#{Config.get!(:current_branch)}" + Run.docker "push #{Config.get!(:image)}:builder-#{Config.get!(:current_branch)}" end desc "publish", "Publishes docker images on docker registry" def publish - Log.info "Publish #{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)}" + Log.info "Publish #{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)}" - return unless Config.get(:current_branch) == Config.get(:default_branch) + return unless Config.get!(:current_branch) == Config.get!(:default_branch) - Log.info "Publish #{Config.get(:image)}:builder" - Run.docker "tag #{Config.get(:image)}:builder-#{Config.get(:current_branch)} #{Config.get(:image)}:builder" - Run.docker "push #{Config.get(:image)}:builder" + Log.info "Publish #{Config.get!(:image)}:builder" + Run.docker "tag #{Config.get!(:image)}:builder-#{Config.get!(:current_branch)} #{Config.get!(:image)}:builder" + Run.docker "push #{Config.get!(:image)}:builder" - Log.info "Publish #{Config.get(:image)}:latest" - 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 "Publish #{Config.get!(:image)}:latest" + 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" end desc "deploy", "Performs k8s deployment with deploy hook" method_option :revision, default: nil def deploy - revision = options[:revision] || Config.get(:revision) - Log.info "Current cluster: #{Config.get(:cluster)} ###" + revision = options[:revision] || Config.get!(:revision) + Log.info "Current cluster: #{Config.get!(:cluster)} ###" Log.info "Set kubectl image..." - Run.kubectl "set image deployments,cronjobs *=#{Config.get(:image)}:#{revision} --all" + Run.kubectl "set image deployments,cronjobs *=#{Config.get!(:image)}:#{revision} --all" Log.info "Looking for deploy hook..." - template_name, error, status = Open3.capture3 "kubectl get cronjob deploy-hook-template -n #{Config.get(:namespace)} -o name --ignore-not-found=true" + template_name, error, status = Open3.capture3 "kubectl get cronjob deploy-hook-template -n #{Config.get!(:namespace)} -o name --ignore-not-found=true" if status.success? if template_name.to_s.empty? Log.info "No deploy hook found" else @@ -84,41 +84,43 @@ end end desc "release", "Builds and publishes docker images" def release - Log.info "Release #{options[:image]}:#{options[:revision]}" + Log.info "Release #{options[:image]}:#{options[:revision]}" pull build cache publish end desc "monitor_deploy_status", "Checks is deployment has finished and sends post-deploy notification" def monitor_deploy_status - Log.info "Current cluster: #{Config.get(:cluster)} ###" - Log.info "Checking is all containers on #{Config.get(:cluster)} in #{Config.get(:namespace)} are ready..." + Log.info "Current cluster: #{Config.get!(:cluster)} ###" + Log.info "Checking is all containers on #{Config.get!(:cluster)} in #{Config.get!(:namespace)} are ready..." sleep(2) error = false tries = 0 max_tries = 30 - until K8s::Pods.new(Config.get(:namespace)).all_ready? + until K8s::Pods.new(Config.get!(:namespace)).all_ready? tries += 1 sleep(10) if tries > max_tries error = true break end end + return unless Config.get(:slack_webhook_url) + slack_notification = SlackNotification.new( - webhook_url: Config.get(:slack_webhook_url), - github: Config.get(:github), - revision: Config.get(:revision), - revision_name: Config.get(:revision_name), - cluster: Config.get(:cluster), - cluster_url: Config.get(:cluster_url) + webhook_url: Config.get!(:slack_webhook_url), + github: Config.get!(:github), + revision: Config.get!(:revision), + revision_name: Config.get!(:revision_name), + cluster: Config.get!(:cluster), + cluster_url: Config.get!(:cluster_url) ) if error Log.error "ERROR: Some of containers are not ready." slack_notification.error