Skip to content

Instantly share code, notes, and snippets.

@karimelmel
Last active October 30, 2023 12:40
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save karimelmel/55bffa804cdd5399c68e3122aa44e654 to your computer and use it in GitHub Desktop.
Save karimelmel/55bffa804cdd5399c68e3122aa44e654 to your computer and use it in GitHub Desktop.
import requests
import json
import os
def add_secrets_to_environment(github_token, org_or_user, repo_name, environments_file):
with open(environments_file, "r") as json_file:
data = json.load(json_file)
repositories = data.get("repositories", [])
for repository in repositories:
repo_name = repository.get("repo_name")
environments = repository.get("environments", [])
for environment in environments:
environment_name = environment.get("name")
secrets = environment.get("secrets", [])
base_url = f"https://api.github.com/repos/{org_or_user}/{repo_name}/environments/{environment_name}/secrets"
headers = {
"Authorization": f"Bearer {github_token}",
"Accept": "application/vnd.github.v3+json",
"X-GitHub-Api-Version": "2022-11-28",
}
for secret in secrets:
secret_name = secret.get("secret_name")
secret_value = secret.get("secret_value")
secret_data = {
"encrypted_value": secret_value,
"key_id": "repo:123456:secrets:secret1" # Replace with the appropriate key ID
}
response = requests.put(f"{base_url}/{secret_name}", headers=headers, json=secret_data)
if response.status_code == 204:
print(f"Secret '{secret_name}' updated in environment '{environment_name}' of repository '{repo_name}'.")
else:
print(f"Failed to update secret '{secret_name}' in environment '{environment_name}' of repository '{repo_name}'. Status code: {response.status_code}")
print(response.text)
if __name__ == "__main":
github_token = os.environ.get("GITHUB_TOKEN")
org_or_user = os.environ.get("ORG_OR_USER")
environments_file = os.environ.get("ENVIRONMENTS_FILE")
if not github_token or not org_or_user or not environments_file:
raise ValueError("One or more required environment variables are not set.")
add_secrets_to_environment(github_token, org_or_user, repo_name, environments_file)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment