网站建设方案书格式,莱芜论坛莱芜话题,龙华公司做网站,大连网站开发建一、jenkins是什么1.Jenkins的前身是Hudson#xff0c;采用JAVA编写的持续集成开源工具。Hudson由Sun公司在2004年启动#xff0c;第一个版本于2005年在java.net发布。2007年开始Hudson逐渐取代CruiseControl和其他的开源构建工具的江湖地位。在2008年的JavaOne大会上在开发者…一、jenkins是什么1.Jenkins的前身是Hudson采用JAVA编写的持续集成开源工具。Hudson由Sun公司在2004年启动第一个版本于2005年在java.net发布。2007年开始Hudson逐渐取代CruiseControl和其他的开源构建工具的江湖地位。在2008年的JavaOne大会上在开发者解决方案中获得杜克选择大奖Dukes Choice Award。在2010年11月期间因为Oracle对Sun的收购带来了Hudson的所有权问题。主要的项目贡献者和Oracle之间尽管达成了很多协议但有个关键问题就是商标名称“Hudson”。甲骨文在2010年12月声明拥有该名称并申请商标的权利。 因此2011年1月11日有人要求投票将项目名称从“Hudson”改为“Jenkins”。2011年1月29日该建议得到社区投票的批准创建了Jenkins项目。2011年2月1日甲骨文表示他们打算继续开发Hudson并认为Jenkins只是一个分支而不是重命名。因此Jenkins和Hudson继续作为两个独立的项目每个都认为对方是自己的分支。到2013年12月GitHub上的Jenkins拥有567个项目成员和约1,100个公共仓库与此相对的Hudson有32个项目成员和17个公共仓库。到现在两者的差异更多应该说Jenkins已经全面超越了Hudson。此外大家可能是出于讨厌Oracle的情绪作为Java开发者天然地应该支持和使用Jenkins。后面Hudson被Oracle捐给了Eclipse基金会所以右边这老头有个Eclipse的光环加持。2.jenkins简介Jenkins是一款开源 CICD 软件用于自动化各种任务包括构建、测试和部署软件的流程化管理软件是一款插件式的管理软件方便功能扩展目前有几百个插件可以使用覆盖了版本管控、构建工具、代码质量、构建通知、集成外部系统、UI定制等持续集成的特点 它是一个自动化的周期性的集成测试过程从检出代码、编译构建、运行测试、结果记录、测试统计等都是自动完成的无需人工干预需要有专门的集成服务器来执行集成构建需要有代码托管工具支持持续集成的作用保证团队开发人员提交代码的质量减轻了软件发布时的压力持续集成中的任何一个环节都是自动完成的无需太多的人工干预有利于减少重复过程以节省时间、费用和工作量3.为什么要用jenkins一般规模较小的项目对外部系统的依赖和服务调用很小对于软件的集成不是问题。但是随着软件复杂度的增加对集成提出了更多的要求持续集成的好处就体现出来了。1对重复的编译发布等操作进行抽象减少重复过程。2及早发现各种冲突和错误减少风险。3任何时间、任何地点生成可部署的软件4.jenkins特点易安装仅仅一个 java -jar jenkins.war从官网下载该文件后直接运行无需额外的安装更无需安装数据库易配置提供友好的GUI配置界面变更支持Jenkins能从代码仓库Subversion/CVS中获取并产生代码更新列表并输出到编译输出信息中支持永久链接用户是通过web来访问Jenkins的而这些web页面的链接地址都是永久链接地址因此你可以在各种文档中直接使用该链接集成E-Mail/RSS/IM当完成一次集成时可通过这些工具实时告诉你集成结果据我所知构建一次集成需要花费一定时间有了这个功能你就可以在等待结果过程中干别的事情JUnit/TestNG测试报告也就是用以图表等形式提供详细的测试报表功能支持分布式构建Jenkins可以把集成构建等工作分发到多台计算机中完成文件指纹信息Jenkins会保存哪次集成构建产生了哪些jars文件哪一次集成构建使用了哪个版本的jars文件等构建记录支持第三方插件使得Jenkins 变得越来越强大二、jenkins的CI/CD流程开发环境推送代码-编译-生成的jar包发布到私服-打包为docker镜像-推送到Harbor镜像仓库-部署到k8s集群-健康检查成功微信通知c结束返回成功|失败微信通知ci结束返回失败测试环境1、推送代码-编译-生成的jar包发布到私服-打包为docker镜像-推送到Harbor镜像仓库成功微信通知c结束返回成功|失败微信通知ci结束返回失败2、测试人员触发部署到k8s集群-健康检查成功微信通知c结束返回成功|失败微信通知ci结束返回失败预发布环境1、推送代码-编译-生成的jar包发布到私服-打包为docker镜像-推送到Harbor镜像仓库成功微信通知c结束返回成功|失败微信通知ci结束返回失败2、测试人员|运维人员 触发部署到k8s集群-健康检查成功微信通知c结束返回成功|失败微信通知ci结束返回失败生产环境1、推送代码-编译-生成的jar包发布到私服-打包为docker镜像-推送到Harbor镜像仓库成功微信通知c结束返回成功|失败微信通知ci结束返回失败2、运维人员 触发部署到k8s集群-健康检查成功微信通知c结束返回成功|失败微信通知ci结束返回失败三、jenkins的部署Ⅰ、SSH部署1.java环境yum install -y java-11-openjdk2.jenkins的war包下载jenkins官网Jenkins3.进行初始化java -jar jenkins.war##注意8080端口不要被占用web访问8080端口4.设置为系统服务4.1创建一个脚本文件mkdir -p /home/jenkins/.auto
cd /home/jenkins/.auto
vim jenkins.sh#!/bin/bash
export JENKINS_HOME/home/.jenkins
export MAVEN_HOME/usr/local/maven/apache-maven-3.6.3
export JAVA_HOME/usr/local/java/jdk1.8.0_152
export JRE_HOME/usr/local/java/jdk1.8.0_152/jre
export CLASSPATH$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH$MAVEN_HOME/bin:$JRE_HOME/bin:$PATH:$HOME/binpidps -ef | grep jenkins.war | grep -v grep| awk {print $2}| wc -lif [ $1 on ];thenif [ $pid -gt 0 ];thenecho jenkins is running
else#配置java安装根路径,和启动war包的存储路径nohup /usr/java/jdk1.8.0_152/bin/java -jar /home/jenkins/jenkins.war /home/jenkins/jenkins.log 21 fielif [ $1 off ];thenexec ps -ef | grep jenkins | grep -v grep | awk {print $2}| xargs kill -9fichmod x jenkins.sh4.2创建jenkins.servicevim /lib/systemd/system/jenkin.service[Unit]
DescriptionJenkins
Afternetwork.target[Service]
Typeforking
ExecStart/home/jenkins/.auto/jenkins.sh on
ExecReload
ExecStop/home/jenkins/.auto/jenkins.sh off
PrivateTmptrue[Install]
WantedBymulti-user.target启动jenkinssystemctl daemon-reload
systemctl enable --now jenkins.serviceⅡ、docker下部署前提docker http://t.csdn.cn/Vp2ZVdocker-compose http://t.csdn.cn/uDRK61.创建docker-compose.yml文件version: 3
services:docker_jenkins:user: rootrestart: alwaysimage: jenkins/jenkins:ltscontainer_name: jenkinsports:- 8888:8080- 50000:50000volumes:- /docking/jenkins_home/:/var/jenkins_home- /docking/docker.sock:/var/run/docker.sock- /docking/docker:/usr/bin/docker- /docking/docker-compose:/usr/local/bin/docker-compose