mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-09-20 00:30:49 +00:00
Add docker container for AWS lambda
This commit is contained in:
parent
a32b52b20e
commit
ccf6210eb1
13
tests/ci/team_keys_lambda/Dockerfile
Normal file
13
tests/ci/team_keys_lambda/Dockerfile
Normal file
@ -0,0 +1,13 @@
|
||||
FROM public.ecr.aws/lambda/python:3.9
|
||||
|
||||
# Install the function's dependencies using file requirements.txt
|
||||
# from your project folder.
|
||||
|
||||
COPY requirements.txt .
|
||||
RUN pip3 install -r requirements.txt --target "${LAMBDA_TASK_ROOT}"
|
||||
|
||||
# Copy function code
|
||||
COPY app.py ${LAMBDA_TASK_ROOT}
|
||||
|
||||
# Set the CMD to your handler (could also be done as a parameter override outside of the Dockerfile)
|
||||
CMD [ "app.handler" ]
|
70
tests/ci/team_keys_lambda/app.py
Normal file
70
tests/ci/team_keys_lambda/app.py
Normal file
@ -0,0 +1,70 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import requests
|
||||
import argparse
|
||||
import json
|
||||
|
||||
|
||||
def get_org_team_members(token: str, org: str, team_slug: str) -> tuple:
|
||||
headers = {
|
||||
"Authorization": f"token {token}",
|
||||
"Accept": "application/vnd.github.v3+json",
|
||||
}
|
||||
response = requests.get(
|
||||
f"https://api.github.com/orgs/{org}/teams/{team_slug}/members", headers=headers
|
||||
)
|
||||
response.raise_for_status()
|
||||
data = response.json()
|
||||
return tuple(m["login"] for m in data)
|
||||
|
||||
|
||||
def get_members_keys(members: tuple) -> str:
|
||||
keys = ""
|
||||
for m in members:
|
||||
response = requests.get(
|
||||
f"https://github.com/{m}.keys",
|
||||
)
|
||||
response.raise_for_status()
|
||||
keys += f"# {m}\n{response.text}"
|
||||
return keys
|
||||
|
||||
|
||||
def get_token_from_aws() -> str:
|
||||
import boto3
|
||||
|
||||
secret_name = "clickhouse_robot_token"
|
||||
session = boto3.session.Session()
|
||||
client = session.client(
|
||||
service_name="secretsmanager",
|
||||
)
|
||||
get_secret_value_response = client.get_secret_value(SecretId=secret_name)
|
||||
data = json.loads(get_secret_value_response["SecretString"])
|
||||
return data["clickhouse_robot_token"]
|
||||
|
||||
|
||||
def main(token: str, org: str, team_slug: str) -> str:
|
||||
members = get_org_team_members(token, org, team_slug)
|
||||
keys = get_members_keys(members)
|
||||
|
||||
return keys
|
||||
|
||||
|
||||
def handler(event, context):
|
||||
token = get_token_from_aws()
|
||||
return main(token, "ClickHouse", "core")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
parser = argparse.ArgumentParser(
|
||||
description="Get the public SSH keys for members of given org and team"
|
||||
)
|
||||
parser.add_argument("--token", required=True, help="Github PAT")
|
||||
parser.add_argument(
|
||||
"--organization", help="GitHub organization name", default="ClickHouse"
|
||||
)
|
||||
parser.add_argument("--team", help="GitHub team name", default="core")
|
||||
|
||||
args = parser.parse_args()
|
||||
keys = main(args.token, args.organization, args.team)
|
||||
|
||||
print(f"Just shoing off the keys:\n{keys}")
|
1
tests/ci/team_keys_lambda/requirements.txt
Normal file
1
tests/ci/team_keys_lambda/requirements.txt
Normal file
@ -0,0 +1 @@
|
||||
requests
|
Loading…
Reference in New Issue
Block a user