· 7 years ago · Jul 18, 2018, 04:56 PM
1Warning: Permanently added the RSA host key for IP address '192.30.253.113' to the list of known hosts.
2Permission denied (publickey).
3fatal: Could not read from remote repository.
4Please make sure you have the correct access rights
5and the repository exists.
6
7FROM python:3.6
8RUN mkdir /backup
9WORKDIR /backup
10ADD . /backup/
11RUN mkdir /root/.ssh/
12ADD id_rsa /root/.ssh/id_rsa
13RUN chmod 400 /root/.ssh/id_rsa
14RUN python3 -m pip install -r requirements.txt
15
16TOKEN = os.environ['TOKEN']
17DATE = str(date.today())
18
19
20def archive(zipname, directory):
21 return shutil.make_archive(zipname, 'zip', root_dir=directory,
22 base_dir=None)
23
24
25def assume_role(role_to_assume, duration=900):
26 sts_client = boto3.client('sts')
27
28 assumed_role = sts_client.assume_role(
29 RoleArn=role_to_assume,
30 RoleSessionName='session',
31 DurationSeconds=duration
32 )
33 credentials = assumed_role['Credentials']
34 return (credentials['AccessKeyId'], credentials['SecretAccessKey'],
35 credentials['SessionToken'])
36
37
38def upload_to_s3(key, file_name, access_role):
39 access_key, secret_key, session_token = assume_role(access_role)
40 s3 = boto3.resource(
41 's3',
42 aws_access_key_id=access_key,
43 aws_secret_access_key=secret_key,
44 aws_session_token=session_token
45 )
46 s3.Bucket('zego-github-backup').put_object(
47 Key=key,
48 Body=file_name
49 )
50 print('Uploaded')
51
52
53def login_github():
54 g = Github(TOKEN)
55 org = g.get_organization("Organisation").get_repos()
56 role = "arn:aws:iam::7893729191287:role/Github_backup"
57 for repo in org:
58 repo_name = repo.name
59 key = f"{repo_name} {DATE}.zip"
60 ssh_url = repo.ssh_url
61 os.system(f"GIT_SSH_COMMAND="ssh -o StrictHostKeyChecking=no" git clone --depth 1 {ssh_url}")
62 archive(f"{repo_name} {DATE}", repo_name)
63 archived_file = open(key, 'rb')
64 upload_to_s3(key, archived_file, role)
65 shutil.rmtree(repo_name)
66 os.remove(f"{repo_name} {DATE}.zip")
67 print("Done")
68
69
70login_github()