Jenkins是一个用Java编写的开源的持续集成工具。在与Oracle发生争执后,项目从Hudson项目复刻。git
Jenkins提供了软件开发的持续集成服务。它运行在Servlet容器中(例如Apache Tomcat)。它支持软件配置管理(SCM)工具(包括AccuRev SCM、CVS、Subversion、Git、Perforce、Clearcase和RTC),能够执行基于Apache Ant和Apache Maven的项目,以及任意的Shell脚本和Windows批处理命令。Jenkins的主要开发者是川口耕介。Jenkins是在MIT许可证下发布的自由软件。github
能够经过各类手段触发构建。例如提交给版本控制系统时被触发,也能够经过相似Cron的机制调度,也能够在其余的构建已经完成时,还能够经过一个特定的URL进行请求。web
基本环境搭建好后,咱们来配置一个工做流亲自感觉一下docker
工做流在Jenkins中被称为pipeline,pipeline的运行行为由用户本身定义,定义的内容存放在一个Jenkinsfile文件中,并将该文件存放在git仓库的根目录,大体的流程以下shell
下面是具体的配置步骤微信
pipeline {
agent {
label 'master' /* 执行节点 */
}
stages {
stage('Build') {
steps {
echo 'Building'
}
}
stage('Test') {
steps {
echo 'Testing'
}
}
stage('Deploy - Staging') {
steps {
sh './deploy staging'
sh './run-smoke-tests'
}
}
stage('Sanity check') {
steps {
input "Does the staging environment look ok?"
}
}
stage('Deploy - Production') {
steps {
echo './deploy production'
}
}
}复制代码
post {
always {
echo 'One way or another, I have finished'
deleteDir() /* clean up our workspace */
}
success {
echo 'I succeeeded!'
}
unstable {
echo 'I am unstable :/'
}
failure {
echo 'I failed :('
}
changed {
echo 'Things were different before...'
}
}
}
复制代码
以上是一个基本的Jenkinsfile模板,其中有如下几个关键概念工具
agent
- 指定在哪台机器上执行任务,还记得上面配置Node
时候填的Label
吗,若是这两个label
匹配得上,就在该Node
中执行 stage
- 组成工做流的大的步骤,这些步骤是串行的,例如build
,test
,deploy
等 steps
- 描述stage中的小步骤,同一个stage
中的steps
能够并行 sh
- 执行shell
命令 input
- 须要你手动点击肯定,Pipeline
才会进入后续环节,经常使用于部署环节,由于不少时候部署都须要人为的进行一些确认 post
- 全部pipeline执行完成后,会进入post环节,该环节通常作一些清理工做,同时还能够判断pipeline的执行状态 了解了这些后,你会发现写一个Jenkinsfile是一件很容易的事情。好了,如今要测试pipeline功能,把上面的代码中的sh换成echo,拷贝到你的Jenkinsfile中,并存放在git仓库的根目录post
回到Jenkins web页面,添加pipeline测试
若是你想每次git commit
时自动执行该pipeline,有两种方法,一种是让Jenkins对git进行轮询,每分钟检查git仓库有没有更新,以下配置ui
另外一种方式是使用git提供的hook,该方式原理是git一旦提交,便会触发hook中的脚本,让脚本给Jenkins发送执行pipeline的指令,这种方式更优雅,但相应要作的事情更多一点,这里就不演示这种方法了,感兴趣的同窗能够本身研究一下。
最后,咱们须要设置git的地址,其中的授信设置,和上面说的Master到Node的授信设置一致
设置完毕后,一旦你的git仓库收到新的提交,就会触发这个pipeline的运行,如下这张图是上面Jenkinsfile例子的运行状态,能够看到当运行到Sanity check这一步时,须要你手动触发是否执行后面的操做。
项目地址:https://github.com/changdaye/jenkins-docker-demo/
步骤图形化插件介绍: https://wiki.jenkins.io/display/JENKINS/Pipeline+Stage+View+Plugin