将Git存储库同步到Google Cloud

时间:2018-09-05 18:22:05

标签: python google-cloud-platform google-cloud-storage gitpython

因此,假设我有一个git仓库https://github.com/jc/ 并且我有一个Google桶gs://acme-sales/的位置。

有没有一种方法可以编写python程序来更新github中所做的更改,并在每次运行时将其同步到Google Cloud?

我想我们必须使用gitpython从github链接中读取文件,但是我如何继续将文件更新到google bucket。

3 个答案:

答案 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:

  

https://github.com/apps/google-cloud-build

Automatically build containers or non-container artifacts on commits to your GitHub repository.