美文网首页
16、Jenkins Pipeline项目

16、Jenkins Pipeline项目

作者: 一个反派人物 | 来源:发表于2021-02-20 14:10 被阅读0次

    1 CI/CD 持续集成/持续部署

    持续集成(Continuous integration),开发团队经常集成他们的工作,每天发生多次集成。每次集成通过自动化构建(包括编译、发布、自动化测试)来验证,从而尽早地发现集成错误。

    持续部署(Continuous Deployment)通过自动化的构建、测试和部署循环来快速交付高质量产品。

    持续交付(Continuous Delivery)频繁地将软件的新版本,交付给质量团队或者用户,以供评审尽早发现生产环境中存在的问题;如果评审通过,代码就进入生产阶段。

    2 Pipeline概念

    Pipeline是一个用户定义的CD流水线模式。Pipeline代码定义了通常包含构建、测试和发布步骤的完整构建过程。
    Node
    Node是一个机器,它是Jenkins环境的一部分,并且能够执行Pipeline。同时,node代码块也是脚本式Pipeline语法的关键特性。
    Stage
    Stage块定义了在整个Pipeline中执行的概念上不同的任务子集(例如“构建”,“测试”和“部署”阶段)。
    Step
    一项任务,一个Stage包含多个Step。一个步骤告诉Jenkins在特定的时间点要做什么。例如,使用sh step:sh 'make'可以执行make这个shell命令。

    3 Pipeline 脚本式语法

    pipeline{
    agent any
    stages{
      stage("get code"){
        steps{
            echo "get code from scm"
        }
      }
      stage("package"){
        steps{
            echo "package code"
        }
      }
      stage("deploy"){
        steps{
            echo "deploy package to node1"
        }
       }
    }
    }
    

    4 Pipeline示例

    4.1 简单示例

    Pipeline 脚本包含3步,每一步只进行输出

    pipeline{
    agent any
    stages{
      stage("get code"){
        steps{
            echo "get code from scm"
        }
      }
      stage("package"){
        steps{
            echo "package code"
        }
      }
      stage("deploy"){
        steps{
            echo "deploy package to node1"
        }
       }
    }
    }
    

    4.1.1 具体步骤

    在Jenkins中新建一个pipeline项目




    写入Pipeline脚本



    立即构建后,出现流水线

    查看log可以查看每一步的详细信息

    4.2 使用代码包中的Jenkinsfile

    Jenkins可以配置识别git代码包中的Pipeline脚本



    Gitlab的项目中上传Pipeline脚本

    Pipeline脚本的具体内容:在package阶段进行代码打包,deploy阶段进行代码到web服务器上线。Jenkins项目的工作目录是/var/lib/jenkins/workspace/项目名称
    pipeline{
    agent any
    stages{
      stage("get code"){
        steps{
            echo "get code from scm"
        }
      }
      stage("unit test"){
        steps{
            echo "unit test"
        }
      }
      stage("package"){
        steps{
            sh 'tar -zcf /tmp/web-$BUILD_ID.tar.gz ./* --exclude=.git --exclude=Jenkinsfile'
        }
      }
      stage("deploy"){
        steps{
            sh 'ssh root@10.0.0.7 "cd /html && mkdir web-$BUILD_ID"'
            sh 'scp /tmp/web-$BUILD_ID.tar.gz root@10.0.0.7:/html/web-$BUILD_ID'
            sh 'ssh root@10.0.0.7 "cd /html/web-$BUILD_ID && tar xf web-$BUILD_ID.tar.gz && rm -rf web-$BUILD_ID.tar.gz"'
            sh 'ssh root@10.0.0.7 "cd /html && rm -rf www && ln -s web-$BUILD_ID www"'
            sh 'ssh root@10.0.0.7 "chown -R nginx:nginx /html/web-$BUILD_ID"'
        }
       }
    }
    }
    

    Pipeline脚本中的$BUILD_ID变量是Jenkins的构建ID



    配置后进行构建测试


    相关文章

      网友评论

          本文标题:16、Jenkins Pipeline项目

          本文链接:https://www.haomeiwen.com/subject/ycmnxltx.html