DevOps持续集成与交付

概述

Jenkins是一个支持容器化部署的、使用Java运行环境的开源软件,使用Jenkins平台可以定制化不同的流程与任务、以自动化的机制支持DevOps领域中的CI与CD,在软件开发与运维的流程中自动化地执行软件工程项目的编译、构建、打包、测试、发布以及部署,本文主要是描述使用Jenkins支持DevOps的实施过程。

环境描述

|-------------------------------------------------------------------|
| A服务器的IP地址:192.168.0.100 该服务器部署基于Java应用业务、Docker容器引擎 |
| B服务器的IP地址:192.168.0.102 该服务器部署Nexus仓库服务、GitLab仓库服务、Docker容器引擎 |
| C服务器的IP地址:192.168.0.106 该服务器部署Jenkins平台服务、Docker容器引擎 |

准备服务器运行环境

如上所示,在A服务器上安装Java应用运行环境、安装Docker容器运行环境

如上所示,在B服务器上运行GitLab仓库服务、安装Nexus仓库服务

如上所示,在C服务器上运行maven、Jenkins

本地代码工程

如上所示,将本地开发环境的项目代码工程提交到B服务器的GitLab的代码仓库

如上所示,本地开发环境使用maven编译打包构建、安装到本地仓库、部署到服务器B的nexus仓库成功

Jenkins运行环境配置

如上所示,在C服务器上生成GitLab的客户端远程访问权限的ssh-key

如上所示,在GitLab用户设置页面配置git的ssh-key成功

如上所示,在C服务器上配置B服务器的GitLab的访问地址与IP映射

如上所示,在C服务器上拉取B服务器GitLab上的test2023项目代码工程成功

Jenkins构建项目配置

如上所示,在Jenkins页面上安装Blue Ocean插件成功

如上所示,在Jenkins页面上新建一个test2023的流水线项目

如上所示,在Jenkins页面上,配置项目test2023的本地GitLab仓库对应的代码工程目录

如上所示,在Jenkins页面上,配置项目test2023的Jenkinsfile,该文件用于Jenkins执行流水线任务的执行步骤

|---------------------------------------------------------------------------------------------|
| /usr/lib/systemd/system/jenkins.service hudson.plugins.git.GitSCM.ALLOW_LOCAL_CHECKOUT=true |

如上所示,在C服务器上文件设置Jenkins环境变量、重新启动Jenkins服务

|-------------------------|
| /etc/maven/settings.xml |

如上所示,在C服务器上设置maven仓库的配置

如上所示,在Jenkins页面的Blue Ocean上构建项目test2023成功

Jenkins部署项目配置

|--------------------------------------------------------------------------------------|
| ssh-keygen ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.0.100 ssh 192.168.0.100 |

如上所示,在C服务器上生成ssh免密登录的公钥私钥,将公钥发送给A服务器,C服务器可以免密登录A服务器执行部署Java应用服务

如上所示,在项目工程代码上编码部署发布的脚本deploy.sh

如上所示,在Jenkinsfile上增加部署发布的步骤deploy.sh、设置Jenkins使用root用户启动

如上所示,在Jenkins页面Blue Ocean显示项目构建成功、发布项目成功

如上所示,在A服务器上显示Java应用test2023部署运行成功

相关推荐
Decay__10 小时前
VMware 安装 SQL Server 双节点 AlwaysOn 可用性组教程 —— WSFC、AG 与侦听器完整部署(系列核心篇)
运维·数据库·sql·mysql·架构
测试界的小码农10 小时前
【Linux 命令实战(06):Linux 文件权限管理,掌握 chmod、chown、chgrp】
linux·运维·服务器
陈希12311 小时前
负载均衡与高可用:LVS、HAProxy、Keepalived 实战
运维·负载均衡·lvs
SQL7715 小时前
IT运维发展史,一部宏伟史诗
运维·运维发展史
分布式存储与RustFS16 小时前
Terraform 状态文件老在本地丢、并发还撞锁:把 state 锁进 RustFS
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
csdn_aspnet16 小时前
macOS 10 、Docker 玩轉 MySQL
运维·mysql·macos·docker·容器·mac
爱和冰阔落18 小时前
【Linux网络】TCP 半包粘包怎么解决?从长度报头、JSON 拆包到网络计算器完整实战
linux·运维·网络·tcp/ip
aifannihao18 小时前
GitHub Actions 锁文件实测:6 个 uses 只锁住 2 个
python·ci/cd·标准库·供应链安全·github actions
无奈笑天下1 天前
银河麒麟上nproc命令教程详解
linux·运维·服务器
威嵌神州1 天前
嵌入式排故实录:高并发下串口数据“超时丢包”的根因剖析与架构优化
运维·服务器·嵌入式硬件·缓存