pipeline
简介:
CI/CD持续集成,持续部署
持续集成:是一种软件开发实践,及团队经常集成他们的工作,每天可能发生多次集成,自动化构建(包括编译,发布,自动化测试)来验证,从而尽早发现错误(多次集成)
持续部署:通过自动化构建、测试和部署循环,每完成一部分就进行测试来交付高质量产品,即为持续部署(多次测试)
持续交付:没完成一部分就进行使用验收,叫做持续交付(每一个阶段都进行验收)
什么是pipeline
是一套运行于jenkins上的工作流框架,jenkins支持直接从代码库读取脚本,将原本独立运行于单个或者多个节点任务连接起来,实现单个任务难以完成的复杂发布流程。
pipeline大致框架:
构建、测试、发布
node:一台机器
stage:阶段(任务子集)
语法格式:
操作:使用声明式编写脚本
可以将代码放到本地,也可以从gitlab上获取。这里从gitlab上获取
jenkins识别代码中的Jenkinsfile这个名字执行脚本
在gilab上创建Jenkinsfile
安装discuzdb部署到nginx上的pipeline
pipeline{
agent any
stages{
stage("get code"){
steps{
echo "get code"
}
}
stage("unit test"){
steps{
echo "unit test"
}
}
stage("package"){
steps{
sh 'cd /var/lib/jenkins/workspace/ && tar czf /var/lib/jenkins/workspace/pipeline-job-${BUILD_ID}.tar.gz pipeline-job --exclude=jenkinsfile'
}
}
stage("deploy"){
steps{
sh 'ssh 192.168.1.12 "cd /usr/share/nginx && mkdir web-${BUILD_ID}"'
sh 'scp /var/lib/jenkins/workspace/pipeline-job-${BUILD_ID}.tar.gz 192.168.1.12:/usr/share/nginx/web-${BUILD_ID}'
sh 'ssh 192.168.1.12 "cd /usr/share/nginx/web-${BUILD_ID} && tar xf pipeline-job-${BUILD_ID}.tar.gz && rm -rf pipeline-job-${BUILD_ID}.tar.gz-${BUILD_ID}.tar.gz"'
sh 'ssh 192.168.1.12 "cd /usr/share/nginx/web-${BUILD_ID} && rm -rf /usr/share/nginx/html && ln -s /usr/share/nginx/web-${BUILD_ID}/pipeline-job /usr/share/nginx/html"'
}
}
}
}
将代码粘进去,题目为Jenkinsfile
pipeline{
agent any
stages{
stage("get code"){
steps{
echo "get code"
}
}
stage("unit test"){
steps{
echo "unit test"
}
}
stage("package"){
steps{
sh 'tar czf /opt/web-${BUILD_ID}.tar.gz ./* --exclude=.git --exclude=Jenkinsfile'
}
}
stage("deploy"){
steps{
sh 'ssh 192.168.1.12 "cd /usr/share/nginx && mkdir web-${BUILD_ID}"'
sh 'scp /opt/web-${BUILD_ID}.tar.gz 192.168.1.12:/usr/share/nginx/web-${BUILD_ID}'
sh 'ssh 192.168.1.12 "cd /usr/share/nginx/web-${BUILD_ID} && tar xf web-${BUILD_ID}.tar.gz && rm -rf web-${BUILD_ID}.tar.gz"'
sh 'ssh 192.168.1.12 "cd /usr/share/nginx && rm -rf html && ln -s web-${BUILD_ID} /usr/share/nginx/html"'
}
}
}
}
stage ("get code"):这一步表示从gitlab上获得代码
stage("unit test"):表示测试
stage("package"):代表打包
stage("deploy"):代表部署
回到jenkins,立即构建
pipeline输出结果最终会在jenkins上显示
访问web服务器,一键部署成功
代码上线流程
发布者:LJH,转发请注明出处:https://www.ljh.cool/36061.html