简单来说,就是运行在Jenkins上的一种工作框架,通过代码的方式将多个任务连接起来
能够直观的看到,每个阶段的任务是什么,执行时间是多久,有没有错误
pipeline有固定的语法结构
1.流水线项目配置中点击流水线语法
1.创建一个pipeline项目
2.流水线定义中选pipeline script
再写一个简单的流水线脚本后保存
3.构建后就可以看到流水线的阶段视图(前提是安装过视图插件)
可以看出每个阶段在干什么,每个阶段的耗时
2.构建pipeline时候提示(不管脚本里写多少内容都提示)
This Pipeline has run successfully, but does not define any stages. Please use the stage step to define some stages in this Pipeline.
解决方案:
检查是否安装pipeline-model-definition插件
有的话重装一下,没有的话安装一下
插件下载地址:
https://plugins.jenkins.io/pipeline-model-definition/releases/
下载好上传至Jenkins,安装好重启Jenkins即可
1.打开系统管理–>插件管理–>可选插件–>搜索 Blue Ocean–>安装
2.安装完后,在页面上就可以看到Blue Ocean
3.点击Blue Ocean打开,查看任务详情
5.点击工作节点,可以查看运行过程中的日志信息
1.在流水线项目中指定构建参数,选择Git Paramete
2.生成获取代码的流水线语法,复制到流水线脚本中
代码检出,通过版本控制检出
填写仓库地址以及凭证
调用上面的变量
代码检测,执行脚本调用Sonar即可
sh '/usr/local/sonar-scanner-4.8.0.2856-linux/bin/sonar-scanner \
-Dsonar.projectKey=${JOB_NAME} \
-Dsonar.sources=. \
-Dsonar.host.url=http://192.168.xx.xxx:9000 \
-Dsonar.login=squ_ea1e24e2d8d8f1851ea25f53870426ad5c2eb86f'
执行脚本,编译,跳过测试用例
sh 'mvn package -Dmaven.test.skip=true'
调用之前自动部署java应用的脚本即可
sh 'sh -x /var/lib/jenkins/scripts/java_rolback_tag.sh'
脚本内容如下:
#!/usr/bin/bash
#1.删除软连接
#2.重新创建软连接
webservers="192.168.xx.xxx 192.168.xx.xxx"
Date=$(date +%F-%H-%M)
Web_Dir=/opt
Web_Name=ROOT_${Date}_${git_version} #包名中加上tag信息
for host in ${webservers}
do
ssh root@$host " [ -d ${Web_Dir}/ROOT_*_${git_version} ] && \
rm -f /soft/tomcat/webapps/ROOT && \
ln -s ${Web_Dir}/ROOT_*_${git_version} /soft/tomcat/webapps/ROOT && \
pkill java && \
/soft/tomcat/bin/startup.sh"
done
脚本如下:
pipeline {
agent any
stages {
stage('获取代码') {
steps {
checkout scmGit(branches: [[name: '*/master']], extensions: [], userRemoteConfigs: [[credentialsId: '2327fc08-8582-402a-b794-c39e5b0cff14', url: '[email protected]:ops/new-java.git']])
}
}
stage('检测代码') {
steps {
sh '/usr/local/sonar-scanner-4.8.0.2856-linux/bin/sonar-scanner \
-Dsonar.projectKey=${JOB_NAME} \
-Dsonar.sources=. \
-Dsonar.host.url=http://192.168.xx.xxx:9000 \
-Dsonar.login=squ_ea1e24e2d8d8f1851ea25f53870426ad5c2eb86f'
}
}
stage('编译代码') {
steps {
sh 'mvn package -Dmaven.test.skip=true'
}
}
stage('部署代码') {
steps {
sh 'sh -x /var/lib/jenkins/scripts/java_rolback_tag.sh'
}
}
}
}
基于tags进行构建
开始构建