詹金斯的工作触发了两次

时间:2018-05-17 17:20:47

标签: jenkins ansible jenkins-plugins jenkins-job-builder

1)我正在使用Jenkins API来触发作业,所以当我的监控工具sensu发送请求Jenkins API来触发jenkins JOb时,构建就会开始。 2)我甚至尝试通过点击buildnow而不是使用API​​调用来确保它不是API调用问题。

我的构建包含什么? 它运行在Master上,并在ansible插件的帮助下运行一本安全的游戏书

问题:一旦构建完成,它就会成功自动触发另一个构建而没有理由再次运行构建。这是一个简单的工作配置,在master上运行并在Jenkins提供的插件的帮助下运行ansible-playbook

任何人都可以帮我解决可能出现的问题? 詹金斯版本:2.89.3 Ansible插件:0.8

此外,我可以看到用户xyz开始的jenkins工作 由用户xyz发起 由用户xyz发起 由用户xyz发起 由用户xyz发起 由用户xyz发起 用户xyz为单个构建启动

3 个答案:

答案 0 :(得分:0)

手动构建时是否会发生此问题?如果是这样,那么我只是查看Jenkins构建的配置并确保您没有在Post Build部分中选择Build other project's并提及相同的项目: p

<强> EDITED

  

jenkins工作由用户xyz发起由用户xyz发起由用户启动   xyz由用户xyz发起由用户xyz发起由用户xyz发起   用户xyz为单个构建启动

enter image description here

如果您遇到上述问题,那么会发生这种情况,因为项目在我的情况下被触发了不止一次,我已经点击了两次作业,因此您看到由管理员启动了两次,因为您已经选中了
不允许并发构建

Jenkins遇到了这个问题,当你点击一个构建项目时,看到构建发生了一点点延迟,因此你再次点击它。

答案 1 :(得分:0)

我建议不要使用Ansible插件,而是采用Jenkins的方式:

使用以下内容从Jenkinsfile创建管道:

pipeline {
    parameters {
        string(name: 'Parameter1', defaultValue: 'value1', description: 'Parameter1?')
        string(name: 'Parameter2', defaultValue: 'value2', description: 'Parameter2?')
        string(name: 'Parameter3', defaultValue: 'value3', description: 'Parameter3?')

    }

    agent any

    options {
        ansiColor('xterm')
        timestamps()
    }

    stages {
        stage('Run Ansible Playbook') {
            steps {
                script {
                    retry (1) {
                        try {

                            echo "Build ${params.Parameter1} on ${params.Parameter2}"

                            sh "export ANSIBLE_FORCE_COLOR=true && \
                                ansible-playbook -vv \
                                                -i inventories/hosts \
                                                -e \"var1=${Parameter1}\" \
                                                -e \"var2=${Parameter2}\" \
                                                -e \"var3=${Parameter3}\" \
                                                --vault-password-file ~/.ansible/vaultpass.txt \
                                                playbooks/main.yml"
                        }
                        catch (exception) {
                            throw exception
                        }

                        finally {
                            sh "export ANSIBLE_FORCE_COLOR=true && \
                                ansible-playbook -vv \
                                                -i inventories/hosts \
                                                -e \"var1=${Parameter1}\" \
                                                -e \"var2=${Parameter2}\" \
                                                -e \"var3=${Parameter3}\" \
                                                --vault-password-file ~/.ansible/vaultpass.txt \
                                                playbooks/clean.yml"
                        }
                    }
                }
            }
        }
    }
}

与Ansible Plugin相比,您可以更简洁地控制管道。

答案 2 :(得分:0)

如果即使您手动触发作业也触发了两次,则可能是Jenkins作业的配置方式。确保禁用并发构建。

  
      
  • 打开您的Jenkins职位
  •   
  • 点击配置
  •   
  • 取消选中如有必要,执行并发构建
  •   
  • 点击保存
  •   

enter image description here