因此,假设我有一个git仓库https://github.com/jc/
并且我有一个Google桶gs://acme-sales/
的位置。
有没有一种方法可以编写python程序来更新github中所做的更改,并在每次运行时将其同步到Google Cloud?
我想我们必须使用gitpython
从github链接中读取文件,但是我如何继续将文件更新到google bucket。
答案 0 :(得分:1)
如果不需要立即同步(即,以秒为单位),则可以设置cron job来定期拉回仓库的var entity = context.Set<TEntity>().SingleOrDefault(p => p.Name.Equals(match));
存档,然后上传到Google Cloud Storage。
在您的.zip
中:
app.yaml
在您的runtime: python37
中:
cron.yaml
在您的cron:
- description: "sync from git repo"
url: /tasks/sync
schedule: every 1 minute
中:
main.py
部署方式:
from urllib.request import urlopen
from zipfile import ZipFile
from flask import Flask
from google.cloud import storage
app = Flask(__name__)
client = storage.Client(project='your-project-name')
bucket = client.get_bucket('your-bucket-name')
# Path to the archive of your repository's master branch
repo = 'https://github.com/your-username/your-repo-name/archive/master.zip'
@app.route('/tasks/sync')
def sync():
with ZipFile(BytesIO(urlopen(repo).read())) as zipfile:
for filename in zipfile.namelist():
blob = storage.Blob(filename, bucket)
blob.upload_from_string(zipfile.read(filename))
答案 1 :(得分:0)
添加到上一个答案。
您可以选择"Automatically Mirror from GitHub or Bitbucket",它是自描述的。或者,您可以直接将"Automatic Build Trigger"与自定义build steps结合使用来执行某些操作。
答案 2 :(得分:0)
我建议您使用Google Cloud Build。它可以让您同步您的存储库,并使用 gsutil 自动更新存储,即each commits上的gs://acme-sales
到GitHub存储库:
steps:
- name: gcr.io/cloud-builders/gsutil
args: ['cp', '/workspace', 'gs://acme-sales']
您可以使用以下链接,从connecting your repository(即https://github.com/jc/<repo_name>
)开始在GitHub上使用Google Cloud Build: