我试图找出如何创建任务(自定义命令,而不是ant / rake等)来执行git-repo部署到某个服务器/目标(在本例中为Heroku)。如果我是手动执行此操作,那只是git push heroku master
。
我已经创建了一个基本的管道/阶段/作业/任务(custom-command,在本例中是一个Python脚本)和单个代理。管道有一个材料(git repo,有一个名字)。在脚本中,我打印出os.environ.items()
- 它有几个变量,包括最新提交的SHA - 但没有实际存储库的URL。
那么代理(或任务)应该如何知道要部署哪个存储库?
管道知道材料名称,并且我尝试传入一个环境变量,例如$ {materialName}(它没有工作)。我可以在任务中对URL进行硬编码,但这不是真正的解决方案。
Thoughtworks:GO的文档很闪亮,但细节上有点稀疏。我已经想到这个基本的东西会有很好的记录,但如果是这样的话,到目前为止我还没有找到它。
答案 0 :(得分:1)
当任务在代理上运行时,它会克隆材料(config)中指定的存储库。 .git / config不会有远程Heroku url,因此git push heroku master
不起作用。
您需要先添加Heroku远程URL,然后才能将git-repo部署到Heroku。
git remote add heroku git@heroku.com:project.git
其中project是Heroku项目的名称。除非您每次都执行clean working directory,否则只需要执行一次(在Stage Settings中删除代理上工作目录中的所有文件/目录,您也可以从UI中看到此选项:Admin - > Piplelines - > Stages - > Stage Settings标签)在这种情况下,您可能需要在运行要部署的任务之前通过任务添加远程URL。
一旦你这样做了,你应该能够使用heroku xxxx命令(假设你在用于部署的代理机器上安装了Heroku Toolbelt),并且应该能够像往常一样推送到Heroku git push heroku master
。