持续集成简介
持续集成指的是,频繁地(一天多次)将代码集成到主干。
它的好处主要有两个。
快速发现错误。每完成一点更新,就集成到主干,可以快速发现错误,定位错误也比较容易。
防止分支大幅偏离主干。如果不是经常集成,主干又在不断更新,会导致以后集成的难度变大,甚至难以集成。
持续集成的目的,就是让产品可以快速迭代,同时还能保持高质量。它的核心措施是,代码集成到主干之前,必须通过自动化测试。只要有一个测试用例失败,就不能集成。
Martin Fowler说过,“持续集成并不能消除Bug,而是让它们非常容易发现和改正。”
在windows上安装Jenkins
1.安装JDK,最好是1.8
2.下载最新版本的Jenkins.war。
下载网址http://ftp.yz.yamagata-u.ac.jp/pub/misc/jenkins/war/2.86/jenkins.war
3.打开cmd窗口路径指向Jenkins.war下载的路径,输入命令java -jar jenkins.war
4.浏览器访问 localhost:8080,创建初始管理员帐号即可。
5.jenkins默认的密码
jenkins默认会保存一份初始密码在``C:\Users\your_username.jenkins\secrets```中,当你找不到初始密码时不妨去看看。
建个最简单的测试job
要求
假如有个单元测试任务要求每隔15分钟运行一次,并且要求整个团队都可以实时看到测试结果。
例子:import unittest
class StringTestCase(unittest.TestCase):
def setUp(self):
self.test_string = "This is a string"
def testReverse(self):
self.assertEqual("gnirts a si sihT", self.test_string[::-1])
def testSplit(self):
expected = ["This", "is", "a", "string"]
self.assertEqual(expected, self.test_string.split(" "))
self.assertEqual(expected, self.test_string.split())
def testLower(self):
self.assertEqual("this is a string", self.test_string.lower())
def testUpper(self):
self.assertEqual("THIS IS A STRING", self.test_string.upper())
def testRstrip(self):
string = "This is a string "
self.assertEqual(self.test_string, string.rstrip())
def testLstrip(self):
string = " This is a string"
self.assertEqual(self.test_string, string.lstrip())
def testStrip(self):
string = " This is a string "
self.assertEqual(self.test_string, string.strip())
if name == ‘main’:
unittest.main()
配置jenkins job
第一步:新建job
第二步选择free style job:
配置jenkins只保留最新的5次构建的结果,这样做可以节省硬盘空间
设置构建任务的workspace,也就是说构建任务默认会在这个目录下进行
配置每隔15分钟执行一次测试
配置测试执行脚本,也就是直接运行python unittest代码 python string_test_case.
最后点击保存。
手动执行job
点击立即构建
在构建历史下,选择最新的一次构建结果
点击控制台输出就可看的测试结果
因为我设置的是15分钟自动运行一次,所以会每隔15分钟自动构建一下。
总结
jenkins的job实际上就是各种策略触发的一些任务,常见策略有定制任务,代码提交自动触发任务等
jenkins的job核心就是在命令行中执行各种命令,这也是为什么我们以前的课程代码全部都在命令行里跑的原因,因为只要能在命令行跑通就可以顺利的集成到jenkins job里