1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161
|
# frozen_string_literal: true
module Octokit
class Client
# Methods for the Actions Secrets API
#
# @see https://developer.github.com/v3/actions/secrets/
module ActionsSecrets
# Get public key for secrets encryption
#
# @param repo [Integer, String, Hash, Repository] A GitHub repository
# @return [Hash] key_id and key
# @see https://developer.github.com/v3/actions/secrets/#get-your-public-key
def get_actions_public_key(repo)
get "#{Repository.path repo}/actions/secrets/public-key"
end
# Get public key for secrets encryption
#
# @param org [String] A GitHub organization
# @return [Hash] key_id and key
# @see https://developer.github.com/v3/actions/secrets/#get-your-public-key
def get_org_actions_public_key(org)
get "#{Organization.path org}/actions/secrets/public-key"
end
# List secrets
#
# @param repo [Integer, String, Hash, Repository] A GitHub repository
# @return [Hash] total_count and list of secrets (each item is hash with name, created_at and updated_at)
# @see https://developer.github.com/v3/actions/secrets/#list-secrets-for-a-repository
def list_actions_secrets(repo)
paginate "#{Repository.path repo}/actions/secrets" do |data, last_response|
data.secrets.concat last_response.data.secrets
end
end
# List org secrets
#
# @param org [String] A GitHub organization
# @return [Hash] total_count and list of secrets (each item is hash with name, created_at and updated_at)
# @see https://developer.github.com/v3/actions/secrets/#list-organization-secrets
def list_org_actions_secrets(org)
paginate "#{Organization.path org}/actions/secrets" do |data, last_response|
data.secrets.concat last_response.data.secrets
end
end
# Get a secret
#
# @param repo [Integer, String, Hash, Repository] A GitHub repository
# @param name [String] Name of secret
# @return [Hash] name, created_at and updated_at
# @see https://developer.github.com/v3/actions/secrets/#get-a-secret
def get_actions_secret(repo, name)
get "#{Repository.path repo}/actions/secrets/#{name}"
end
# Get an org secret
#
# @param org [String] A GitHub organization
# @param name [String] Name of secret
# @return [Hash] name, created_at and updated_at
# @see https://developer.github.com/v3/actions/secrets/#get-a-secret
def get_org_actions_secret(org, name)
get "#{Organization.path org}/actions/secrets/#{name}"
end
# Create or update secrets
#
# @param repo [Integer, String, Hash, Repository] A GitHub repository
# @param name [String] Name of secret
# @param options [Hash] encrypted_value and key_id
# @see https://developer.github.com/v3/actions/secrets/#create-or-update-a-secret-for-a-repository
def create_or_update_actions_secret(repo, name, options)
put "#{Repository.path repo}/actions/secrets/#{name}", options
end
# Create or update org secrets
#
# @param org [String] A GitHub organization
# @param name [String] Name of secret
# @param options [Hash] encrypted_value and key_id
# @see https://developer.github.com/v3/actions/secrets/#create-or-update-a-secret
def create_or_update_org_actions_secret(org, name, options)
put "#{Organization.path org}/actions/secrets/#{name}", options
end
# Delete a secret
#
# @param repo [Integer, String, Hash, Repository] A GitHub repository
# @param name [String] Name of secret
# @see https://developer.github.com/v3/actions/secrets/#delete-a-secret-from-a-repository
def delete_actions_secret(repo, name)
boolean_from_response :delete, "#{Repository.path repo}/actions/secrets/#{name}"
end
# Delete an org secret
#
# @param org [String] A GitHub organization
# @param name [String] Name of secret
# @see https://developer.github.com/v3/actions/secrets/#delete-a-secret
def delete_org_actions_secret(org, name)
boolean_from_response :delete, "#{Organization.path org}/actions/secrets/#{name}"
end
# Get environment public key for secrets encryption
#
# @param repo [Integer, String, Hash, Repository] A GitHub repository
# @param environment [String] Name of environment
# @return [Hash] key_id and key
# @see https://docs.github.com/en/rest/actions/secrets#get-an-environment-public-key
def get_actions_environment_public_key(repo, environment)
get "#{Repository.path repo}/environments/#{environment}/secrets/public-key"
end
# List environment secrets
#
# @param repo [Integer, String, Hash, Repository] A GitHub repository
# @param environment [String] Name of environment
# @return [Hash] total_count and list of secrets (each item is hash with name, created_at and updated_at)
# @see https://developer.github.com/v3/actions/secrets/#list-environment-secrets
def list_actions_environment_secrets(repo, environment)
paginate "#{Repository.path repo}/environments/#{environment}/secrets" do |data, last_response|
data.secrets.concat last_response.data.secrets
end
end
# Get an environment secret
#
# @param repo [Integer, String, Hash, Repository] A GitHub repository
# @param environment [String] Name of environment
# @param name [String] Name of secret
# @return [Hash] name, created_at and updated_at
# @see https://docs.github.com/en/rest/actions/secrets#get-an-environment-secret
def get_actions_environment_secret(repo, environment, name)
get "#{Repository.path repo}/environments/#{environment}/secrets/#{name}"
end
# Create or update an environment secret
#
# @param repo [Integer, String, Hash, Repository] A GitHub repository
# @param environment [String] Name of environment
# @param name [String] Name of secret
# @param options [Hash] encrypted_value and key_id
# @see https://docs.github.com/en/rest/actions/secrets#create-or-update-an-environment-secret
def create_or_update_actions_environment_secret(repo, environment, name, options)
put "#{Repository.path repo}/environments/#{environment}/secrets/#{name}", options
end
# Delete environment secret
# @param repo [Integer, String, Hash, Repository] A GitHub repository
# @param environment [String] Name of environment
# @param name [String] Name of secret
# @see https://docs.github.com/en/rest/actions/secrets#delete-an-environment-secret
def delete_actions_environment_secret(repo, environment, name)
boolean_from_response :delete, "#{Repository.path repo}/environments/#{environment}/secrets/#{name}"
end
end
end
end
|