jenkins 流水线

pipeline { 
	playbox any
	environment {
		projectname = 'dev-xman'
		appname='xman-playbox'
		result='xman-playbox'
		version='v1.0'
	}
	stages{
		stage('获取代码') {
			steps{
				sh '''
				cd /home/tomcat/.jenkins/workspace/
				rm -rf $/home/tomcat/.jenkins/workspace/*
				if [ ! -d $appname ]; then 
					mkdir $appname 
				fi
				'''
				dir('/home/tomcat/.jenkins/workspace/xman-playbox'){
					git branch: "master", credentialsId: '76882b93-5854-44f1-b109-0d7e8c1d2f13', url: 'http://xxxx.com/xman-playbox.git'
				}
			}
		}
		stage('代码编译') {
			steps{
			    sh '''
			    cd /home/tomcat/.jenkins/workspace/xman-playbox
			    ls
				'''
			}
		}
		stage('制作镜像') {
		    steps {
			script {
				withDockerRegistry(credentialsId: '2a69663f-31cb-4c1c-99a9-c42437cbbf90',url:'https://registry.xxxx.com') {
					def customImage = docker.build("registry.xxxx.com/dev-xman/${appname}:${version}","/home/tomcat/.jenkins/workspace/xman-playbox/")
					customImage.push()
				}
			} 

		      }
		}
	}
}

CI CD

持续集成(Continuous Integration)

持续集成 强调开发人员提交了新代码之后,立刻进行构建、(单元)测试。根据测试结果,我们可以确定新代码和原有代码能否正确地集成在一起

持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽快地发现集成错误。许多团队发现这个过程可以大大减少集成的问题,让团队能够更快的开发内聚的软件

之后将程序保存到 Artifact Repository 里 , 持续集成的核心措施, 集成到主干前, 自动化测试, 只有通过,才可以集成到主干。 成功集成到主干后,也意味着可以部署上线。 这便牵扯出另外两个相关概念,持续交付、持续部署。

持续交付(Continuous Delivery)

持续交付 在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境的「类生产环境」(production-like environments)中。比如,我们完成单元测试后,可以把代码部署到连接数据库的 Staging 环境中更多的测试。

持续交付 就是定时地、自动地从 Artifact Repository 将最新的程序部署到测试环境里。

持续交付 指的是,频繁地将软件的新版本,交付给质量团队或者用户,以供评审。如果评审通过,代码就进入生产阶段。 持续交付可以看作持续集成的下一步。它强调的是,不管怎么更新,软件是随时随地可以交付的。
注意,持续交付在自动化测试和集成结束后,不一定会自动部署。如果有自动部署,则是持续部署的概念了

持续部署(Continuous Deployment)

持续部署则是在持续交付的基础上,把部署到生产环境的过程自动化。

开发模式

敏捷开发

敏捷开发(Agile)是一种以人为核心、迭代、循序渐进的开发方法。

在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。

简单地来说,敏捷开发并不追求前期完美的设计、完美编码,而是力求在很短的周期内开发出产品的核心功能,尽早发布出可用的版本。然后在后续的生产周期内,按照新需求不断迭代升级,完善产品。

DevOps

DevOps 是 Development 和 Operations 的合成词,其目标是要加强开发人员、测试人员、运维人员之间的沟通协调。如何实现这一目标呢?需要我们的项目做到持续集成、持续交付、持续部署。

瀑布式开发

瀑布式开发是一种老旧的,正在过时的计算机软件开发方法。最开始的软件行业普遍采用这种方法,但是这种方法套用自传统工业生产,不适应计算机软件开发的具体情况。

瀑布模型式是最典型的预见性的方法,严格遵循预先计划的需求、分析、设计、编码、测试的步骤顺序进行。步骤成果作为衡量进度的方法,例如需求规格,设计文档,测试计划和代码审阅等等。

瀑布式方法在需求不明并且在项目进行过程中可能变化的情况下基本是不可行的。