自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

將自由風(fēng)格項(xiàng)目轉(zhuǎn)換為管道項(xiàng)目 CI/CD

開發(fā) 前端
如今,許多公司都使用Jenkins完成了他們的持續(xù)集成,測試和持續(xù)部署。他們中的大多數(shù)使用freestyle作為默認(rèn)項(xiàng)目類型,但這有其自身的局限性。根據(jù)需要,我最近開始將所有Freestyle遷移到Pipeline項(xiàng)目。

[[377343]]

 如今,許多公司都使用Jenkins完成了他們的持續(xù)集成,測試和持續(xù)部署。他們中的大多數(shù)使用freestyle作為默認(rèn)項(xiàng)目類型,但這有其自身的局限性。根據(jù)需要,我最近開始將所有Freestyle遷移到Pipeline項(xiàng)目。那么什么時(shí)候觸發(fā)這些工作呢?開發(fā)人員/所有者通過推送/提交更新存儲庫后,jenkins作業(yè)將觸發(fā)這些作業(yè)-將生成一個(gè)二進(jìn)制文件,另一個(gè)將運(yùn)行單元測試以檢查代碼覆蓋率。由于代碼覆蓋率單元測試需要大量時(shí)間才能完成,因此將這兩個(gè)任務(wù)分成兩個(gè)工作的必要性上升了。只要存儲庫中有更新,就會觸發(fā)此作業(yè),并在限制運(yùn)行和執(zhí)行構(gòu)建前和構(gòu)建后步驟的計(jì)算機(jī)中檢入代碼。

自由風(fēng)格項(xiàng)目

全局配置

 

GitHub存儲庫配置


啟用webhook配置


基于Shell的構(gòu)建步驟


發(fā)布-根據(jù)結(jié)果構(gòu)建任務(wù)

 

觸發(fā)電子郵件通知,以在構(gòu)建執(zhí)行后通知項(xiàng)目所有者


為單元測試作業(yè)創(chuàng)建了相同的作業(yè)類型,在Build shell中進(jìn)行了很少的改動,并添加了一些單元測試代碼。

為什么要轉(zhuǎn)換成Pipeline項(xiàng)目?

Freestyle的主要問題之一是,它不允許超過1個(gè)存儲庫的SCM輪詢webhook觸發(fā)器。這是我們的主要擔(dān)憂,為管道遷移鋪平了道路。上面的快照涵蓋了將近7項(xiàng)任務(wù),而單元測試的任務(wù)數(shù)約為10。那么我們可以使用管道代碼來執(zhí)行所有任務(wù)。下面是從上面的Freestyle轉(zhuǎn)換而來的一個(gè)

  1. WSPACE = '/var/jenkins/workspace/Directory_Name/' 
  2. BRWSPACE = '/var/jenkins/workspace/' 
  3. pipeline { 
  4.     agent { 
  5.         node { 
  6.             label 'Node_Name' 
  7.             customWorkspace "${WSPACE}" 
  8.         } 
  9.     } 
  10.      
  11.     //清空構(gòu)建目錄 
  12.     stages { 
  13.         stage('Cleaning up the previous directory') { 
  14.             steps { 
  15.                 echo 'Deleteing the directory' 
  16.                 sh "rm -rf  /var/jenkins/workspace/Directory_Name/* " 
  17.             } 
  18.         } 
  19.          
  20.     // 下載代碼和依賴 
  21.     stage('Checking out build repo and its dependencies') { 
  22.              steps { 
  23.                 dir("${WSPACE}/RepoName") { 
  24.                     git branch: 'master',  
  25.                         credentialsId: 'UserName',  
  26.                         url: 'https://github.com/path/repo.git' 
  27.                 } 
  28.                 dir("${WSPACE}/dir") { 
  29.                     git branch: 'master',  
  30.                         credentialsId: 'UserName',  
  31.                         url: 'https://github.com/path/repo1.git' 
  32.                 } 
  33.                 dir("${WSPACE}/dir3") { 
  34.                     git branch: 'master',  
  35.                         credentialsId: 'UserName2',  
  36.                         url: 'https://github.com/path/repo4.git' 
  37.               }     
  38.            } 
  39.     } 
  40.      
  41.     //執(zhí)行構(gòu)建 
  42.     stage('Versioning and executing the build') { 
  43.          steps { 
  44.                 dir ("${WSPACE}/repo1") { 
  45.                     script{ 
  46.                         sh label: '', script: '''/usr/bin/env 
  47.        cd /var/jenkins/workspace/ 
  48.        original=`cat patch_info` 
  49.        MAJOR=`cat patch_info | cut -d "." -f1` 
  50.        MINOR=`cat patch_info | cut -d "." -f2` 
  51.        PATCH=`cat patch_info | cut -d "." -f3` 
  52.        New_Value=`expr $PATCH + 1` 
  53.        New_Version=$MAJOR.$MINOR.$New_Value 
  54.        sed -i "s/$original/$New_Version/g" patch_info 
  55.        echo "$New_Version" 
  56.        cd /var/jenkins/workspace/path/repo4/ 
  57.        echo "Starting the Unit Testing" 
  58.        export GOPATH=$HOME/go 
  59.        export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin 
  60.        make format 
  61.        make clean build 
  62.        if  make unit-test ; then 
  63.         cd /var/jenkins/workspace/path/repo1/dir  
  64.        else 
  65.         cd /var/jenkins/workspace/path/repo2/dir2 
  66.        fi 
  67.        if make unit-test ; then 
  68.         echo " unit testing completed" 
  69.        fi 
  70.                         ''
  71.                     }  
  72.                 } 
  73.          } 
  74.   } 
  75.    
  76.   //發(fā)布HTML報(bào)告 
  77.   stage ('Publish HTML Report') { 
  78.        steps { 
  79.           dir ("/jenkins/workspace/") { 
  80.                script{ 
  81.                 sh label: '', script: '''/usr/bin/env 
  82.                 perl /jenkins/generate_build_meta_data.pl -jr http://gitlab.com:8080 -bNum ${BUILD_NUMBER} -bName ${JOB_NAME} -o /tmp -t /jenkins/template.html 
  83.                 export GOPATH=$HOME/go 
  84.                 export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin 
  85.                 cd /var/jenkins/workspace/path/repo1/service/ 
  86.                 go tool cover -html=c.out -o coverage.html 
  87.                 cd /var/jenkins/workspace/path/repo2/dir3 
  88.                 go tool cover -html=c.out -o output.html 
  89.                ''
  90.               publishHTML([allowMissing: false, alwaysLinkToLastBuild: false, keepAll: false,  
  91.               reportDir: '/tmp/${JOB_NAME}/${BUILD_NUMBER}', reportFiles: '${JOB_NAME}-${BUILD_NUMBER}-manifest.html'
  92.               reportName: 'Email Output Subject', reportTitles: '']) 
  93.                }     
  94.           } 
  95.        } 
  96.   } 
  97.    
  98.   //發(fā)送郵件 
  99.   stage ('Send Email') { 
  100.        steps { 
  101.         dir ("${WSPACE}/repo4") { 
  102.          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" 
  103.     } 
  104.    } 
  105.   } 
  106.  } 

上面的代碼為我們提供了編輯的空間及其凝聚力。管道作業(yè)的一個(gè)重要特征是階段的輸出以一種吸引人的方式呈現(xiàn),我發(fā)現(xiàn)這很容易理解正在進(jìn)行的過程。

總結(jié)

創(chuàng)建Freestyle或Pipeline項(xiàng)目完全取決于需求。在定制方面,Pipeline顯示了主要空間,因?yàn)樽杂娠L(fēng)格是啟動您的第一份Jenkins工作的簡便方法。

 

責(zé)任編輯:姜華 來源: DevOps云學(xué)堂
相關(guān)推薦

2023-04-18 08:17:11

GitLab持續(xù)集成

2022-02-22 09:00:00

軟件開發(fā)CI/CD 管道工具

2020-12-15 16:13:21

DevSecOpsCICD

2021-07-02 16:30:01

CICDDevOps

2023-05-04 16:03:50

KubernetesCI/CD集成

2023-01-30 15:55:08

2022-05-19 09:00:00

安全CI/CD工具

2021-01-11 09:17:49

GitLabCIMonorepoDocker

2023-02-19 15:28:39

CI/CD 管道集成開發(fā)

2019-07-25 10:31:55

AWSDevOps架構(gòu)

2021-08-31 09:00:00

開發(fā)Azure DevOp集成

2018-08-24 09:00:00

DevOps持續(xù)集成連續(xù)部署

2023-05-24 16:20:39

DevOpsCI/CD 管道軟件開發(fā)

2021-03-31 09:00:00

管道集成工具

2021-07-28 13:23:32

CICD管道安全漏洞

2024-11-06 14:40:18

2023-05-09 16:20:54

藍(lán)綠部署CI/CD 管道自動化部署

2020-10-21 14:10:28

工具測試開發(fā)

2021-09-26 09:26:46

開發(fā)安全CICD管道

2020-11-17 11:18:31

Docker
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號