我有一本剧本,其中有“暂停”部分和提示。如果我在Jenkins中使用Pipeline插件创建作业并运行该作业,我将得到
[WARNING]: Not waiting from prompt as stdin is not interactive
,作业失败。问题是如何在交互模式下运行作业,或者如何在确切的任务中暂停剧本并按Ctrl + c + c组合键(因为可疑模块'pause
'仅如此工作)?我已经搜索了一段时间,并尝试使用
def userInput = input(
id: 'Password', message: 'input your input: ', ok: 'ok',
parameters: [string(defaultValue: '', description: '.....', name: 'INPUT_TEST')])
但是我无法按组合键,也无法理解如何在剧本中暂停詹金斯的工作。
管道示例:
pipeline {
agent { label 'master' }
environment {
WORKDIR = '/home/jenkins/'
}
stages {
stage('Checkout') {
agent { label 'master' }
steps {
sh '''cd $WORKDIR
ansible-playbook -vvvv manual_playbooks/test.yml'''
}
}
stage ('Echo') {
agent { label 'master' }
steps {
sh 'echo something'
}
}
}
}
剧本示例:
---
- name: test
hosts: localhost
tasks:
- name: Echo start
shell: echo 'start playbook'
- pause:
prompt: "do you want to continue?"
echo: yes
private: no
register: prompt_status
- name: Continue tasks
shell: echo 'Continue full flow'
register: reset_account_response
when: prompt_status.user_input is defined and
prompt_status.user_input == "yes"
- fail:
msg: "Unexpected user input while prompting approval"
when: prompt_status.user_input is defined and
prompt_status.user_input != "yes"
非常感谢。
答案 0 :(得分:0)
在通过Jenkins运行剧本时,为什么不在暂停任务上放置when子句以检查是否存在其他变量,然后在使用Ansible的-e选项时将其传递给我们。