繁体   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