如何定义Fabric的主机以推送到GitHub?

如何定义Fabric的主机以推送到GitHub?

问题描述:

原问题

我有一些python脚本,它们一直在使用Amazon S3上传脚本中的Selenium测试后执行的屏幕截图。如何定义Fabric的主机以推送到GitHub?

现在我们从S3转移到使用GitHub,所以我找到了GitPython,但看不到如何使用它来实际提交本地repo并推送到服务器。

我的脚本在工作区中建立了一个类似于\images\228M\View_Use_Case\1.png的目录结构,当上传到S3时,它是一个简单的过程;

for root, dirs, files in os.walk(imagesPath): 
    for name in files: 
     filename = os.path.join(root, name) 
     k = bucket.new_key('{0}/{1}/{2}'.format(revisionNumber, images_process, name)) # returns a new key object 
     k.set_contents_from_filename(filename, policy='public-read') # opens local file buffers to key on S3 
     k.set_metadata('Content-Type', 'image/png') 

是否有类似的这样的东西还是有一些简单的在一个GitPython庆典git add images类型的命令,我已经完全错过?

更新与面料

所以我已经安装上布kracekumar的建议,但我不能找到如何定义(GitHub的)主机文档。 我的脚本非常简单,只需尝试上传即可使用;

from __future__ import with_statement 
from fabric.api import * 
from fabric.contrib.console import confirm 
import os 

def git_server(): 
    env.hosts = ['github.com'] 
    env.user = 'git' 
    env.passowrd = 'password' 

def test(): 
    process = 'View Employee' 
    os.chdir('\Work\BPTRTI\main\employer_toolkit') 
    with cd('\Work\BPTRTI\main\employer_toolkit'): 
     result = local('ant viewEmployee_git') 
    if result.failed and not confirm("Tests failed. Continue anyway?"): 
     abort("Aborting at user request.") 

def deploy(): 
    process = "View Employee" 
    os.chdir('\Documents and Settings\markw\GitTest') 
    with cd('\Documents and Settings\markw\GitTest'): 
     local('git add images') 
     local('git commit -m "Latest Selenium screenshots for %s"' % (process)) 
     local('git push -u origin master') 

def viewEmployee(): 
    #test() 
    deploy() 

It Works \ o/Hurray。

+0

如果你创建了一个仓库和'git remote'细节,并创建一个具有'git push -u origin master'结构的func,它将只需要输入密码。 – Kracekumar 2012-04-22 09:01:48

你应该看织物。 http://docs.fabfile.org/en/1.4.1/index.html。自动化服务器部署工具。我一直在使用这一段时间,它工作得很好。

这里是我的,它使用它的应用程序之一,https://github.com/kracekumar/sachintweets/blob/master/fabfile.py

+0

听起来不错 - 谢谢。我一直没有用Python做过很长时间,只是昨天才开始使用GitHub,所以我敢肯定他们有很多,我还没有找到:) – 2012-04-19 11:18:08

+0

这些是其他部署工具,但它们使用Ruby和其他语言。这是pythonic !!!! – Kracekumar 2012-04-19 11:20:39

+0

它需要一些阅读,但最终Fabric已将我的更新推送到GitHub。冠军:D – 2012-04-20 11:25:01

看起来你可以这样做:

index = repo.index 
index.add(['images']) 
new_commit = index.commit("my commit message") 

然后,假设你有产地为默认的远程:

origin = repo.remotes.origin 
origin.push() 
+0

谢谢。我在索引对象文档中看到了这一点,但看不到任何提及推送提交的信息。我不确定这是否是GitPython无法完成的事情。我可能必须让Fabric来完成这一部分。 – 2012-04-19 14:41:46

+0

啊。我错过了那一点。编辑添加推送到原点 – Glenn 2012-04-21 00:05:11