首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >詹金斯-如果新工作完成了,每晚都要做长时间的工作?

詹金斯-如果新工作完成了,每晚都要做长时间的工作?
EN

Stack Overflow用户
提问于 2019-06-04 21:15:39
回答 3查看 693关注 0票数 1

现在,我有两套基准,一个是短的,一个是长的。每一根树枝都有一个短的签入表。哪个设置为运行是一个参数-短还是长。长的总是每晚在开发分支上运行。如果分支今天已经成功构建,那么如何触发其他分支来构建和运行长基准呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-06-10 19:28:19

如果您只想在夜间运行这些长测试--我发现最简单的方法是复制作业并修改它,以便在夜间触发它,并且在正常作业之后添加额外的检查,即您的后提交作业只执行短期测试,夜间触发的任务先做短测试,然后(如果没有错误)执行长任务。

我发现在某些条件下,链接作业的复杂性增加了,比如评估一天中跳过一些测试的时间,这样就更容易处理了。

在每次提交之后运行的第一个作业

代码语言:javascript
复制
node() {
  stage('Build') {
    // Build
  }
  stage('Short Test') {
    // Short Test
  }
}

每晚触发的第二项任务

代码语言:javascript
复制
node() {
  stage('Build') {
    // Build
  }
  stage('Short Test') {
    // Short Test, fail the build here when not successful
  }
  stage('Long Tests')
    // Long Test, runs only when short test successful
  }
}

编辑

一种解决方案,在一个单一的工作,然而,它增加了许多复杂性,并使一些后续用例更难集成,即不同的通知集成测试分支,跟踪构建持续时间等。我仍然认为它更易于管理,将它分成两个作业。

下面的作业必须配置为由post、commit、钩子、触发,这是一个夜间计时器。它运行长时间测试

  1. 最后一个版本比set更年轻(您不希望它在最后一个晚上触发),
  2. 上一次运行是成功的(不想为一个损坏的构建运行长时间的测试),
  3. 是由上述计时器触发的(不想在签入时触发)。
代码语言:javascript
复制
def runLongTestMaxDiffMillis = 20000
def lastRunDiff = (currentBuild.getStartTimeInMillis().toInteger() - currentBuild.getPreviousBuild().getStartTimeInMillis().toInteger())

def lastBuildTooOld = (lastRunDiff > runLongTestMaxDiffMillis)
def isTriggeredByTimer = currentBuild.getBuildCauses('hudson.triggers.TimerTrigger$TimerTriggerCause')
def lastBuildSuccessful = (currentBuild.getPreviousBuild().getResult() == 'SUCCESS')

def runLongTest = (!lastBuildTooOld && isTriggeredByTimer && lastBuildSuccessful)

node() {
    if (runLongTest) {
        println 'Running long test'
    } else {
        println 'Skipping long test'
    }
}
票数 2
EN

Stack Overflow用户

发布于 2019-06-10 13:58:26

您可以创建另一个用长参数调用参数化管道的管道,例如:

代码语言:javascript
复制
stage('long benchmark') {
    build job: 'your-benchmark-pipeline', parameters: [string(name: 'type', value: 'LONG')]
}

当您配置这个新管道时,您可以在Build after other projects are built部分中勾选Build Triggers复选框,并选择在成功完成(默认行为)后应该触发哪些短基准测试。

票数 1
EN

Stack Overflow用户

发布于 2019-06-12 08:04:23

当短作业成功时,您可以使用计划构建插件来安排长作业的生成。

短作业在每个分支上运行,当某个分支的构建成功时,它会调度一个包含分支参数的长作业的生成(在夜间),因此长作业将在这个特定的分支上运行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56451453

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档