好的,所以我最後用我的方法去了。使用參數化版本(使用參數化版本插件),我請建築師輸入他們希望作業被鎖定的日期,直到。然後將其作爲後構建步驟寫入.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'
腳本是不是我的強項,因此,如果任何人有任何更好的建議,我會很高興聽到他們的聲音: )
對不起,如果這是垃圾郵件,但[CloudBees跳過下一個構建](https://www.cloudbees.com/products/jenkins-enterprise/plugins/skip-next-build-plugin)插件做到這一點。提供訂閱。 – recampbell
聽起來很有趣,但考慮到我可以以一種難看的方式免費做到這一點,我不會爲了方便而付錢。 – Will