Chrome Pointer

2023年9月20日 星期三

Jenkins pipeline常用指令

groovy
pipeline { agent any stages { stage('Checkout') { steps { checkout scm } } stage('Build') { steps { sh 'make' } } stage('Test') { steps { sh 'make test' } } stage('Deploy') { steps { sh 'make deploy' } } } }
  1. pipeline: 定義整個Pipeline的開始,包括AgentStages
  2. agent any: 這個指令指定了Pipeline的代理(Agent),它表示可以在任何可用的Jenkins節點上運行Pipeline。您可以指定特定的節點或代理來執行Pipeline
  3. stages: 這個區塊定義了各個階段(stages)的集合,Pipeline會按照順序執行這些階段。
  4. stage('Checkout'): 定義了一個名為"Checkout"的階段,這個階段是用來檢出代碼的。steps區塊內的checkout scm指令用於從源碼管理工具(例如Git)中檢出代碼。
  5. stage('Build'): 定義了一個名為"Build"的階段,這個階段是用來編譯代碼的。steps區塊內的sh 'make'指令執行了一個Shell命令(在Unix/Linux環境中運行"make")來執行編譯操作。
  6. stage('Test'): 定義了一個名為"Test"的階段,這個階段是用來執行測試的。steps區塊內的sh 'make test'指令執行了一個Shell命令(在Unix/Linux環境中運行"make test")來執行測試操作。
  7. stage('Deploy'): 定義了一個名為"Deploy"的階段,這個階段是用來部署應用程序的。steps區塊內的sh 'make deploy'指令執行了一個Shell命令(在Unix/Linux環境中運行"make deploy")來執行部署操作。

總之,Jenkins Pipeline通過stagessteps的組合,允許您將整個自動化工作流程劃分為一系列有序的階段,每個階段包含一個或多個操作。這樣可以更容易地組織和控制複雜的自動化任務。根據您的項目需求,您可以擴展和自定義不同的階段和操作。


Jenkins Pipeline提供了許多進階指令和功能,讓您可以更靈活地定義和控制自動化工作流程。以下是一些進階指令和功能的示例:

  1. 環境變數和參數:
    • 使用environment區塊來定義環境變數,這些變數可以在Pipeline的不同階段中使用。
    • 使用parameters區塊來定義Pipeline的參數,使得您可以在手動觸發Pipeline時提供值。

  1. groovy
    pipeline { agent any environment { MY_VARIABLE = 'some_value' } parameters { string(name: 'VERSION', defaultValue: '1.0', description: 'Enter the version') } stages { stage('Build') { steps { sh "echo Building version ${VERSION}" } } } }

條件和分支:

  • 使用when指令來根據條件執行階段。例如,只有當特定分支發生變更時才執行某個階段。

  1. groovy
    stages { stage('Build') { when { branch 'master' } steps { // Build steps } } }

並行執行:

  • 使用parallel指令來同時執行多個階段,這對於加速長時間運行的任務很有用。
  1. groovy
    stages { stage('Parallel Build and Test') { parallel { stage('Build') { steps { // Build steps } } stage('Test') { steps { // Test steps } } } } }


自定義函數和方法:

  • 您可以使用Groovy語言的自定義函數和方法來重用代碼片段,使Pipeline更模組化。
  1. groovy
    def buildProject() { stage('Build') { steps { // Build steps } } } pipeline { agent any stages { buildProject() stage('Test') { steps { // Test steps } } } }

Post Actions

  • 使用post區塊來定義在Pipeline完成後執行的操作,例如發送通知、清理資源、或者根據結果採取不同的行動。
  1. groovy
    post { success { echo 'Pipeline succeeded! Send notifications.' // Add notification steps } failure { echo 'Pipeline failed! Notify the team.' // Add notification steps } }

這些是Jenkins Pipeline中的一些進階功能和指令示例,讓您能夠更靈活地配置和控制自動化工作流程,以滿足特定項目的需求。請參考Jenkins官方文檔以深入瞭解更多進階功能和使用方法。


自定義Workspace:

  • 使用ws指令來指定自定義的Workspace路徑,這對於某些特殊需求的項目很有用。
  1. groovy
    pipeline { agent any stages { stage('Custom Workspace') { steps { ws('/custom/workspace/path') { // Workspace-specific steps } } } } }


Retry:

  • 使用retry指令來在階段失敗時重試該階段,以提高Pipeline的穩定性。
  1. groovy
    stages { stage('Build') { steps { retry(3) { sh 'make' } } } }


Timeout:

  • 使用timeout指令來設置階段的執行超時時間,以確保Pipeline不會永遠堵塞
  1. groovy
    stages { stage('Deploy') { steps { timeout(time: 1, unit: 'HOURS') { sh 'deploy-script.sh' } } } }

自定義函數和類:

  • 您可以使用Groovy語言來定義自定義函數、類和方法,以實現更高度的重用和模組化。
  1. groovy
    @Library('my-custom-library') _ def customFunction() { // Custom logic } pipeline { agent any stages { stage('Custom Step') { steps { script { customFunction() } } } } }

最常用的Jenkins Pipeline指令和功能通常取決於項目的需求和流程,但以下是一些在大多數自動化工作流程中常見的指令和功能:

  1. stagestage指令是Pipeline的核心,用於定義不同階段。每個階段代表Pipeline中的一個主要步驟,例如檢出代碼、編譯、測試、部署等。
  2. stepssteps指令用於定義特定階段中的操作。這些操作可以是Shell命令、腳本、Jenkins插件的調用等。
  3. nodenode指令用於指定在特定節點上執行階段。您可以使用agent區塊來設定節點,但node允許更細粒度的控制。
  4. shsh指令用於執行Shell命令。它用於編譯代碼、運行測試、執行部署腳本等。
  5. checkout scmcheckout scm指令用於檢出源碼,通常與源碼管理工具(例如Git)一起使用。
  6. postpost區塊用於定義在Pipeline完成後執行的操作,例如成功時發送通知、失敗時觸發清理操作等。
  7. whenwhen指令用於基於條件來控制階段的執行。例如,只有在特定分支上執行某個階段。
  8. timeouttimeout指令用於設定階段的執行超時時間,以確保Pipeline不會永遠堵塞。
  9. inputinput指令用於在Pipeline執行過程中等待人工輸入,通常用於確認或批准操作。
  10. parallelparallel指令用於同時執行多個階段,這對於加速長時間運行的任務很有用。
  11. environmentenvironment區塊用於定義階段內的環境變數,供操作使用。

這些是Jenkins Pipeline中最常見和基本的指令和功能。根據項目的複雜性和需求,您可以探索更多進階指令和功能,以滿足特定的自動化需求。


在Jenkins Pipeline中,node指令用於指定在特定節點(Node)上執行階段。這對於在Jenkins中配置多個節點並控制作業系統和環境的選擇很有用。以下是使用node指令的基本寫法:

groovy
pipeline { agent any stages { stage('Example Stage') { steps { node('Node_Label') { // 在指定的節點上執行這些步驟 // 您可以在這裡添加具體的操作 sh 'echo "Hello from Node_Label!"' } } } } }

這是一個使用node指令的示例,以下是對這個示例的解釋:

  • pipeline指令開始了Jenkins Pipeline的定義。
  • agent any指令指定了Pipeline可以在任何可用節點上運行。
  • stages區塊中,我們有一個階段(stage)名為'Example Stage',其中包含一個node區塊。
  • node('Node_Label')指令指定了在標有'Node_Label'標籤的節點上執行這些步驟。您需要將'Node_Label'替換為實際節點的標籤名稱。如果要在Master節點上執行,可以將標籤設置為'master'
  • node區塊內,您可以添加具體的操作步驟。在這個示例中,我們使用sh指令執行一個Shell命令,但您可以根據需求添加其他步驟。

請注意,node指令通常用於在不同的節點上執行不同的操作,以實現分佈式構建和測試。確保您的Jenkins服務器已經配置了相應的節點,並標記了它們以供使用。


沒有留言:

張貼留言

喜歡我的文章嗎? 喜歡的話可以留言回應我喔! ^^