一.简介

  在jenkins 1.x中只能通过手动操作来"描述"部署流水线,而2.x支持了pipe as code了,可以通过“代码”来描述部署流水线。

  pipeline使用代码,而不是UI的意义在于:

  1)更好的版本化: 将pipeline提交到软件版本库中进行版本控制。

  2)更好的协作:pipeline的每次修改对所有人都是可见的,除此之外,还可以对pipeline进行代码审查。

  3)更好的重用性:手动操作没法重用,但是代码可以重用。

  后续介绍全面拥抱pipeline as code,放弃依赖手动操作的自由风格的项目(freeStyle project).

 1.1  jenkinsfile 是什么

  jenkinsfile 就是一个文本文件,也就是部署流水线概念在jenkins中的表现形式,像dockerfile之于docker。所在部署的流水线的逻辑都写在jenkinsfile中。

   jenkins默认是不支持jenkinsfile的,需要安装pipeline插件,在前面的安装介绍章节中已安装pipeline的插件。

  安装完后,就可以创建pipeline项目了,如下所示:

windous jenkins 怎么运行springboot_服务器

1.2  Pipeline语法的选择

   有二种语法来写pipeline, 一种是脚本式语法(scripted) 是用groovy语言。一种是声明式语法(declar-ative)。前者灵活可扩展但也更复杂,后者简单更结构化更适合阅读。

  所以声明式语法也是jenkins社区推荐的语法。

1.3 创建第一个pipeline

windous jenkins 怎么运行springboot_Jenkins_02

     

windous jenkins 怎么运行springboot_git_03

     最后点击保存,在点击左侧菜单 Build Now,在Build History中点击最新的-->console output

windous jenkins 怎么运行springboot_服务器_04

1.4 从版本控制库拉取pipeline

  在上面hello world示例中,是直接在jenkins界面上填入pipeline内容的,试验时可以这么做,但是不推荐,因为这样无法做到pipeline的版本化。

  接下来让jenkins从仓库拉取pipeline并执行。

  准备条件:

      1)jenkins服务器上已装好git

      2)选择一个git仓库,我这里用的腾讯工蜂,创建一个项目pipeline-hello-world, 添加Jenkinsfile(注意文件名大小写)文件,如下所示

       

windous jenkins 怎么运行springboot_git_05

        文件内容如下所示:



pipeline {
    agent any

    stages {
        stage('Hello') {
            steps {
                echo 'Hello World'
            }
        }
    }
}



  步骤1:在jenkins服务器上通过git命令生成ssh,生成命令和输出文件如下:

windous jenkins 怎么运行springboot_jenkins_06

windous jenkins 怎么运行springboot_服务器_07

   步骤2:腾讯工蜂上添加公钥(打开id_rsa.pub把内容直接复制),如下所示

windous jenkins 怎么运行springboot_Jenkins_08

   步骤3:jenkins上添加私钥(打开id_rsa把内容直接复制),添加完成后如下所示:

windous jenkins 怎么运行springboot_git_09

     创建凭据填写需要注意的地方:类型为SSH Username with private key。  用户名为:腾讯工蜂的账号名,我这里是hushaoren, 输入私钥,输入创建ssh的密码(我这里是123456)

  步骤4:新建一个pipeline任务,任务名为pipeline-hello-world,下面是配置

windous jenkins 怎么运行springboot_jenkins_10

   步骤5,最后构建成功,如下所示



Started by user hushaoren
Obtained Jenkinsfile from git git@git.code.tencent.com:Studies/pipeline-hello-world.git
[Pipeline] Start of Pipeline
[Pipeline] node
Running on Jenkins in C:\Users\AndyH\AppData\Local\Jenkins\.jenkins\workspace\pipeline-hello-world
[Pipeline] {
[Pipeline] stage
[Pipeline] { (Declarative: Checkout SCM)
[Pipeline] checkout
Selected Git installation does not exist. Using Default
The recommended git tool is: NONE
using credential 10000
Cloning the remote Git repository
Cloning repository git@git.code.tencent.com:Studies/pipeline-hello-world.git
 > git.exe init C:\Users\AndyH\AppData\Local\Jenkins\.jenkins\workspace\pipeline-hello-world # timeout=10
Fetching upstream changes from git@git.code.tencent.com:Studies/pipeline-hello-world.git
 > git.exe --version # timeout=10
 > git --version # 'git version 2.28.0.windows.1'
using GIT_SSH to set credentials 腾讯工蜂连接
 > git.exe fetch --tags --force --progress -- git@git.code.tencent.com:Studies/pipeline-hello-world.git +refs/heads/*:refs/remotes/origin/* # timeout=10
 > git.exe config remote.origin.url git@git.code.tencent.com:Studies/pipeline-hello-world.git # timeout=10
 > git.exe config --add remote.origin.fetch +refs/heads/*:refs/remotes/origin/* # timeout=10
Avoid second fetch
 > git.exe rev-parse "refs/remotes/origin/master^{commit}" # timeout=10
Checking out Revision 58b8c38fe111414358617a8a671843e19dc1cd48 (refs/remotes/origin/master)
 > git.exe config core.sparsecheckout # timeout=10
 > git.exe checkout -f 58b8c38fe111414358617a8a671843e19dc1cd48 # timeout=10
Commit message: "提交"
First time build. Skipping changelog.
[Pipeline] }
[Pipeline] // stage
[Pipeline] withEnv
[Pipeline] {
[Pipeline] stage
[Pipeline] { (Hello)
[Pipeline] echo
Hello World
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // withEnv
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS