16、Jenkins Pipeline项目

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 [email protected] "cd /html && mkdir web-$BUILD_ID"'
        sh 'scp /tmp/web-$BUILD_ID.tar.gz [email protected]:/html/web-$BUILD_ID'
        sh 'ssh [email protected] "cd /html/web-$BUILD_ID && tar xf web-$BUILD_ID.tar.gz && rm -rf web-$BUILD_ID.tar.gz"'
        sh 'ssh [email protected] "cd /html && rm -rf www && ln -s web-$BUILD_ID www"'
        sh 'ssh [email protected] "chown -R nginx:nginx /html/web-$BUILD_ID"'
    }
   }
}
}

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



配置后进行构建测试


你可能感兴趣的:(16、Jenkins Pipeline项目)