每天进步一点点,关注我们哦,每天分享测试技术文章
码同学抖音 :小码哥聊软件测试
中文在线文档:
https://www.jenkins.io/zh/doc/book/pipeline/
还有一个:https://www.w3cschool.cn/jenkins/jenkins-qc8a28op.html
01 Pipeline流水线基本语法
pipeline { //agent 表示要执行的节点,any表示任意节点 agent any //stages表示任务执行时的所有步骤集合 stages { //stage就表示一个步骤,括 里是步骤名称 stage('拉取项目源码'){ //每一个stage都可以定义自己执行的节点,如果没定义,则用最上方的 agent { // label 后跟的是节点的标签名称 label 'mall-server' } steps { echo '这是拉取代码这一步' echo "Running ${env.BUILD_ID} on ${env.JENKINS_URL} ${env.JOB_NAME}" echo "${currentBuild.result} sdsdd" sh 'pwd' //如果当前节点是windows,我想执行windows下的命令 //bat 'dir' } } stage('静态代码扫描'){ steps { echo '这是静态代码扫描' } } stage('单元测试'){ steps { echo '执行jacoco单元测试' } } stage('打包依赖服务'){ steps { echo '打包依赖服务' } } stage('打包当前服务'){ steps { echo '打包当前服务' } } stage('部署环境'){ steps { echo '部署环境' } } stage('接口自动化测试'){ agent { label 'auto_test' } steps { echo '接口自动化测试' } } stage('ui自动化'){ steps { echo 'ui自动化' } } }}
02 针对mall微服务项目编写pipeline脚本
对于pipeline脚本来说我们不用去记那么多的东西,可以打开自己的pipeline任务,点击流水线语法后,使用下面两个菜单帮我们生成部分脚本
在pipeline脚本的最上方增加如下://定义了两组选项参数
parameters {
choice choices: [‘mall-admin’, ‘mall-demo’, ‘mall-auth’, ‘mall-serach’], name:’servername’
choice choices: [‘mall-server’, ‘mall-dev’, ‘mall-prod’], name: ‘node_env’
}
配好后先执行一次任务
因为部署的节点环境根据上一步的参数来的,用户选什么我们就执行什么,所以label的值是一个变量
agent {
label “${node_env}”
}
拷贝生成的脚本,放在拉代码的阶段的steps下stage(‘拉取项目源码’){
steps {
echo ‘这是拉取代码这一步’
git credentialsId: ‘
4c1003ef-ac70-4271-8649-1759e79d430a‘, url: ‘
http://192.168.0.109/shamo/mall-swarm-master.git‘
}
}
由于mall这个项目原本没有集成jacoco相关的覆盖率统计,因此我们先对项目做些修改
① 修改整个项目最根的pom.xml文件
<skipTests>false</skipTests> |
免费领取 码同学软件测试 课程笔记+超多学习资料+完整视频+最新面试题,可以转发文章 + 私信「码同学666」获取资料哦
② 修改各个子模块服务的pom.xml
<dependency> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <version>0.8.6</version></dependency>
<plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <version>0.8.6</version> <configuration> <destFile>target/coverage-reports/jacoco-unit.exec</destFile> <dataFile>target/coverage-reports/jacoco-unit.exec</dataFile> </configuration> <executions> <execution> <id>jacoco-initialize</id> <goals> <goal>prepare-agent</goal> </goals> </execution> <execution> <id>jacoco-site</id> <phase>test</phase> <goals> <goal>report</goal> </goals> </execution> </executions></plugin>
③ 编写pipeline
复制生成的jacoco指令,填入相应的steps里
stage('单元测试'){ steps { echo '执行jacoco单元测试' sh ''' cd "${servername}" mvn test ''' jacoco changeBuildStatus: true, maximumBranchCoverage: '100', maximumClassCoverage: '100', maximumComplexityCoverage: '100', maximumInstructionCoverage: '100', maximumLineCoverage: '100', maximumMethodCoverage: '100', minimumBranchCoverage: '90', minimumClassCoverage: '90', minimumComplexityCoverage: '90', minimumInstructionCoverage: '90', minimumLineCoverage: '90', minimumMethodCoverage: '90' } }
拷贝生成的到静态扫描的stage的steps里,再补充sonar扫描的指令
stage('静态代码扫描'){ steps { echo '这是静态代码扫描' withSonarQubeEnv(credentialsId: '1d74c7e8-5b27-4772-9a21-41e17eb87b7d', installationName: 'sonar') { // 执行sonar扫描的指令 sh ''' cd "${servername}" mvn sonar:sonar -Dsonar.projectKey=${JOB_NAME}-${servername}$BUILD_NUMBER -Dsonar.projectName=mall -Dsonar.language=java -Dsonar.sourceEncoding=UTF-8 ''' } }}
钉钉通知在每个阶段其实都可以加的,我们把他加载部署里
免费领取 码同学软件测试 课程笔记+超多学习资料+完整视频+最新面试题,可以转发文章 + 私信「码同学666」获取资料哦
邮件的脚本生成如下:
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!