簡體   English   中英

Jenkins管道:如果有新的提交,如何構建新工件

[英]Jenkins pipeline: How to build new artifacts only if has a new commit

stage('Checkout repo'){
    git branch: 'mybranch', 
    credentialsId: '6b83e39e-1c8c-44c2-9165-b1f5a857f6cb', 
    url: 'git@gitlab.com:myproject.git'}

stage('run tests'){
    sh 'mvn test'
}

stage('build artefact'){
    sh 'mvn clean package'
}

如果有新的提交,如何運行測試並制作新的工件? 沒有觸發器

您可以使用Git插件中的環境變量並創建條件:

if (env.GIT_COMMIT != env.GIT_PREVIOUS_SUCCESSFUL_COMMIT) {
  stage('run tests'){
    sh 'mvn test'
  }
  stage('build artefact'){
    sh 'mvn clean package'
  }
}
  • GIT_COMMIT - 當前提交的SHA
  • GIT_PREVIOUS_SUCCESSFUL_COMMIT - 來自同一分支的上一個成功構建的提交的SHA。

有三種方法可以自動觸發Jenkins作業。

  1. 您可以在管道作業中使用SCM polling ,以便每次發生更改時都會觸發您的作業。

    您可以在管道作業配置的“Build Triggers”部分下啟用Poll SCM

    在此輸入圖像描述

  2. GitHub存儲庫發生更改時,您可以使用Webhooks自動觸發作業。

    請遵循Webhook實施的此文檔

  3. 當存儲庫中存在提交時,您可以使用post-commit hook來觸發作業。

    在存儲庫的.git/hooks目錄下創建一個名為post-commit的文件,並向其添加以下腳本:

    #!/bin/bash curl --user 'user:pass' -X POST "http://server.org.com/jenkins/job/JOB-NAME/build" --data token=mytoken1 --data delay=0sec

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM