我正试图弄清楚如何创建一个任务(自定义命令,而不是ant/rake等),以将git repo部署到某个服务器/目标(在本例中为Heroku)。如果我手动执行此操作,它只是git push heroku master
。
我已经创建了一个基本的pipeline/stage/job/task(自定义命令,在本例中是Python脚本)和单个代理。管道有一个材料(git-reo,带名称)。在脚本中,我打印出os.environ.items()
——它有几个变量,包括最近提交的SHA——但没有实际存储库的URL。
那么,代理(或任务)应该如何知道要部署什么存储库呢?
管道知道材质名称,我曾尝试传递一个环境变量,如${materialName}(但不起作用)。我可以在任务中硬编码URL,但这不是一个真正的解决方案。
Thoughtworks:GO的文档很有光泽,但在细节上有点稀疏。我本以为这种基本的东西会被很好地记录下来,但如果是这样,我到目前为止还没有找到。
当任务在代理上运行时,它会克隆材料(配置)中指定的存储库。git/config不会有远程Heroku url,因此git push heroku master
也不起作用。
在将git-reo部署到Heroku之前,您需要添加Heroku远程url。
git remote add heroku git@heroku.com:project.git
其中project是您的Heroku项目的名称。除非您每次都执行一个干净的工作目录,否则只需要执行一次(在"阶段设置"中,删除代理上工作目录中的所有文件/目录,您也可以从UI中看到此选项:"管理"->"管道"->"阶段"->"舞台设置"选项卡),在这种情况下,您可能必须在运行任务进行部署之前通过任务添加远程url。
完成后,您应该能够使用heroku xxxx命令(假设您在用于部署的代理机器上安装了heroku Toolbelt),并且应该能够像往常一样通过git push heroku master
推送到heroku。