在Jenkins Pipeline DSL中,节点(node)是一个能够完成两件事的步骤,它通常借助于代理上的可用执行器完成工作。
节点通过将其包含的步骤添加到Jenkins构建队列中来调度这些步骤。这样,只要执行器时间片在节点上是空闲的,就会运行适当的步骤。
节点还会创建一个工作空间,也就是一个特定于指定作业的文件目录,其中可以进行资源密集型处理而不会对流水线性能产生负面影响。节点声明中包含的所有步骤执行完成后,由节点创建的工作空间会自动删除。在节点内完成所有重要工作(如构建或运行shell脚本)是一种最佳实践,因为阶段中节点块向Jenkins表明其内部步骤的资源密集程度足以进行调度,请求代理池提供帮助,并且只在需要时才锁定工作空间。
如果节点的定义让你感到困惑,请把它看成是一个用于执行步骤的地方。它指定将要执行任务的服务器(代理),可以是服务器的名称(由于节点配置与代理程序的紧密耦合,通常这么做是一个糟糕的主意),也可以是与代理程序中设置的标签集相匹配的一组标签。如果你回想起用来启动Jenkins Swarm代理服务的命令,就会记得我们使用了-labels docker作为命令选项之一。由于Docker Engine和Compose是我们需要的唯一可执行文件,所以这是我们指定节点时需要的唯一标签。
请在go-demo作业配置的Pipeline脚本字段中输入以下代码并按下“Save”按钮:
我们只编写了Pipeline的第一个迭代。现在来运行它。请点击“Build Now”按钮。
作业开始运行并显示“This Pipeline has run successfully,but does not define any stages”的信息,我们马上就会更正这个问题,现在来看看日志,如图6-9所示。
图6-9 Jenkins流水线作业的第一次构建(www.xing528.com)
你可以通过单击构建编号#1旁边的球形图标来访问日志。可以从位于界面左侧的Build History小部件访问所有构建。
输出如下:
这次构建并没有做很多事情。Jenkins解析了节点定义以及决定使用代理be61529c010a-d9bf7835(两个Jenkins Swarm服务实例之一)并运行目录/workspace/ go-demo中的步骤。目录结构很简单。构建生成的所有文件都位于与作业名称匹配的目录中。这种情况下,目录是go-demo。
由于没有在节点内指定任何步骤,因此Pipeline几乎立即执行完任务并取得成功。让我们通过阶段来稍微将其调整下。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。