现在的 jenkins 版本 +pipeline 插件
这是 jenkins2.0 的核心特性. 也是最适合持续交付的 feature.
与以往的通过 Web 交互来配置流程不同, Jenkins 也走向了正规的工程化交付方式即使用配置文件. 这本身也印证了行业的经验everything is code
这样就再也不用每个项目都手工配置或者搞各种恶心的项目模板了.
jenkins 的 pipeline 主要是通过一个配置文件或者 job 里面的 pipeline 配置来设定每个 job 的步骤.
pipeline 定义了几乎所有要用到的流程, 比如执行 shell, 存档, 生成测试报告, 发布报告等.
https://jenkins.io/doc/book/pipeline-as-code/
node(‘linux’){
git url: 'https://github.com/jglick/simple-maven-project-with-tests.git'
def mvnHome = tool 'M3'
env.PATH = "${mvnHome}/bin:${env.PATH}"
sh 'mvn -B clean verify'
}
举一个 sonar 的例子
node {
stage "auth"
sshagent(['xxxx-xxxx-xxx-xxxx-xxxx']){
stage 'Checkout'
git url: 'git@git.tonghuashun.com:tonghuashun/tonghuashun-income.git'
}
stage 'Build'
sh "mvn clean install -Dmaven.test.skip=true"
stage "Sonar"
sh "mvn sonar:sonar"
}
建议是在每个项目里面让研发放一个 Jenkinsfile, jenkins 的其他插件可以自动读取这些配置批量导入已有的项目.
这是一个 Jenkinsfile 的命令查询工具. 辅助新手编写持续交付的配置指令. 非常好用.
node {
git url: 'https://github.com/joe_user/simple-maven-project-with-tests.git'
def mvnHome = tool 'M3'
sh "${mvnHome}/bin/mvn -B -Dmaven.test.failure.ignore verify"
step([$class: 'ArtifactArchiver', artifacts: '**/target/*.jar', fingerprint: true])
step([$class: 'JUnitResultArchiver', testResults: '**/target/surefire-reports/TEST-*.xml'])
}