阅读:5061回复:0
HKDAS-CI/CD可持续集成/部署详解(新东西,求赞)
因为很多同学可能第一次了解什么是ci-cd,什么是Jenkins,首先会介绍下cicd的概念及应用场景,之后再详细介绍下Jenkins的概念、安装及使用。
什么是CI-CD? 首先明确CI-CD是一种技术,而并不是指一个软件。 CI:可持续集成(简单将就是通过公用代码仓库将开发人员的代码进行统一集成管理,与集中测试) CD:可持续部署(将集成测试后的代码自动部署到你需要的地方) 注意:这里说的额可持续的意思不是说一直运行,而是可以随意执行的意思。 简单了解完CICD,你肯定在想这个技术倒是应用于什么场景?优势是什么? cicd主要是将开发工作与测试工作两个部分进行了无缝衔接,开发人员只需要将代码提交公用仓库,代码就会自动进行编译,检测,部署到客户端等操作。比如频繁需要开发部署的应用程序。 采用CI/CD流水线后: 1.项目上线时间大大缩减,不仅提高发布速度及代码质量,还可以以增量方式连续添加新功能,是产品具有更少的缺陷。 2.整个交付流水线所有阶段都是对团队公开的,所有成员都可以检测、改进及验证。 3.CD流水线提供开发到客户的快速反馈循环,减少工作量。 常见的CI/CD框架: 图片:clipboard.png 1.开发人员将代码通过git/svn上传到公有仓库(GitLab/Svn/Gogs/Github)。 2.公有仓库通过WebHook将公有仓库的代码推送到Jenkins(cicd工具,下面会详细介绍)。 3.Jenkins工具拥有将代码构建、编译、分析、单元测试、镜像的功能(需要自行配置)。 4.可以将结果存储到镜像管理仓库Harbor,将服务跟新到K8s。(这里我们是与HKDAS进行结合) 5.最后用户通过电脑进行访问,就可以看到已经部署完成的程序。 Jenkins介绍及使用:http://jenkins-ci.org/ 官网 Jenkins是一个CD/CD的软件,允许持续集成与持续交付项目(就是集成测试与程序部署),支持分布式,最主要是开源免费。 主要作用是: 1.可以持续的自动构建/测试软件项目 2.可以监控开发流程、邮件报警、定位问题等 发布流程: 产品设计-->开发者提交代码-->自动测试功能-->自动上线 Jenkins的安装: 1.官网下载一个jenkins.war包(推荐使用war是使用比较方便) 2.Centos(也支持windows,这里以Linux为主)中直接运行 Java -Jar Jenkins.war 可以直接启动 3.启动完成后直接访问ip:8080进入web界面,可以在启动时指定端口 4.第一次运行登陆web界面需要进行解密,在服务器中输入 cat /root/.jenkins/secrets/initialAdminPassword 查看密码 5.配置管理员账号,用以之后的管理 ------------------------------------------------------------------------------------------------------------------ jenkins开机自启脚本 #!/bin/bash ###主要目的用于开机启动服务,不然 启动jenkins.war包没有java -jar的权限 JAVA_HOME=/usr/local/jdk1.8 #pid用于判断jenkins是否已经启动 pid=`ps -ef | grep jenkins.war | grep -v 'grep'| awk '{print $2}'| wc -l` if [ "$1" = "start" ];then if [ $pid -gt 0 ];then echo 'jenkins is running...' else ### java启动服务 配置java安装根路径,和启动war包存的根路径配置端口 nohup $JAVA_HOME/bin/java -jar /usr/local/jenkins/jenkins.war --httpPort=8081 2>&1 & fi elif [ "$1" = "stop" ];then exec ps -ef | grep jenkins | grep -v grep | awk '{print $2}'| xargs kill -9 echo 'jenkins is stop..' else echo "Please input like this:"./jenkins.sh start" or "./jenkins stop"" fi ------------------------------------------------------------------------------------------------------------------- Jenkins与gogs集成: Jenkins+gogs(也是一种代码仓库,想了解可以自行百度): 1.插件条件:gogs集成需要安装gogs插件(在插件管理中的直接搜索gogs直接安装),安装插件后配置全局工具配置(jdk,maven,git)。 2.安全条件:配置密钥(建立Jenkins与gogs的连接) 查看centos下.ssh/.pub的公钥复制到gogs中(生成公钥的方式略,百度上很多),将其添加到gogs的密钥配置中。 3.新建maven(这里以maven项目为主)工程,对项目简单配置,在源码管理选择git(因为gogs支持git工具)管理,输入gogs中的url连接(需要配置第2步的密钥,否则报错) 一般配置页面:保留最大构建数 图片:clipboard.png 代码管理配置页面:配置与gogs的关联 图片:clipboard.png 4.构建测试,看是否拉取到了代码,也可以查看 /root/.jenkins/workspace下是否有项目war(这里包的方式是你maven中配置的打包方式 clean package )。 登陆gogs仓库进入仓库设置: 图片:clipboard.png 5.推送工程(自动同步):gogs进入仓库中设置web钩子,将新增的数据通过订阅的方式传输到Jenkins(可以自定义推送的触发条件)。 推送地址为:http(s)://<你的Jenkins地址>/gogs-webhook/?job=<你的Jenkins任务名> 也可以通过Token_name配置钩子,http://username:password@ip:port/ 同时Jenkins需要在构建触发器中选中Build when a change is pushed to Gogs的选择(当gogs中代码改变会重新构建)。 gogs仓库web钩子配置: 图片:clipboard.png Jenkins构建触发器配置: 图片:clipboard.png 构建:也就是打包(这里是maven打包) 图片:clipboard.png 6.接下来使用Deploy to container Plugin 插件(没有需要安装)来管理war包自动部署到Tomcat中。需要配置build(配置打包goals:clean package -Dmaven.test.skip=ture)与构建后操作(配置war包地址与Tomcat地址与访问权限,注意需要先去配置Tomcat,在构建是tomcat需要开启)。 构建后操作:(也就是打包后的操作) 图片:1.png 6.1 如果需要使用jar包部署,可以使用shell脚本的方式。 图片:2.png 7.构建后存档及邮件告警 图片:3.png 更多详情下回分解。 |
|