zoukankan      html  css  js  c++  java
  • Jenkins之三----Pipeline与Jenkins视图

    实战一:在Jenkins基于pipeline拉取Gitlab代码,部署到后端tomcat服务器上

    1、pipeline介绍

    官网地址:https://jenkins.io/2.0/

    pipline是帮助Jenkins实现CI到CD转变的重要角色,是运行在 jenkins 2.X版本的核心插件,简单来说 Pipline 就是一套运行于 Jenkins 上的工作流框架,将原本独立运行

    于单个或者多个 节点的任务连接起来,实现单个任务难以完成的复杂发布流程, 从而实现单个任务很难实现的复杂流程编排和任务可视化 Pipeline 的实现方式是一套

    Groovy DSL ,任何发布流程都可以表述为 一段 Groovy 脚本。

    2、pipline语法

    Stage阶段:一个pipline可以划分为若干个 stage ,每个 stage 都是一个操作,比如clone 代码、代码 编译 、 代码 测试和代码部署 阶段是一个逻辑分组, 可以 跨多个 node执行。

    Node节点:每个node都是一个jenkins节点,可以是jenkins master也可以是jenkins agent node是执行step 的具体服务器。

    Step:步骤 step 是 jenkins pipline 最基本的操作单元 从 在 服务器创建目录到 构建容器 镜像 ,由各类 Jenkins 插件 提供实现,例如: sh “make”

    3、pipline优势

    可持续性: jenkins 的重启 或者 中断后不影响已经执行的 Pipline Job

    支持暂停: pipline 可以选择 停止并 等待人工输入 或 批准后再继续执行。

    可扩展通过 groovy 的编程更容易的扩展插件。

    并行执行: 通过 groovy 脚本可以实现 step stage 间的并行执行,和更复杂的相互依赖关系 。

    4、创建一个pipeline-test任务

    1、创建一个pipeline-test任务,jenkins--->创建New任务

     2、创建一个简单的pipeline job测试,丢弃旧的构建,设置保留的时间,也可以不设置。

    选择流水线语法的选项,可以查看克隆gitlab网站上代码的pipeline语法:

    git credentialsId: '26375340-9ad6-41f6-82b9-73571c30e266', url: 'git@192.168.7.100:linux_gitlab/web1.git'  # pipeline克隆gitlab语法

    3、开始创建pipeline脚本,先选择pipeline范例

    4、配置pipeline语法脚本,其中192.168.7.104的地址是后端tomcat服务器的IP地址

    node("jenkins-node1"){  # 括号中指定用jenkins-slave的主机进行克隆代码并进行一系列的操作。
      stage("clone 代码"){
        sh 'cd /var/lib/jenkins/workspace/pipeline-test && rm -rf ./*'  # 注意,一开始没有此目录,用shell命令切换此目录下无法成功,刚开始构建时,可以创建此目录。
        git credentialsId: '26375340-9ad6-41f6-82b9-73571c30e266', url: 'git@192.168.7.100:linux_gitlab/web1.git'
        echo "代码 clone完成"
      }
    
      stage("代码打包"){
        sh 'cd  /var/lib/jenkins/workspace/pipeline-test && tar czvf code.tar.gz  ./*'
        echo "代码打包完成"
      }
      stage("停止tomcat服务"){
        sh 'ssh www@192.168.7.104 "/apps/tomcat/bin/shutdown.sh"'
      }
       
      stage("代码复制"){
        sh 'cd /var/lib/jenkins/workspace/pipeline-test && scp  code.tar.gz www@192.168.7.104:/data/tomcat/tomcat_appdir/'
      }
       
      stage("代码部署"){
        sh 'ssh www@192.168.7.104 "cd /data/tomcat/tomcat_appdir/ && rm -rf /data/tomcat/tomcat_webdir/myapp/*  && tar xvf code.tar.gz -C /data/tomcat/tomcat_webdir/myapp/ "'
      }
       
      stage("启动tomcat服务"){
        sh 'ssh www@192.168.7.104 "/apps/tomcat/bin/startup.sh"'
      }
    }
    

    如果使用jenkins-node1的主机,需要将本主机的ssh公钥复制到后端tomcat服务器上,实现免秘钥登录

    [root@jenkins-slave ~]# ssh-keygen
    [root@jenkins-slave ~]# ssh-copy-id www@192.168.7.104

    5、立即构建pipeline-test

     6、查看此时构建执行的脚本结果

    Started by user 974212253@qq.com
    Running in Durability level: MAX_SURVIVABILITY
    [Pipeline] Start of Pipeline
    [Pipeline] node
    Running on jenkins-node1 in /var/lib/jenkins/workspace/pipeline-test
    [Pipeline] {
    [Pipeline] stage
    [Pipeline] { (clone 代码)
    [Pipeline] sh
    + cd /var/lib/jenkins/workspace/pipeline-test
    + rm -rf ./code.tar.gz ./index.html
    [Pipeline] git
    using credential 26375340-9ad6-41f6-82b9-73571c30e266
    Fetching changes from the remote Git repository
     > git rev-parse --is-inside-work-tree # timeout=10
     > git config remote.origin.url git@192.168.7.100:linux_gitlab/web1.git # timeout=10
    Fetching upstream changes from git@192.168.7.100:linux_gitlab/web1.git
     > git --version # timeout=10
    using GIT_SSH to set credentials 
     > git fetch --tags --progress git@192.168.7.100:linux_gitlab/web1.git +refs/heads/*:refs/remotes/origin/* # timeout=10
     > git rev-parse refs/remotes/origin/master^{commit} # timeout=10
    Checking out Revision 5bd130b5a0936bafeb55b3a3617308902feb29e4 (refs/remotes/origin/master)
     > git rev-parse refs/remotes/origin/origin/master^{commit} # timeout=10
     > git config core.sparsecheckout # timeout=10
     > git checkout -f 5bd130b5a0936bafeb55b3a3617308902feb29e4 # timeout=10
     > git branch -a -v --no-abbrev # timeout=10
     > git checkout -b master 5bd130b5a0936bafeb55b3a3617308902feb29e4 # timeout=10
    Commit message: "Add index.html"
    [Pipeline] echo
    代码 clone完成
    [Pipeline] }
    [Pipeline] // stage
    [Pipeline] stage
    [Pipeline] { (代码打包)
    [Pipeline] sh
     > git rev-list --no-walk 5bd130b5a0936bafeb55b3a3617308902feb29e4 # timeout=10
    + cd /var/lib/jenkins/workspace/pipeline-test
    + tar czvf code.tar.gz ./index.html
    ./index.html
    [Pipeline] echo
    代码打包完成
    [Pipeline] }
    [Pipeline] // stage
    [Pipeline] stage
    [Pipeline] { (停止tomcat服务)
    [Pipeline] sh
    + ssh www@192.168.7.104 /apps/tomcat/bin/shutdown.sh
    [Pipeline] }
    [Pipeline] // stage
    [Pipeline] stage
    [Pipeline] { (代码复制)
    [Pipeline] sh
    + cd /var/lib/jenkins/workspace/pipeline-test
    + scp code.tar.gz www@192.168.7.104:/data/tomcat/tomcat_appdir/
    [Pipeline] }
    [Pipeline] // stage
    [Pipeline] stage
    [Pipeline] { (代码部署)
    [Pipeline] sh
    + ssh www@192.168.7.104 'cd /data/tomcat/tomcat_appdir/ && rm -rf /data/tomcat/tomcat_webdir/myapp/*  && tar xvf code.tar.gz -C /data/tomcat/tomcat_webdir/myapp/ '
    ./index.html
    [Pipeline] }
    [Pipeline] // stage
    [Pipeline] stage
    [Pipeline] { (启动tomcat服务)
    [Pipeline] sh
    + ssh www@192.168.7.104 /apps/tomcat/bin/startup.sh
    Tomcat started.
    [Pipeline] }
    [Pipeline] // stage
    [Pipeline] }
    [Pipeline] // node
    [Pipeline] End of Pipeline
    Finished: SUCCESS
    

    7、此时可以看到jenkins-slave服务器上已经有代码

    [root@jenkins-slave ~]# cd /var/lib/jenkins/workspace/pipeline-test
    [root@jenkins-slave pipeline-test]# ls
    code.tar.gz  index.html
    [root@jenkins-slave pipeline-test]# cat index.html 
    linux web 123456[root@jenkins-slave pipeline-test]# 
    

    8、后端tomcat服务器上也已经有了代码

    [root@tomcat-web1 ~]# cd /data/tomcat/tomcat_webdir/myapp/
    [root@tomcat-web1 myapp]# cat index.html 
    linux web 123456[root@tomcat-web1 myapp]# 
    

    9、访问tomcat网站,成功访问网页,此时基于pipeline流水线拉取代码成功。

     Jenkins视图

    1、列表视图

    1、我的视图----->列表视图使用场景比较多,用于将一个业务的job保存至一个列表视图进行分类管理,即不同业务的job放在不同的列表视图中 。

    2、创建一个列表视图,命名为pipeline-view

     3、创建完pipeline-view,选择自己已经创建的项目。

    4、在新创建的pipeline-view列表视图后,可以查看到分配的相同业务的项目。

     

      

  • 相关阅读:
    受益一生的15个学习习惯
    如何在工作的头三年里让自己变得强大
    linux定时执行脚本
    SpringMVC基础入门
    Spring与Quartz的整合实现定时任务调度[转]
    强肝保肝养肝4大食物
    Spring官网jar包下载方法
    tomcat管理端的页面安全措施
    Struts2 Action 动态传参数
    Java之控制反转和依赖注入
  • 原文地址:https://www.cnblogs.com/struggle-1216/p/12435107.html
Copyright © 2011-2022 走看看