Jenkins 与詹金斯和流浪汉的CI/CD

Jenkins 与詹金斯和流浪汉的CI/CD,jenkins,vagrant,puppet,Jenkins,Vagrant,Puppet,我想构建一个Jenkins服务器,在Vagrant上运行我的傀儡代码测试。我发现的问题是,我们已经将服务器作为虚拟机运行,无论是在vmWare还是AWS中,Vagrant都不能作为另一个虚拟机工作 有人知道如何为我的puppet代码创建一个测试平台吗。我想在节点上测试清单的部署,即如果我部署类web服务器或对其进行更改,我想检查它是否影响/中断其他类的部署 其想法是迭代所有类/角色,查看部署是否通过。我想让它自动化,独立于我们的工程师。目前,我们正在使用vagrant up运行手动测试,但是有太

我想构建一个Jenkins服务器,在Vagrant上运行我的傀儡代码测试。我发现的问题是,我们已经将服务器作为虚拟机运行,无论是在vmWare还是AWS中,Vagrant都不能作为另一个虚拟机工作

有人知道如何为我的puppet代码创建一个测试平台吗。我想在节点上测试清单的部署,即如果我部署
类web服务器
或对其进行更改,我想检查它是否影响/中断其他类的部署

其想法是迭代所有类/角色,查看部署是否通过。我想让它自动化,独立于我们的工程师。目前,我们正在使用
vagrant up
运行手动测试,但是有太多的角色无法手动完成

有什么办法可以解决这个问题吗?

你可以使用或作为流浪汉

对于AWS提供程序,您需要设置RSync以使您的环境进入新启动的实例

如果您的Vagrant脚本是健壮的,那么您可以对工作站上的本地部署和CI服务器上的AWS/Docker部署使用相同的脚本

做这些技术有缺点,在Docker的情况下,您被限制在Jenkins服务器运行的同一个内核上,在AWS的情况下,您将招致额外的成本。然而,对于AWS,您不需要为Jenkins服务器分配那么多的资源,因此您甚至可以通过这种方式节省资金,因为只有在运行测试时,您才需要为额外的VM付费。只需确保在完成后将其关闭。

您可以使用或作为“流浪者”

对于AWS提供程序,您需要设置RSync以使您的环境进入新启动的实例

如果您的Vagrant脚本是健壮的,那么您可以对工作站上的本地部署和CI服务器上的AWS/Docker部署使用相同的脚本


做这些技术有缺点,在Docker的情况下,您被限制在Jenkins服务器运行的同一个内核上,在AWS的情况下,您将招致额外的成本。然而,对于AWS,您不需要为Jenkins服务器分配那么多的资源,因此您甚至可以通过这种方式节省资金,因为只有在运行测试时,您才需要为额外的VM付费。只需确保您在完成后将其关闭。

您想使用vagrant有什么特殊原因吗?我不确定您是否正在用vagrant设置生产环境

如果您不一定要使用vagrant,我建议您考虑使用docker映像来准备一个轻量级环境来运行您的设置和验证

在进行测试时,从包含puppet分发的图像中旋转一个容器,并在其中运行设置/测试。如果您有特殊的内核需求,请使用单独的jenkins从属/代理计算机,而不是在jenkins主计算机上执行作业

如果您不确定如何开始在docker中使用jenkins,请查看的示例部分。所提供的示例显示了声明性管道语法,该语法仍然有点新。还考虑崩溃的切换脚本管道部分,显示Groovy管道脚本,这对于詹金斯管道初学者来说更为宽容。

这些应该是开始在docker中运行并测试您的傀儡脚本的非常好的指针。对于构建和使用docker映像,应该有足够多的教程


让我知道这是一个正确方向的提示,还是我误解了你的问题。

你想使用vagrant有什么特殊原因吗?我不确定您是否正在用vagrant设置生产环境

如果您不一定要使用vagrant,我建议您考虑使用docker映像来准备一个轻量级环境来运行您的设置和验证

在进行测试时,从包含puppet分发的图像中旋转一个容器,并在其中运行设置/测试。如果您有特殊的内核需求,请使用单独的jenkins从属/代理计算机,而不是在jenkins主计算机上执行作业

如果您不确定如何开始在docker中使用jenkins,请查看的示例部分。所提供的示例显示了声明性管道语法,该语法仍然有点新。还考虑崩溃的切换脚本管道部分,显示Groovy管道脚本,这对于詹金斯管道初学者来说更为宽容。

这些应该是开始在docker中运行并测试您的傀儡脚本的非常好的指针。对于构建和使用docker映像,应该有足够多的教程


让我知道这是否是一个正确方向的提示,或者我是否误解了您的问题。

不清楚您是否只需要目录编译测试或全面验收测试。一旦你澄清,我可以给你一个答案。而且,这实际上是唯一的CI。这里没有部署。我所要做的是测试puppet在所有节点上运行(web、db,无论什么…)是否正常工作和通过。至于流浪汉,这不是必须的,我只是想,因为我们在当地使用它。CI/CD更多的是从GIT获取pull请求,在节点上迭代,如果没有失败,则标记可以合并。我们曾经遇到过这样的情况,对一个节点类的编辑破坏了其他节点上的某些内容,因此对“全部”(每个类1个)进行迭代。因此我希望澄清这是目录编译测试(甚至可能是回归测试)还是验收测试。你能澄清一下吗?我想是目录测试,对不起,我不熟悉测试的名称,因为我是新手。可能更好的例子是我想要捕捉的:
Error:/usr/