Jekins导读:

Jenkins是一个独立的开源自动化服务器,可用于自动化各种任务,如构建,测试和部署软件。Jenkins可以通过本机系统包Docker安装,甚至可以通过安装Java Runtime Environment的任何机器独立运行。
image.png

Jenkins 介绍

说明

本说明是针对使用需要Java 8的“独立”Jenkins发行版。还建议使用超过512MB RAM的系统。

  1. - [下载](http://mirrors.jenkins.io/war-stable/latest/jenkins.war)[Jenkins](http://mirrors.jenkins.io/war-stable/latest/jenkins.war)。
  2. - 在下载目录中打开终端并运行 java -jar jenkins.war --httpPort=8080
  3. - 浏览http://localhost:8080并按照说明完成安装。
  4. - 许多Pipeline示例需要 在与Jenkins相同的计算机上安装DockerDocker安装下载教程:[点击查看](https://www.w3cschool.cn/docker/)

安装完成后,开始将Jenkins运行并创建Pipeline。
Jenkins Pipeline是一套插件,支持将连续输送Pipeline实施和整合到Jenkins。Pipeline提供了一组可扩展的工具,用于将“复制代码”作为代码进行建模。
Jenkinsfile 是一个包含Jenkins Pipeline定义的文本文件,并被检入源代码控制。这是“Pipeline代码”的基础; 处理连续输送Pipeline的一部分应用程序,以像其他代码一样进行版本检查。创建Jenkinsfile提供了一些直接的好处:

  1. - 自动创建所有分支和拉请求的Pipeline
  2. - Pipeline上的代码审查/迭代
  3. - Pipeline的审计跟踪
  4. - Pipeline的唯一真实来源 ,可以由项目的多个成员查看和编辑。

虽然在Web UI或a中定义Pipeline的语法 Jenkinsfile是相同的,但通常认为最佳做法是在Jenkinsfile中定义Pipeline并检查源控制。

Jenkins 如何创建Pipeline

开始创建第一个Pipline

快速入门Pipeline

  1. - 将其中一个[示例](https://jenkins.io/doc/pipeline/tour/hello-world/#examples)复制到您的存储库并将其命名Jenkinsfile
  2. - 单击Jenkins中的New Item菜单

image.png

  1. 1. 为您的新项目提供名称(例如我的Pipeline),然后选择多分支Pipeline
  2. 2. 单击添加源按钮,选择要使用的存储库的类型并填写详细信息。
  3. 3. 点击保存按钮并观看您的第一条Pipeline运行!

您可能需要修改一个示例Jenkinsfile以使其与您的项目一起运行。尝试修改sh命令以运行您在本地计算机上运行的相同命令。
设置你的Pipeline后,Jenkins将自动检测在存储库中创建的任何新分支或拉请求,并为其启动运行Pipeline。
继续“运行多个步骤”

快速启动示例

以下是一些简单的复制和粘贴的一个简单的流水线与各种语言的例子。

Java

image.png
Toggle Scripted Pipeline (Advanced)
image.png

Node.js/ JavaScript

image.png
Toggle Scripted Pipeline (Advanced)
image.png

Ruby

image.png
Toggle Scripted Pipeline (Advanced)
image.png

Python

image.png
Toggle Scripted Pipeline (Advanced)
image.png

PHP

image.png
Toggle Scripted Pipeline (Advanced)
image.png

Jenkins 运行多个步骤

Pipeline由多个步骤组成,允许您构建,测试和部署应用程序。Jenkins Pipeline允许您以简单的方式组合多个步骤,可以帮助您建模任何类型的自动化过程。
想像一个“一步一步”,就像执行单一动作的单一命令一样。当一个步骤成功时,它移动到下一步。当步骤无法正确执行时,Pipeline将失败。
当Pipeline中的所有步骤成功完成后,Pipeline被认为已成功执行。

Linux,BSD和Mac OS

Linux,BSD和Mac OS(或其他类Unix)系统上,该sh步骤用于在Pipeline中执行shell命令。
image.png
Toggle Scripted Pipeline (Advanced)
image.png

Windows

基于Windows的系统应该使用bat执行批处理命令的步骤。
image.png
Toggle Scripted Pipeline (Advanced)
image.png

超时,重试等等

有一些强大的步骤,“包装”其他步骤,可以轻松地解决问题,如重试(retry)步骤,直到成功或退出,如果步骤太长(timeout)
image.png
Toggle Scripted Pipeline (Advanced)
image.png
“部署”阶段重试flakey-deploy.sh脚本3次,然后等待health-check.sh脚本执行最多3分钟。如果健康检查脚本在3分钟内未完成,则Pipeline将在“部署”阶段被标记为失败。
“包装”的步骤,例如timeout和retry可以包含其它步骤,包括timeout或retry。
我们可以组合这些步骤。例如,如果我们想重新部署我们的部署5次,但是在失败的阶段之前,总是不想花3分钟以上:
image.png
Toggle Scripted Pipeline (Advanced)
image.png

完成

当Pipeline完成执行后,您可能需要运行清理步骤或根据Pipeline的结果执行某些操作。可以在本post节中执行这些操作。
image.png
Toggle Scripted Pipeline (Advanced)
image.png

Jenkins 定义执行环境

上一节中, 您可能已经注意到agent每个示例中的指令。该 agent指令告诉Jenkins在哪里以及如何执行Pipeline或其子集。如您所料,agent所有Pipeline都是必需的。
在引擎盖下,有几件事情agent会发生:

  • 该块中包含的所有步骤均排队等待Jenkins执行。一旦执行者可用,步骤就会开始执行。
  • 将分配一个工作区,其中将包含从源代码管理检出的文件以及Pipeline的任何其他工作文件。

几种方法可以定义代理在Pipeline中使用,对于本次巡视.我们将仅关注使用短暂的Docker container。
Pipeline设计用于容易地使用Docker图像和容器在里面运行。这允许Pipeline定义所需的环境和工具,而无需手动配置各种系统工具和对代理的依赖。这种方法允许您几乎可以使用可以打包在Docker容器中的任何工具 。
image.png
Toggle Scripted Pipeline (Advanced)
image.png
当Pipeline执行时,Jenkins将自动启动指定的容器并执行其中定义的步骤:
image.png
混合和匹配不同容器或其他代理时,在执行Pipeline时可以有很大的灵活性,有关更多配置选项,请继续使用使用环境变量”

Jenkins 使用环境变量

Jenkins 环境变量可以全局设置,如下面的示例或每个阶段。您可能会期望,每个阶段设置环境变量意味着它们将仅适用于定义它们的阶段。
image.png
Toggle Scripted Pipeline (Advanced)
image.png
这种从内部定义环境变量的方法Jenkinsfile 对于指示脚本(例如a)可以非常有用Makefile,以同的方式配置构建或测试,以在Jenkins内部运行它们。
环境变量的另一个常见用途是在构建或测试脚本中设置或覆盖“虚拟”凭据。因为(显而易见)将凭据直接放入一个不好的主意Jenkinsfile,Jenkins Pipeline允许用户快速而安全地访问预定义的凭据,而Jenkinsfile无需知道其价值。

环境证书

如果您的Jenkins环境配置了凭据,例如构建秘密或API令牌,那么可以将它们轻松插入环境变量中,以便在Pipeline中使用。下面的代码片段用于“秘密文本”类型的凭据。

Jekins入门:

Jekins使用:

Jekins管理: