溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2021-10-20 09:24:40 來源:億速云 閱讀:142 作者:iii 欄目:web開發

這篇文章主要介紹“怎么將自由風格項目轉換為管道項目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”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女