如何创建你的第一个Jenkins管道()

本文概述

  • 为什么选择Jenkins管道?
  • 什么是Jenkins管道?
  • 创建一条Jenkins管道
创建Jenkins管道的分步指南
为什么选择Jenkins管道? 持续交付(CD)是DevOps生命周期的重要组成部分。
它确保开发人员正在创建的软件/应用程序始终可以投入生产。为此, 无论何时更新代码, 都需要不断地构建, 测试和部署它。这就是Jenkins Pipeline出现的地方。
在DevOps中, 通过Jenkins Pipeline实现了持续集成和持续交付(CI / CD)。使用Jenkins Pipeline CD有助于以更快, 更频繁的发行版本交付该软件。这有助于在每个下一个发行版中合并反馈。
什么是Jenkins管道? Jenkins Pipeline是作业的组合, 可以使用Jenkins连续交付软件。
我想你知道Jenkins是什么。如果没有, 请查看此Udemy课程以掌握Jenkins。
Jenkins管道由多个状态或阶段组成, 它们按一个接一个的顺序执行。 JenkinsFile是一个简单的文本文件, 用于在Jenkins中作为代码创建管道。它包含Groovy领域特定语言(DSL)的代码, 该代码易于编写且易于阅读。
你可以单独运行JenkinsFile, 也可以从Jenkins Web UI运行管道代码。使用Jenkins可以通过两种方式创建管道。
  • 声明式–创建Jenkins Pipeline的新方法。在这里, 你可以编写包含” 管道” 块的常规代码, 并将其检入SCM(源代码管理)
  • 脚本化–编写常规代码的方式, 其中代码在” 节点” 块内定义。
在开始演示之前, 如果尚未安装Jenkins, 请先安装它。确保已在系统上启动并运行Jenkins。
创建一条Jenkins管道 这就是Jenkins管道流程的样子, 它由开发人员在创建软件(编码)和在生产环境中交付的软件之间的多个阶段组成。
如何创建你的第一个Jenkins管道()

文章图片
让我们创建一个声明性管道。
在Jenkins仪表板上, 单击New Item。然后输入项目名称, 例如” First Pipeline” , 然后选择” Pipeline” 项目。然后单击确定。
如何创建你的第一个Jenkins管道()

文章图片
单击管道选项卡, 如下图所示, 然后在此处放置你的JenkinsFile代码(Groovy代码)。
如何创建你的第一个Jenkins管道()

文章图片
pipeline { agent any stages { stage('Build') { steps { echo 'Hi, GeekFlare. Starting to build the App.' } } stage('Test') { steps { input('Do you want to proceed?') } } stage('Deploy') { parallel { stage('Deploy start ') { steps { echo "Start the deploy .." } } stage('Deploying now') { agent { docker { reuseNode true image ‘nginx’ } }steps { echo "Docker Created" } } } } stage('Prod') { steps { echo "App is Prod Ready" }} } }

让我解释一下上面的块。
  • 管道块包括构建, 测试和交付软件的所有指令。它是Jenkins管道的关键组件。
  • 分配了代理程序以在节点上执行管道并为管道分配工作区。
  • 阶段是具有构建, 测试和部署应用程序步骤的模块。阶段用于可视化Jenkins Pipeline过程。
  • 步骤是要执行的单个任务, 例如, 创建目录, 运行docker映像, 删除文件等。
上面的Groovy代码, 我用于JenkinsFile。任何可用的代理都将分配给管道。然后, 我定义Build阶段并执行一个简单的echo步骤。然后, 我定义了测试阶段, 其中该步骤询问你是否要继续。在那之后, 我创建了一个Deploy阶段, 其中有两个并行运行的阶段。部署开始阶段有一个使用echo命令的步骤, 而部署现在有一个步骤, 可在节点上提取Nginx的Docker映像。最后, 有一个带有简单回声步骤的Prod阶段。
上面说明的管道具有一些阶段, 这些阶段具有简单的步骤供你了解其工作原理。一旦学习了如何创建管道, 就可以增加更多的复杂性并创建复杂的管道。
在” 管道” 选项卡中找到代码后, 单击” 应用并保存” 。最后, 单击立即构建以开始构建你刚刚创建的Jenkins管道。
如何创建你的第一个Jenkins管道()

文章图片
这是管道运行时用户界面的外观。如果正确执行了所有步骤, 则构建将成功, 并且该构建将显示为蓝色(#27)。如果构建中有错误, 它将为构建赋予红色(#27)。
如何创建你的第一个Jenkins管道()

文章图片
现在, 单击#27 build, 然后单击Console Output, 以检查后端运行时到底发生了什么。
如何创建你的第一个Jenkins管道()

文章图片
这就是输出看起来像以SUCCESS消息结尾的样子。
Success Console OutputStarted by user geekflare Running in Durability level: MAX_SURVIVABILITY [Pipeline] Start of Pipeline [Pipeline] node Running on Jenkins in /var/lib/jenkins/workspace/First Pipeline [Pipeline] { [Pipeline] stage [Pipeline] { (Build) [Pipeline] echo Hi, GeekFlare. Starting to build the App. [Pipeline] } [Pipeline] // stage [Pipeline] stage [Pipeline] { (Test) [Pipeline] input Do you want to proceed? Proceed or Abort Approved by geekflare [Pipeline] } [Pipeline] // stage [Pipeline] stage [Pipeline] { (Deploy) [Pipeline] parallel [Pipeline] { (Branch: Deploy start ) [Pipeline] { (Branch: Deploying now) [Pipeline] stage [Pipeline] { (Deploy start ) [Pipeline] stage [Pipeline] { (Deploying now) [Pipeline] getContext [Pipeline] isUnix [Pipeline] sh [Pipeline] echo Start the deploy .. [Pipeline] } + docker inspect -f . nginx [Pipeline] // stage [Pipeline] }Error: No such object: nginx [Pipeline] isUnix [Pipeline] sh + docker pull nginx Using default tag: latest latest: Pulling from library/nginx 8d691f585fa8: Pulling fs layer 5b07f4e08ad0: Pulling fs layer abc291867bca: Pulling fs layer abc291867bca: Verifying Checksum abc291867bca: Download complete 5b07f4e08ad0: Verifying Checksum 5b07f4e08ad0: Download complete 8d691f585fa8: Verifying Checksum 8d691f585fa8: Download complete 8d691f585fa8: Pull complete 5b07f4e08ad0: Pull complete abc291867bca: Pull complete Digest: sha256:922c815aa4df050d4df476e92daed4231f466acc8ee90e0e774951b0fd7195a4 Status: Downloaded newer image for nginx:latest [Pipeline] withDockerContainer Jenkins does not seem to be running inside a container $ docker run -t -d -u 125:131 -w "/var/lib/jenkins/workspace/First Pipeline" -v "/var/lib/jenkins/workspace/First Pipeline:/var/lib/jenkins/workspace/First Pipeline:rw, z" -v "/var/lib/jenkins/workspace/First [email  protected]:/var/lib/jenkins/workspace/First [email  protected]:rw, z" -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** nginx cat $ docker top 3141793b98f315dc90a57d810068b8eedb6f62debafb9040de06635b558f2943 -eo pid, comm [Pipeline] { [Pipeline] echo Docker Created [Pipeline] } $ docker stop --time=1 3141793b98f315dc90a57d810068b8eedb6f62debafb9040de06635b558f2943 $ docker rm -f 3141793b98f315dc90a57d810068b8eedb6f62debafb9040de06635b558f2943 [Pipeline] // withDockerContainer [Pipeline] } [Pipeline] // stage [Pipeline] } [Pipeline] // parallel [Pipeline] } [Pipeline] // stage [Pipeline] stage [Pipeline] { (Prod) [Pipeline] echo App is Prod Ready [Pipeline] } [Pipeline] // stage [Pipeline] } [Pipeline] // node [Pipeline] End of Pipeline Finished: SUCCESS

上面的Jenkins Pipeline已经创建了Nginx的docker镜像。你可以通过运行以下命令来验证。你可以看到Nginx泊坞窗映像也已列出。
[email  protected]:~$ docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest 540a289bab6c 2 weeks ago 126MB httpd latest 7d85cc3b2d80 2 months ago 154MB redis latest f7302e4ab3a8 2 months ago 98.2MB geekflare_mongodb latest 095d17727ca0 3 months ago 325MB

总结
【如何创建你的第一个Jenkins管道()】我希望这能使你对Jenkins管道的好处以及如何创造收益有所了解。上面是一个简单的演示, 最好的学习方法是尝试构建复杂的管道。

    推荐阅读