Jenkins pipeline
1.Jenkins pipeline基本概述
1.什么是Pipeline?
可以理解将我们开发部署环境生态链的每一步都通过pipeline流水线串联起来,并代码化,使得我们开发人员一键就能将本地的代码发布到测试环境经行测试发布,最终实现持续集成持续发布。
2.为什么要使用Pipeline?
之前传统的开发部署流程,每一步都需要人为干预,迁移到pipeline能够实现每一步自动化,不需要人为干预,所有流程都可以通过代码自动化。
3.迁移pipeline有什么好处?
可以实现持续集成持续部署,节省产品发布时间,优化部署策略,节省人力成本,自动化脚本复用等等
pipeline {
agent any
stages{
stage('获取代码') {
steps {
checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: '4dc04ffd-15bf-46e3-a942-2b58f37bc26b', url: 'git@gitlab.zhangxianwei.com:dev/java.git']]])
}
}
stage('代码检测'){
steps {
echo "sonarqube check...."
}
}
stage('代码构建'){
steps {
echo "maven build....."
}
}
stage('代码部署'){
steps {
echo "echo sh"
// sh -x '/server/scripts/deploy_html_tag.sh'
}
}
}
}
2. pipeline实现代码自动化部署
代码拉取->代码检测->代码构建->代码部署->消息通知
1.新建一个流水线Jenkins任务
2.点击配置,配置pipeline基本信息,选择参数化构建
3.配置流水线pipeline代码,如下
4.pipeline代码如下
pipeline {
agent any
stages{
stage('获取代码') {
steps {
checkout([$class: 'GitSCM', branches: [[name: '${git_version}']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: '4dc04ffd-15bf-46e3-a942-2b58f37bc26b', url: 'git@gitlab.zhangxianwei.com:dev/java.git']]])
}
}
stage('代码检测'){
steps {
sh label: '', script: 'mvn sonar:sonar -Dsonar.projectKey=java -Dsonar.projectName=${JOB_NAME} -Dsonar.sources=. -Dsonar.host.url=http://sonar.zhangxianwei.com:9000 -Dsonar.login=9d43745c0e45eaee7a6b749e7778f21a0a808ab5'
}
}
stage('代码构建'){
steps {
sh label: '', script: 'cd ${WORKSPACE} && mvn clean package -Dmaven.test.skip=true'
}
}
stage('代码部署'){
steps {
sh label: '', script: 'sh -x /server/scripts/deploy_java_tag.sh'
}
}
}
post { //stages所有任务执行后触发post
failure { //构建失败通知
dingTalk accessToken: '叮叮token号'
}
success { //构建成功通知
dingTalk accessToken: '叮叮token号'
}
}
}
}
5.流水线pipeline脚本怎么自动生成?
代码拉取
生成流水线脚本
代码检测
代码构建
消息通知
post { //stages所有任务执行后触发post
failure { //构建失败通知
dingTalk accessToken: '叮叮token号'
}
success { //构建成功通知
dingTalk accessToken: '叮叮token号'
}
}