0

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

我的构建包含什么?它在 Master 上运行并在 ansible 插件的帮助下运行 ansible 剧本

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

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

我还可以看到 jenkins 作业由用户 xyz 启动 由用户 xyz 启动 由用户 xyz 启动 由用户 xyz 启动 由用户 xyz 启动 由用户 xyz 启动 单个构建

4

3 回答 3

0

当您手动构建它时也会发生此问题吗?如果是这种情况,那么我只会查看 Jenkins 构建的配置,并确保您没有在“构建后”部分选择“构建其他项目”选项并提到同一个项目:P

已编辑

jenkins job 由用户 xyz 启动 由用户 xyz 启动 由用户 xyz 启动 由用户 xyz 启动 由用户 xyz 启动 由用户 xyz 启动 由用户 xyz 启动,用于单个构建

在此处输入图像描述

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

Jenkins 有这样的问题,当您单击构建项目时,看到构建发生的时间会稍有延迟,因此让您再次单击它。

于 2018-05-18T03:31:02.927 回答
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 插件相比,您可以以更简洁、更简单的方式控制您的管道。

于 2018-05-18T20:35:45.580 回答
-1

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

  • 打开你的 Jenkins 工作
  • 单击配置
  • 如有必要,取消选中执行并发构建
  • 点击保存

在此处输入图像描述

于 2019-05-24T17:31:01.727 回答