Docker安装jenkins
参考链接:https://www.jianshu.com/p/64a0b1be55b2
持续集成(CI)
软件开发中,集成是一个很可能发生未知错误的过程。持续集成是一种软件开发实践,希望团队中的成员频繁提交代码到代码仓库,且每次提交都能通过自动化测试进行验证,从而使问题尽早暴露和解决。
持续集成的好处是什么?
持续集成可以使问题尽早暴露,从而也降低了解决问题的难度,正如老马所说,持续集成无法消除bug,但却能大大降低修复的难度和时间。
持续交付(CD)
在持续集成的基础,将代码部署到类似生产环境的测试环境上,进行测试。
Jenkins团队一开始实现Jenkins pipline时,Groovy语言被选择作为基础来实现pipline.
pipline语法
虽然Groovy同时支持静态类型与动态类型,但是定义变量习惯使用def关键词
//支持命名参数
def createName(String givenName,String familyName){
return givenName + " " +familyName;
}
//调用时
createName familyName = "Lee",givenName = "Bruce"
//支持默认参数
def sayHello(string name = "dahua"){
printf "hello ${name}"
}
sayHello()
支持单引号 双引号 但是单引号不能插值
"hello ${name}"
'hello ${name}' //不支持
支持三引号 三双引号
def name = 'world'
def aString = '''
line two
line three
'''
def name = "world"
def aString = """
line two
line three
"""
支持闭包
def codeBlock = {print "hello closure"}
//可作函数调用
codeBlock() //结果打印: hello closure
def pipeline(closure){
closure()
}
//可做参数传递
pipeline(codeBlock)
//如果把闭包定义语句去掉
pipline {
print "hello world"
}
pipline组成
流水线的内容包括执行编译、打包、测试、输出测试结果。
设计最简单的pipline
pipeline{
agent any
stages{
stage('build'){
steps{
echo "Hello World"
}
}
}
}
pipeline代表整条流水线的逻辑
stage 部分代表流水线的阶段。每个阶段必须有名称
stages 流水线中多个stage容器,必须包含一个stage
steps 代表一个或多个具体步骤,steps部分至少包含一个步骤,echo就是一个步骤。一个stage里面有且只有一个steps
agent 指定流水线执行未知(物理机 虚拟机 docker)