怎么将自由风格项目转换为管道项目CI/CD

发布时间:2021-10-20 09:24:40 作者:iii
来源:亿速云 阅读:93

这篇文章主要介绍“怎么将自由风格项目转换为管道项目CI/CD”,在日常操作中,相信很多人在怎么将自由风格项目转换为管道项目CI/CD问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么将自由风格项目转换为管道项目CI/CD”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

如今,许多公司都使用Jenkins完成了他们的持续集成,测试和持续部署。他们中的大多数使用freestyle作为默认项目类型,但这有其自身的局限性。根据需要,我最近开始将所有Freestyle迁移到Pipeline项目。那么什么时候触发这些工作呢?开发人员/所有者通过推送/提交更新存储库后,jenkins作业将触发这些作业-将生成一个二进制文件,另一个将运行单元测试以检查代码覆盖率。由于代码覆盖率单元测试需要大量时间才能完成,因此将这两个任务分成两个工作的必要性上升了。只要存储库中有更新,就会触发此作业,并在限制运行和执行构建前和构建后步骤的计算机中检入代码。

自由风格项目

全局配置

 怎么将自由风格项目转换为管道项目CI/CD

GitHub存储库配置

怎么将自由风格项目转换为管道项目CI/CD

启用webhook配置

怎么将自由风格项目转换为管道项目CI/CD

基于Shell的构建步骤

怎么将自由风格项目转换为管道项目CI/CD

发布-根据结果构建任务

 怎么将自由风格项目转换为管道项目CI/CD

触发电子邮件通知,以在构建执行后通知项目所有者

怎么将自由风格项目转换为管道项目CI/CD

为单元测试作业创建了相同的作业类型,在Build shell中进行了很少的改动,并添加了一些单元测试代码。

为什么要转换成Pipeline项目?

Freestyle的主要问题之一是,它不允许超过1个存储库的SCM轮询webhook触发器。这是我们的主要担忧,为管道迁移铺平了道路。上面的快照涵盖了将近7项任务,而单元测试的任务数约为10。那么我们可以使用管道代码来执行所有任务。下面是从上面的Freestyle转换而来的一个

WSPACE = '/var/jenkins/workspace/Directory_Name/' BRWSPACE = '/var/jenkins/workspace/' pipeline {     agent {         node {             label 'Node_Name'             customWorkspace "${WSPACE}"         }     }          //清空构建目录     stages {         stage('Cleaning up the previous directory') {             steps {                 echo 'Deleteing the directory'                 sh "rm -rf  /var/jenkins/workspace/Directory_Name/* "             }         }              // 下载代码和依赖     stage('Checking out build repo and its dependencies') {              steps {                 dir("${WSPACE}/RepoName") {                     git branch: 'master',                          credentialsId: 'UserName',                          url: 'https://github.com/path/repo.git'                 }                 dir("${WSPACE}/dir") {                     git branch: 'master',                          credentialsId: 'UserName',                          url: 'https://github.com/path/repo1.git'                 }                 dir("${WSPACE}/dir3") {                     git branch: 'master',                          credentialsId: 'UserName2',                          url: 'https://github.com/path/repo4.git'               }                }     }          //执行构建     stage('Versioning and executing the build') {          steps {                 dir ("${WSPACE}/repo1") {                     script{                         sh label: '', script: '''/usr/bin/env        cd /var/jenkins/workspace/        original=`cat patch_info`        MAJOR=`cat patch_info | cut -d "." -f1`        MINOR=`cat patch_info | cut -d "." -f2`        PATCH=`cat patch_info | cut -d "." -f3`        New_Value=`expr $PATCH + 1`        New_Version=$MAJOR.$MINOR.$New_Value        sed -i "s/$original/$New_Version/g" patch_info        echo "$New_Version"        cd /var/jenkins/workspace/path/repo4/        echo "Starting the Unit Testing"        export GOPATH=$HOME/go        export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin        make format        make clean build        if  make unit-test ; then         cd /var/jenkins/workspace/path/repo1/dir         else         cd /var/jenkins/workspace/path/repo2/dir2        fi        if make unit-test ; then         echo " unit testing completed"        fi                         '''                     }                  }          }   }      //发布HTML报告   stage ('Publish HTML Report') {        steps {           dir ("/jenkins/workspace/") {                script{                 sh label: '', script: '''/usr/bin/env                 perl /jenkins/generate_build_meta_data.pl -jr http://gitlab.com:8080 -bNum ${BUILD_NUMBER} -bName ${JOB_NAME} -o /tmp -t /jenkins/template.html                 export GOPATH=$HOME/go                 export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin                 cd /var/jenkins/workspace/path/repo1/service/                 go tool cover -html=c.out -o coverage.html                 cd /var/jenkins/workspace/path/repo2/dir3                 go tool cover -html=c.out -o output.html                '''               publishHTML([allowMissing: false, alwaysLinkToLastBuild: false, keepAll: false,                reportDir: '/tmp/${JOB_NAME}/${BUILD_NUMBER}', reportFiles: '${JOB_NAME}-${BUILD_NUMBER}-manifest.html',               reportName: 'Email Output Subject', reportTitles: ''])                }               }        }   }      //发送邮件   stage ('Send Email') {        steps {         dir ("${WSPACE}/repo4") {          emailext attachmentsPattern: '**/coverage.html,**/dir4.html', body: '${FILE, path="/tmp/${JOB_NAME}/${BUILD_NUMBER}/${JOB_NAME}-${BUILD_NUMBER}-manifest.html"}', subject: 'Unit testing Email Output ${BUILD_NUMBER} Successful', to: "EmailID@Domain2.com, EmailID2@Domain3.com"     }    }   }  } }

上面的代码为我们提供了编辑的空间及其凝聚力。管道作业的一个重要特征是阶段的输出以一种吸引人的方式呈现,我发现这很容易理解正在进行的过程。

到此,关于“怎么将自由风格项目转换为管道项目CI/CD”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

推荐阅读:
  1. 如何使用python-Jenkins批量创建和修改jobs
  2. 使用jenkins怎么部署一个springboot项目

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

jenkins

上一篇:Java性能优化中如何进行压缩

下一篇:Java并发中如何证明偏向锁

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》