在设定的时间内禁用Jenkins作业

在设定的时间内禁用Jenkins作业,jenkins,Jenkins,我有一份Jenkins的工作,将工件部署到服务器上。我想让作业运行人员能够在设定的时间内禁用作业,可以是一小时,也可以是一个月。我还希望他们必须输入一个原因。原因(以及各种其他信息-构建名称、运行者名称等)需要通过电子邮件发送到通讯组列表 是否有一种方法可以在作业成功完成后,从作业内部禁用一段时间 我猜我需要一个参数化的构建插件,我已经成功地将它用于一些工作 编辑: 我想我可以通过在预步骤中检查一个锁文件来实现这一点,然后编写一个锁文件,该文件包含构建解锁的时间或以该时间命名。我想可能有一个插件

我有一份Jenkins的工作,将工件部署到服务器上。我想让作业运行人员能够在设定的时间内禁用作业,可以是一小时,也可以是一个月。我还希望他们必须输入一个原因。原因(以及各种其他信息-构建名称、运行者名称等)需要通过电子邮件发送到通讯组列表

是否有一种方法可以在作业成功完成后,从作业内部禁用一段时间

我猜我需要一个参数化的构建插件,我已经成功地将它用于一些工作

编辑:
我想我可以通过在预步骤中检查一个锁文件来实现这一点,然后编写一个锁文件,该文件包含构建解锁的时间或以该时间命名。我想可能有一个插件或者我可以用的东西来代替。

好的,所以我最终还是用了我的方法。使用参数化构建(使用参数化构建插件),我要求构建者输入他们希望作业锁定到的日期。然后作为生成后步骤将其写入.lock文件

随后,作为预构建步骤,我查找.lock文件并读取内容。然后将文件中的日期与当前日期进行比较,如果作业被锁定,则生成失败,或者继续

代码如下

前步骤:

#!/bin/bash
echo ''
EXIT_CODE=0
LOCK_FILE_NAME=$DEPLOYMENT_ENV'.lock'

#Check chosen branch isn't master
if [ $BRANCH_NAME = 'master' ]
then
        echo 'This job is for building feature branches. To build master, use the Deploy Master Artifact To Staging job.'
        EXIT_CODE=666;
else
#Check if lock file exists for selected environment
if [ -f $LOCK_FILE_NAME ] 
then
    echo 'Lock file found for' $DEPLOYMENT_ENV
    FILE_CONTENTS=`head -n 1 $LOCK_FILE_NAME`
    LOCK_DATE=`date -d $FILE_CONTENTS +'%Y%m%d'`
    NOW=`date +'%Y%m%d'`
    #Compare lock date to today. Has the lock expired?
    if [ $NOW -gt $LOCK_DATE ]
    then
        echo $DEPLOYMENT_ENV 'no longer locked. Proceeding with deployment...'
    else
        echo 'Job locked until:' `date -d $LOCK_DATE +'%d-%m-%Y'`
        echo 'Aborting job...'
        EXIT_CODE=666
    fi
else
    echo 'No lock file present for' $DEPLOYMENT_ENV
    echo 'Proceeding with deployment...'
fi
echo ''
exit $EXIT_CODE
后步骤:

#!/bin/bash
echo '**********' $WORKSPACE
#Copy artifact to web server
#Start web server
#Set lock
echo 'Now lock the environment until:' $LOCK_UNTIL;
echo $LOCK_UNTIL > $WORKSPACE'/'$DEPLOYMENT_ENV'.lock'

脚本编写并不是我的强项,所以如果有人有更好的建议,我很乐意听到:)

如果这是垃圾邮件,很抱歉,但插件可以做到这一点。可以订阅。听起来很有趣,但考虑到我可以用一种丑陋的方式免费使用,我不会仅仅为了方便而付费。