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