【问题标题】:Want to disable & enable jenkins pipeline to achieve automation想要禁用 & 启用 jenkins 管道以实现自动化
【发布时间】:2022-11-17 12:41:13
【问题描述】:

我正在研究一个想法,如果满足某些条件,我需要发送邮件来通知团队。这种情况可能会持续 30 分钟或 1 小时。但我不想邮箱里塞满连续不断的邮件。由于我们将每分钟安排一次作业,因此邮件将每分钟发送一次。所以我们试图在邮件发送后在特定时间禁用管道并自动再次启用它。

提前致谢。

我试图让这个工作进入休眠状态,但由于它计划每分钟构建一次,因此每分钟都会启动新工作并发送邮件。

//This is scheduled to build every minute * * * * *

`pipeline{ 
 agent {
 stages {
 stage (check condition){
 when 
   // check conditions
   // if everything working fine - ok
   else
   // send email - this will be sent every minute. I want to avoid mailbox malfunction and just report the issue.
  }
  }
  }
  }`

请帮我解决问题。

【问题讨论】:

  • 查看使用 email extension 和触发器组合。
  • 这里的主要问题似乎是您无法维护条件状态(上次运行时,发送电子邮件时)。因此,也许您可​​以尝试找出解决方案,例如使用 envinject 将状态维护为环境变量,甚至将详细信息写入文件。
  • @IanW - 我已经检查了你提到的电子邮件扩展,但它们在我的情况下不起作用。
  • 我认为您对问题的表述有误。 “发送邮件后尝试在特定时间禁用管道并自动再次启用”,一旦您自行禁用管道,它就不再运行,因此无法自行重新启用。它需要通过外部来源(工作或人)来启用。你可以做的是连续运行你的工作(每分钟)并判断它是否满足发送电子邮件的条件。因此建议电子邮件扩展,它有很多条件。

标签: jenkins cron jenkins-pipeline scheduled-tasks


【解决方案1】:

我使用替代方法:在邮件中发送以下 URL。

禁用管道 - $BUILDURL/disable 以禁用管道。

收件人必须单击链接并自行禁用管道。这也意味着邮件已被确认并且没有被忽视。

启用管道 - $BUILDURL/enable。问题解决后,接收方可以启用管道。

编辑:

添加管道示例以供参考。

   pipeline{
      agent any

    stages {
       stage ('Checkout') {
            // checkout git repo
        }

       stage ('run job') {
          // script to run the job
       }
       stage('email') {
         when {
            expression(condition to be satisfied)
        }
        steps {
            send email 
            body - $Build_Url/disable to disable the job.
                   $Build_Url/enable to enable the job.
       }
    } 
}

【讨论】:

    猜你喜欢
    • 2021-11-06
    • 2018-10-17
    • 1970-01-01
    • 2012-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多