class Object
Public Instance Methods
deployment_status(deployments_info, sha)
click to toggle source
# File lib/st.rb, line 39 def deployment_status(deployments_info, sha) deployment_info = deployments_info.find { |di| di.revision.git_hub_location.commit_id == sha } deployment_status = deployment_info ? deployment_info.status : 'None' end
get_commit(sha)
click to toggle source
# File lib/st.rb, line 65 def get_commit(sha) repo='backend' owner='Studytube' filepath = "#{ENV['HOME']}/.studytube/githubtoken" token = File.read(filepath).chomp url = "https://api.github.com/repos/#{owner}/#{repo}/git/commits/#{sha}" str = URI.open(url, 'Authorization' => "Token #{token}").read JSON.parse(str) end
get_deployments_info()
click to toggle source
# File lib/st.rb, line 54 def get_deployments_info aws = Aws::CodeDeploy::Client.new res = aws.list_deployments( application_name: 'backend', deployment_group_name: 'production', ) aws.batch_get_deployments(deployment_ids: res.deployments).deployments_info end
get_ppls(branch)
click to toggle source
# File lib/st.rb, line 44 def get_ppls(branch) root = 'https://studytube.semaphoreci.com/api/v1alpha' project_id = '42370de0-9568-4c26-87ad-559b2294c3c1' url = "#{root}/pipelines?project_id=#{project_id}&branch_name=#{branch}" filepath = "#{ENV['HOME']}/.studytube/semaphorecitoken" token = File.read(filepath).chomp str = URI.open(url, 'Authorization' => "Token #{token}").read JSON.parse(str) end
main()
click to toggle source
Usage: st [-sha] [branch]
# File lib/st.rb, line 8 def main shaflag = !!ARGV.delete('-sha') branch = ARGV[0] || 'master' ppls = get_ppls(branch) ppls = ppls.select { |ppl| ppl['name'] == 'Backend application' } ppls = ppls.uniq { |ppl| ppl['commit_sha'] } deployments_info = get_deployments_info ppls.each do |ppl| sha = ppl['commit_sha'] state = ppl['state'] result = ppl['result'] || 'None' status = deployment_status(deployments_info, sha) if shaflag msg = sha printf("%s\t%s\t%-16s%s\n", state, result, status, msg) else commit = get_commit(sha) msg = commit['message'].split("\n")[0] author = commit['author']['name'].split[0] printf("%s\t%s\t%-16s%s\t%s\n", state, result, status, author, msg) end rescue Errno::EPIPE break end end