Как клонировать исходный репозиторий в / tmp / space функции облака - PullRequest
0 голосов
/ 05 ноября 2019

Я хочу клонировать исходный репозиторий в / tmp / space функции облака. Я исследовал модуль подпроцесса. Но безуспешно. Я также изучил gitpython. Но как клонировать репо в git python. Смотрите ниже код. Но этоне работает в облачной функции. Но когда я запускаю этот код локально, он работает нормально. В облачной функции он выдает ошибку вроде: fatal: не может прочитать имя пользователя для 'https://source.developers.google.com'

def clone_gitpython():
    import git
    #path = 'C:\\Users\\anuragja\AppData\\Local\\Temp\\tmp\\'
    path='/tmp/'
    try:
        git.Git(path).clone("https://source.developers.google.com/p/dev-sandbox-2XXXX/r/poc_git")
        for x in os.listdir("/tmp"):
            print(" cloned files name")
            print(x)
    except Exception as e:
        print(str(e))

Обновить сейчас яОбновлен код, добавив ключ ssh в репозиторий исходного кода и запустив команду git ssh для клонирования, но по-прежнему не удается клонировать. Ошибка получения «ssh: подключиться к порту host.developers.google.com хоста 2022: истекло время ожидания соединения»

def hello_world(event=None, context=None):
    dir_path = os.path.dirname(os.path.realpath(__file__))
    print(dir_path)
    print("cloning into tmp")
    url = "ssh://jainXXX1XXX@gmail.com@source.developers.google.com:2022/p/dev-sandbox-XXXX/r/test_repo"
    path_temp = '/tmp'
    try:
        git.Repo.clone_from(url, path_temp , env={"GIT_SSH_COMMAND": 'ssh -i' + dir_path + '/id_rsa.pub '})
        print("cloning completed 200")
        for x in os.listdir("/tmp"):
            print("List of files")
            print(x)
    except  Exception as e:
        print(str(e))

1 Ответ

0 голосов
/ 05 ноября 2019

Мне удалось клонировать репо на локальном компьютере с этим кодом. В облачной функции я установил время соединения

def hello_world(request):

  from google.cloud import storage
  from git import Repo
  import os 
  storage_client = storage.Client()

  path_temp = '/tmp'
  path_clone = path_temp + '/clone'
  try:
    os.mkdir(path_clone)
  except OSError:
    print ("Creation of the directory failed")
  else:
    print ("Successfully created the directory ")

  url = 'ssh://vladoi@google.com@source.developers.google.com:2022/p/user/r/myrepo'




  bucket = storage_client.get_bucket('source-marian')
  blob = bucket.blob('id_rsa')
  envFile = path_temp + '/id_rsa'
  print ("Successfully reading rsa ")


  blob.download_to_filename(envFile)

  print ("Download the file from bucket")
  with open (envFile, 'r') as f :
    print(f.read())

  ssh_cmd ='ssh -i '+ envFile

  print(ssh_cmd)
  print (url)
  print (path_clone)
  print(env)


  try:
    print("start git clone")
    git.Repo.clone_from(url, path_clone , branch='master', env={'GIT_SSH_COMMAND': ssh_cmd})
    print ("end git clone")
    print("cloning completed 200")
    for x in os.listdir(path_clone):
        print("List of files")
        print(x)
  except  Exception as e:
    print(str(e))

и добавил файл require.txt, который имеет:

  gitpython
  google-cloud-storage
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...