时间:2021-05-02
如今,许多公司都使用Jenkins完成了他们的持续集成,测试和持续部署。他们中的大多数使用freestyle作为默认项目类型,但这有其自身的局限性。根据需要,我最近开始将所有Freestyle迁移到Pipeline项目。那么什么时候触发这些工作呢?开发人员/所有者通过推送/提交更新存储库后,jenkins作业将触发这些作业-将生成一个二进制文件,另一个将运行单元测试以检查代码覆盖率。由于代码覆盖率单元测试需要大量时间才能完成,因此将这两个任务分成两个工作的必要性上升了。只要存储库中有更新,就会触发此作业,并在限制运行和执行构建前和构建后步骤的计算机中检入代码。
自由风格项目
全局配置
GitHub存储库配置
启用webhook配置
基于Shell的构建步骤
发布-根据结果构建任务
触发电子邮件通知,以在构建执行后通知项目所有者
为单元测试作业创建了相同的作业类型,在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('Cleaningupthepreviousdirectory'){
steps{
echo'Deleteingthedirectory'
sh"rm-rf/var/jenkins/workspace/Directory_Name/*"
}
}
//下载代码和依赖
stage('Checkingoutbuildrepoanditsdependencies'){
steps{
dir("${WSPACE}/RepoName"){
gitbranch:'master',
credentialsId:'UserName',
url:'https://github.com/path/repo.git'
}
dir("${WSPACE}/dir"){
gitbranch:'master',
credentialsId:'UserName',
url:'https://github.com/path/repo1.git'
}
dir("${WSPACE}/dir3"){
gitbranch:'master',
credentialsId:'UserName2',
url:'https://github.com/path/repo4.git'
}
}
}
//执行构建
stage('Versioningandexecutingthebuild'){
steps{
dir("${WSPACE}/repo1"){
script{
shlabel:'',script:'''/usr/bin/env
cd/var/jenkins/workspace/
original=`catpatch_info`
MAJOR=`catpatch_info|cut-d"."-f1`
MINOR=`catpatch_info|cut-d"."-f2`
PATCH=`catpatch_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"StartingtheUnitTesting"
exportGOPATH=$HOME/go
exportPATH=$PATH:/usr/local/go/bin:$GOPATH/bin
makeformat
makecleanbuild
ifmakeunit-test;then
cd/var/jenkins/workspace/path/repo1/dir
else
cd/var/jenkins/workspace/path/repo2/dir2
fi
ifmakeunit-test;then
echo"unittestingcompleted"
fi
'''
}
}
}
}
//发布HTML报告
stage('PublishHTMLReport'){
steps{
dir("/jenkins/workspace/"){
script{
shlabel:'',script:'''/usr/bin/env
perl/jenkins/generate_build_meta_data.pl-jrhttp://gitlab.com:8080-bNum${BUILD_NUMBER}-bName${JOB_NAME}-o/tmp-t/jenkins/template.html
exportGOPATH=$HOME/go
exportPATH=$PATH:/usr/local/go/bin:$GOPATH/bin
cd/var/jenkins/workspace/path/repo1/service/
gotoolcover-html=c.out-ocoverage.html
cd/var/jenkins/workspace/path/repo2/dir3
gotoolcover-html=c.out-ooutput.html
'''
publishHTML([allowMissing:false,alwaysLinkToLastBuild:false,keepAll:false,
reportDir:'/tmp/${JOB_NAME}/${BUILD_NUMBER}',reportFiles:'${JOB_NAME}-${BUILD_NUMBER}-manifest.html',
reportName:'EmailOutputSubject',reportTitles:''])
}
}
}
}
//发送邮件
stage('SendEmail'){
steps{
dir("${WSPACE}/repo4"){
emailextattachmentsPattern:'**/coverage.html,**/dir4.html',body:'${FILE,path="/tmp/${JOB_NAME}/${BUILD_NUMBER}/${JOB_NAME}-${BUILD_NUMBER}-manifest.html"}',subject:'UnittestingEmailOutput${BUILD_NUMBER}Successful',to:"EmailID@Domain2.com,EmailID2@Domain3.com"
}
}
}
}
}
上面的代码为我们提供了编辑的空间及其凝聚力。管道作业的一个重要特征是阶段的输出以一种吸引人的方式呈现,我发现这很容易理解正在进行的过程。
总结
创建Freestyle或Pipeline项目完全取决于需求。在定制方面,Pipeline显示了主要空间,因为自由风格是启动您的第一份Jenkins工作的简便方法。
【原文地址】:https://mp.weixin.qq.com/s/aDAqAxOu16HM1QDYso97VA
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
JetBrains正在开发一种被称为Qodana的代码质量检测工具。它将JetBrainsIDE具有的智能代码检查带入了项目CI/CD管道中。它可以识别代码中的
总体来看,TypeScript项目构建主要分两步:将ts项目整体转换为js项目按常规套路,对该js项目进行打包构建构建过程中,对ts文件的转换不再使用命令行方式
通常我们需要使用管道实现对数据的格式化,Angular4中的管道和之前有了一些变化,下面说一些常用的管道。一、大小写转换管道uppercase将字符串转换为大写
创建项目在主界面的左侧菜单选新建在向导中选择输入项目名称,类型选择构建一个自由风格的软件项目点确定进入项目的配置界面源码管理选择gitRepositoryURL
1、设置字体、风格代码主题选择Monokai会是彩色的代码。2、配置CI代码提示下载代码提示项目:https://github.com/topdown/phpS