1

这是场景:

我可以通过 SSH 连接到我的 Chef-Server 。但我无法通过SSH 连接到任何 Chef-Clients。所以这就是我的工作方式:我有一个工作站来更改或创建角色。所有 chef-clients 都作为守护进程运行,因此当它们醒来时,它们会注意到状态变化并开始自我更新。

现在,我需要在这些客户端上配置代码部署。我在想我可以为此使用应用程序说明书,并使用我的工作站向角色添加食谱。但是,每次厨师客户醒来并发现修订更改时,这不会导致部署吗?我想要一种 On Demand 类型的部署:我只想在代码准备好部署时进行部署,而不是在此之前进行任何其他提交。

我该如何做到这一点?

4

2 回答 2

1

几个问题

您的代码部署何时准备就绪?你怎么知道的?如果这是一个可重复的过程,你能不把它编码成食谱吗?如果这不是一个可重复的过程,您需要将其设为一个,以便它可以自动化

IE 运行黄瓜测试,如果它们都通过了,那么部署其他什么都不做?

我们从 Artifactory 提供数据,并使用 web api 检查我们可用的最新安装程序。如果它与之前安装的相同(通过检查/创建注册表项来完成),我们会告诉用户,这个版本已经安装,所以我们跳过。如果不一样我们安装。现在我知道这不是完全相同的场景,但我觉得这里需要一些自定义代码。

根据代码的状态,或者利用数据包值来表示 install=true 或 false。当您要部署时,您将在数据包中更新项目 a 的安装项,其余时间将其设置为 false。只有当值为真时,配方才会继续?

于 2012-11-11T15:20:09.413 回答
0

为什么不建立一个随时可以部署 HEAD 的分支?仅当您的代码准备好发布到世界时才推送到此分支。这样您就不必担心厨师会同步您的存储库的中间、不稳定状态。当然,您仍然必须等待客户端唤醒并同步才能看到您的更改,因此如果延迟是一个问题,这将不起作用。

于 2013-09-20T21:36:31.677 回答