Module: Legion::Extensions::Github::Runners::Deployments

Includes:
Helpers::Client, Helpers::Lex
Included in:
Client
Defined in:
lib/legion/extensions/github/runners/deployments.rb

Constant Summary

Constants included from Helpers::Client

Helpers::Client::CREDENTIAL_RESOLVERS

Constants included from Helpers::TokenCache

Helpers::TokenCache::TOKEN_BUFFER_SECONDS

Instance Method Summary collapse

Methods included from Helpers::Client

#connection, #gh_cli_token_output, #max_fallback_retries, #on_rate_limit, #on_scope_authorized, #on_scope_denied, #resolve_broker_app, #resolve_credential, #resolve_env, #resolve_gh_cli, #resolve_next_credential, #resolve_settings_app, #resolve_settings_delegated, #resolve_settings_pat, #resolve_vault_app, #resolve_vault_delegated, #resolve_vault_pat

Methods included from Helpers::ScopeRegistry

#credential_fingerprint, #invalidate_scope, #mark_rate_limited, #rate_limited?, #register_scope, #scope_status

Methods included from Helpers::TokenCache

#fetch_token, #mark_rate_limited, #rate_limited?, #store_token

Instance Method Details

#create_deployment(owner:, repo:, ref:, environment: 'production', description: nil, auto_merge: true, required_contexts: nil) ⇒ Object



28
29
30
31
32
33
34
35
36
# File 'lib/legion/extensions/github/runners/deployments.rb', line 28

def create_deployment(owner:, repo:, ref:, environment: 'production',
                      description: nil, auto_merge: true, required_contexts: nil, **)
  payload = { ref: ref, environment: environment, description: description,
              auto_merge: auto_merge, required_contexts: required_contexts }.compact
  response = connection(owner: owner, repo: repo, **).post(
    "/repos/#{owner}/#{repo}/deployments", payload
  )
  { result: response.body }
end

#create_deployment_status(owner:, repo:, deployment_id:, state:, description: nil, environment_url: nil, log_url: nil) ⇒ Object



53
54
55
56
57
58
59
60
61
# File 'lib/legion/extensions/github/runners/deployments.rb', line 53

def create_deployment_status(owner:, repo:, deployment_id:, state:,
                             description: nil, environment_url: nil, log_url: nil, **)
  payload = { state: state, description: description,
              environment_url: environment_url, log_url: log_url }.compact
  response = connection(owner: owner, repo: repo, **).post(
    "/repos/#{owner}/#{repo}/deployments/#{deployment_id}/statuses", payload
  )
  { result: response.body }
end

#delete_deployment(owner:, repo:, deployment_id:) ⇒ Object



38
39
40
41
42
43
# File 'lib/legion/extensions/github/runners/deployments.rb', line 38

def delete_deployment(owner:, repo:, deployment_id:, **)
  response = connection(owner: owner, repo: repo, **).delete(
    "/repos/#{owner}/#{repo}/deployments/#{deployment_id}"
  )
  { result: response.status == 204 }
end

#get_deployment(owner:, repo:, deployment_id:) ⇒ Object



21
22
23
24
25
26
# File 'lib/legion/extensions/github/runners/deployments.rb', line 21

def get_deployment(owner:, repo:, deployment_id:, **)
  response = connection(owner: owner, repo: repo, **).get(
    "/repos/#{owner}/#{repo}/deployments/#{deployment_id}"
  )
  { result: response.body }
end

#get_deployment_status(owner:, repo:, deployment_id:, status_id:) ⇒ Object



63
64
65
66
67
68
# File 'lib/legion/extensions/github/runners/deployments.rb', line 63

def get_deployment_status(owner:, repo:, deployment_id:, status_id:, **)
  response = connection(owner: owner, repo: repo, **).get(
    "/repos/#{owner}/#{repo}/deployments/#{deployment_id}/statuses/#{status_id}"
  )
  { result: response.body }
end

#list_deployment_statuses(owner:, repo:, deployment_id:, per_page: 30, page: 1) ⇒ Object



45
46
47
48
49
50
51
# File 'lib/legion/extensions/github/runners/deployments.rb', line 45

def list_deployment_statuses(owner:, repo:, deployment_id:, per_page: 30, page: 1, **)
  params = { per_page: per_page, page: page }
  response = connection(owner: owner, repo: repo, **).get(
    "/repos/#{owner}/#{repo}/deployments/#{deployment_id}/statuses", params
  )
  { result: response.body }
end

#list_deployments(owner:, repo:, environment: nil, ref: nil, per_page: 30, page: 1) ⇒ Object



12
13
14
15
16
17
18
19
# File 'lib/legion/extensions/github/runners/deployments.rb', line 12

def list_deployments(owner:, repo:, environment: nil, ref: nil, per_page: 30, page: 1, **)
  params = { environment: environment, ref: ref,
             per_page: per_page, page: page }.compact
  response = connection(owner: owner, repo: repo, **).get(
    "/repos/#{owner}/#{repo}/deployments", params
  )
  { result: response.body }
end