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

时间:2017-08-17 16:13:03

标签: git maven jenkins

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'
}

如果有新提交,如何运行测试并制作新工件? 没有触发器

2 个答案:

答案 0 :(得分:2)

您可以使用Git Plugin中的环境变量并创建条件:

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 来自同一分支的上一个成功构建的提交。

答案 1 :(得分:1)

有三种方法可以自动触发Jenkins作业。

  1. 您可以在管道作业中使用SCM polling,以便每次发生更改时都会触发您的工作。

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

    enter image description here

  2. Webhooks存储库发生更改时,您可以使用GitHub自动触发作业。

    关注此documentation以实现Webhook

  3. 当存储库中有提交时,您可以使用post-commit挂钩来触发作业。

    在存储库的post-commit目录下创建一个名为.git/hooks的文件,并将以下脚本添加到其中:

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