成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

將自由風格項目轉換為管道項目 CI/CD

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

[[377343]]

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

自由風格項目

全局配置

 

GitHub存儲庫配置


啟用webhook配置


基于Shell的構建步驟


發布-根據結果構建任務

 

觸發電子郵件通知,以在構建執行后通知項目所有者


為單元測試作業創建了相同的作業類型,在Build shell中進行了很少的改動,并添加了一些單元測試代碼。

為什么要轉換成Pipeline項目?

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

  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.     //清空構建目錄 
  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.     //執行構建 
  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.   //發布HTML報告 
  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.   //發送郵件 
  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.  } 

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

總結

創建Freestyle或Pipeline項目完全取決于需求。在定制方面,Pipeline顯示了主要空間,因為自由風格是啟動您的第一份Jenkins工作的簡便方法。

 

責任編輯:姜華 來源: DevOps云學堂
相關推薦

2023-04-18 08:17:11

GitLab持續集成

2022-02-22 09:00:00

軟件開發CI/CD 管道工具

2021-07-02 16:30:01

CICDDevOps

2023-05-04 16:03:50

KubernetesCI/CD集成

2020-12-15 16:13:21

DevSecOpsCICD

2023-01-30 15:55:08

2023-02-19 15:28:39

CI/CD 管道集成開發

2022-05-19 09:00:00

安全CI/CD工具

2021-01-11 09:17:49

GitLabCIMonorepoDocker

2023-05-24 16:20:39

DevOpsCI/CD 管道軟件開發

2018-08-24 09:00:00

DevOps持續集成連續部署

2019-07-25 10:31:55

AWSDevOps架構

2021-08-31 09:00:00

開發Azure DevOp集成

2021-03-31 09:00:00

管道集成工具

2020-10-21 14:10:28

工具測試開發

2021-09-26 09:26:46

開發安全CICD管道

2024-11-06 14:40:18

2021-07-28 13:23:32

CICD管道安全漏洞

2023-05-09 16:20:54

藍綠部署CI/CD 管道自動化部署

2024-10-12 14:36:34

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 中文字幕精品一区二区三区精品 | av播播| 亚洲人成人网 | 91久久国产综合久久91精品网站 | 久久精品91久久久久久再现 | 国产精品久久久久久久 | 精品精品视频 | 久久久久久一区 | 久久精品日产第一区二区三区 | 成人精品一区二区三区 | 欧美一区二区三区在线观看 | 亚洲欧洲综合av | 中文字幕av一区 | 免费观看一级特黄欧美大片 | 久久99精品久久久 | 国产精品永久免费 | 天天干天天操天天爽 | 成人精品鲁一区一区二区 | 日韩午夜在线观看 | 凹凸日日摸日日碰夜夜 | 97日日碰人人模人人澡分享吧 | av免费在线播放 | 国产精品一区视频 | 久久国产区 | 欧美久久久久久 | 国产九九九 | 亚洲欧美激情精品一区二区 | 欧美日韩久久 | av天天看 | 久久激情视频 | 99pao成人国产永久免费视频 | 欧洲精品在线观看 | 亚洲一区免费视频 | 91久久久久 | 亚洲精品视 | 日韩久久综合 | 亚洲精品一区二区三区中文字幕 | 日日夜夜精品 | 成人av电影在线观看 | 男人天堂av网站 | 国产视频福利一区 |