Python 如何在云功能的/tmp/space中克隆源存储库

Python 如何在云功能的/tmp/space中克隆源存储库,python,git,github,version-control,google-cloud-functions,Python,Git,Github,Version Control,Google Cloud Functions,我想将源存储库克隆到云函数的/tmp/space中。我已经探索了子流程模块。但是没有成功。我也探索了gitpython。但是如何在git python中克隆repo。请参阅下面的代码。但是它在云函数中不起作用。但是当我在本地运行此代码时,它工作正常。在云函数中,它给出了错误like:fatal:无法读取“”的用户名 更新 现在,我通过在源repo上添加ssh密钥并运行git ssh命令进行克隆来更新代码,但仍然无法克隆。获取错误“ssh:connect to host source.develo

我想将源存储库克隆到云函数的/tmp/space中。我已经探索了子流程模块。但是没有成功。我也探索了gitpython。但是如何在git python中克隆repo。请参阅下面的代码。但是它在云函数中不起作用。但是当我在本地运行此代码时,它工作正常。在云函数中,它给出了错误like:fatal:无法读取“”的用户名

更新 现在,我通过在源repo上添加ssh密钥并运行git ssh命令进行克隆来更新代码,但仍然无法克隆。获取错误“ssh:connect to host source.developers.google.com端口2022:Connection timeout "


我可以用这个代码在本地机器上克隆我的回购协议。在云功能上,我的连接时间已到

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://v@.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))
并添加了一个requirements.txt,其中包含:

  gitpython
  google-cloud-storage

这个代码在本地工作吗?你说它不起作用是什么意思?请澄清您的问题。这听起来像是一个问题:为什么您需要在云函数中克隆git repo?@DustinIngram:这个想法是克隆sourcerepo分支,其中有多个sql查询需要在bigquery上运行。Cloud composer选项成本很高。探索Cloudfunction以从克隆到/tmp或I中运行sql查询我陷入XY问题困境当我尝试克隆源repo时,我收到错误:“ssh:connect to host Source.developers.google.com端口2022:连接超时”。是否有任何方法可以从云函数打开源存储库的连接。如果要使用ssh进行克隆,您需要在本地计算机上使用ssh进行身份验证。如何向云函数注册私有ssh密钥?这是我无法理解的。我试着在本地机器上创建ssh密钥,注册public,从云存储复制private on cloud函数,并运行clone命令。我仍然有连接超时。如果我在本地运行代码,它就会工作。我的情况也是如此。在本地但不在云函数上运行
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://v@.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))
  gitpython
  google-cloud-storage