1

我试图弄清楚如何创建一个任务(自定义命令,而不是 ant/rake 等)来执行将 git-repo 部署到某个服务器/目标(在本例中为 Heroku)。如果我要手动执行此操作,它只是git push heroku master.

我创建了一个基本的管道/阶段/作业/任务(自定义命令,在本例中为 Python 脚本)和单个代理。管道有一个材料(git repo,有一个名字)。在脚本内部,我正在打印出来os.environ.items()——它有几个变量,包括最新提交的 SHA——但没有实际存储库的 URL。

那么代理(或任务)应该如何知道要部署哪个存储库?

管道知道材料名称,我尝试传入一个环境变量,例如 ${materialName} (没有用)。我可以在任务中硬编码一个 URL,但这不是一个真正的解决方案。

Thoughtworks:GO 的文档很亮眼,但在细节上有点稀疏。我原以为这个基本的东西会被很好地记录下来,但如果是这样,我到目前为止还没有找到它。

4

1 回答 1

2

当任务在代理上运行时,它会克隆材料(配置)中指定的存储库。.git/config 没有远程 Heroku url,因此git push heroku master不起作用。

您需要先添加 Heroku 远程 url,然后才能将 git-repo 部署到 Heroku。

git remote add heroku git@heroku.com:project.git

其中 project 是您的 Heroku 项目的名称。除非您每次都执行干净的工作目录,否则只需要执行一次(在阶段设置中删除代理上工作目录中的所有文件/目录,您也可以从 UI 中看到此选项:Admin -> Piplelines -> 阶段 -> 阶段设置选项卡)在这种情况下,您可能必须在运行要部署的任务之前通过任务添加远程 URL。

完成此操作后,您应该能够使用 heroku xxxx 命令(假设您在用于部署的代理机器上安装了 Heroku Toolbelt),并且应该能够像往常一样通过git push heroku master.

于 2014-04-21T07:11:10.830 回答