consolidator

Форк
0
/
makeArc.py 
50 строк · 1.9 Кб
1
import os
2
import zipfile
3
import yaml
4
import shutil
5
import paramiko
6
import getpass
7

8
repoHost="vsys01775"
9
repoUser="blokhin_sn"
10
repoPath="/home/blokhin_sn/repo/"
11
metafile="metadata.yml"
12

13
if __name__=="__main__":
14
    try:
15
        print("make distributive archive")
16
        dist_path = os.path.dirname(os.path.realpath(__file__))+"\\dist"
17
        with open(metafile,mode="r",encoding="UTF-8") as f:
18
            metadata = yaml.load(f, Loader=yaml.FullLoader)
19
            version = metadata["Version"]
20
            productName = metadata["ProductName"]
21
            zipName = f"{dist_path}\\{productName}-v.{version}.zip"
22
            print(f"zip name: {zipName}")
23
            zf = zipfile.ZipFile(zipName, "w",zipfile.ZIP_DEFLATED)
24
            for dirname, subdirs, files in os.walk(f"{dist_path}\\{productName}"):
25
                zf.write(dirname,dirname.replace(f"{dist_path}\\",""))
26
                for filename in files:
27
                    itemName=os.path.join(dirname, filename)
28
                    arcName = itemName.replace(f"{dist_path}\\","")
29
                    zf.write(itemName,arcName)
30
                    print(arcName)
31
            zf.close()
32
        shutil.copyfile(metafile,f"{dist_path}\\{metafile}")
33
        print("local copy done")
34
        print("copy distributive to repo")
35
        ssh = paramiko.SSHClient()
36
        ssh.load_host_keys(os.path.expanduser(os.path.join("~", ".ssh", "known_hosts")))
37
        passw = getpass.getpass(f"Пароль {repoUser}@{repoHost}:")
38
        ssh.connect(repoHost,username=repoUser,password=passw)
39
        print(f"{repoHost} connected")
40
        sftp = ssh.open_sftp()
41
        remotepath=f"{repoPath}{productName}-v.{version}.zip"
42
        print("sftp opened")
43
        sftp.put(zipName,remotepath)
44
        sftp.put(metafile,f"{repoPath}{metafile}")
45
        print("files puted")
46
        sftp.close()
47
        ssh.close()
48
        print("connection closed")
49
    except Exception as exp:
50
        print(f"archive error: {exp}")

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.