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
配置后进行构建测试
网友评论