CI:持续集成 CD:持续部署

概念

定义了CD模式,帮助Jenkins从CI到CD转变,定义了代码构建、测试和发布完整的构建过程
node 机器,用于运行stage代码块
stage 块定义,用于定义任务子集,例如构建部分
step 一项任务,定义一个步骤告诉Jenkins要做什么

代码上线流程

pipeline Jenkins下的CD - 图1

pipeline Jenkins下的CD - 图2

安装与pipeline相关的所有插件

Jenkins下新建pipeline任务

pipeline Jenkins下的CD - 图3

配置丢弃旧的构建

配置pipeline 流水线 使用script脚本

  1. pipeline{
  2. agent any
  3. stages{
  4. stage("get code"){
  5. steps{
  6. echo "get code from scm"
  7. }
  8. }
  9. stage("package"){
  10. steps{
  11. echo "package code"
  12. }
  13. }
  14. stage("deploy"){
  15. steps{
  16. echo "deploy package to node"
  17. }
  18. }
  19. }
  20. }

pipeline Jenkins下的CD - 图4

在gitlab配置脚本 让pipeline读取执行

pipeline Jenkins下的CD - 图5

上线nginx代码脚本

  1. pipeline{
  2. agent any
  3. stages{
  4. stage("get code"){
  5. steps{
  6. echo "get code from scm"
  7. }
  8. }
  9. stage("unit test"){
  10. steps{
  11. echo "unit test"
  12. }
  13. }
  14. stage("package"){
  15. steps{
  16. sh tar zcf /opt/web-${BUILD_ID}.tar.gz ./* --exclude=.git --exclude=Jenkinsfile’
  17. }
  18. }
  19. stage("deploy"){
  20. steps{
  21. sh 'ssh 192.168.31.238 "cd /usr/share/nginx && mkdir web-${BUILD_ID}"'
  22. sh 'scp /opt/web-${BUILD_ID}.tar.gz 192.168.31.238:/usr/share/nginx/web-${BUILD_ID}'
  23. sh 'ssh 192.168.31.238 "cd /usr/share/nginx/web-${BUILD_ID} && tar zxf web-${BUILD_ID}.tar.gz && rm -rf web-${BUILD_ID}.tar.gz"'
  24. sh 'ssh 192.168.31.238 "cd /usr/share/nginx && rm -rf html && ln -s web-${BUILD_ID} /usr/share/nginx/html"'
  25. }
  26. }
  27. }
  28. }