Jenkins中的概念
Jenkins是什么
Jenkins
是基于java
开发的持续集成工具,使开发者从繁杂的集成中解脱出来,专注于更为重要的业务逻辑实现上。
Jenkins Pipeline
Jenkins Pipeline
是一套插件,用于支持用户在Jenkins
中实现和集成连续交付管道。- 连续交付管道描述了从软件的版本开发阶段到用户交付阶段的自动化流程。在
Jenkins
中,一旦侦测到符合条件的软件版本更迭,便会触发一套预先定义的流程(Build-Test-Deployment)。 Jenkins Pipeline
提供了一系列可扩展的工具,用户利用这些工具,可以实现不同复杂度的交付管道。
Jenkinsfile
Jenkinsfile
是一种用代码形式描述Jenkins Pipeline
的文件。
创建Jenkins Pipeline
Pipeline的创建方式
创建Jenkins Pipeline
可以通过Web UI以及Jenkinsfile
两种形式实现。使用Jenkinsfile
实现Pipeline
有如下优点
- 自动为所有Branches
与Pull Requests
创建管道
- 在Pipeline
上进行Code review/iteration
- Pipeline
的审查跟踪
- 单一数据源(Single source of truth)
Jenkinsfile的结构
//Declarative//
pipeline {
agent any #agent用于指示Pipeline的执行节点
stages {
stage('Build') { #stage描述Pipeline中的一个步骤
steps { #steps描述该stage的具体执行过程
sh 'build.sh'
}
}
stage('Test') {
steps {
sh 'test.sh'
}
}
stage('Deploy') {
steps {
sh 'make publish'
}
}
}
}
//Script//
node { #分配执行节点
stage('Build') {
sh 'make'
}
stage('Test') {
sh 'make check'
junit 'reports/**/*.xml'
}
stage('Deploy') {
sh 'make publish'
}
}
Jenkinsfile有Declarative与Script两种形式
在SCM中定义Pipeline
Jenkins的Label及Node
Label
:一组结点node
:单个结点