如何向 Jenkins 中的 pipelineJob 添加 lockableResources 锁?

问题描述 投票:0回答:1

我正在尝试向 Jenkins 管道添加锁,以便管道的多个实例不会同时运行。

我在plugins.txt中安装了lockable-resources插件,并在我的casc.yaml中声明了资源

 lockableResourcesManager:
    declaredResources:
      - name: "host-1-lock"
        description: "Lock to run jobs on host 1

我有以下 pipelineJob,我正在尝试向其中添加锁,以便在 pipelineJob 期间保持锁定,然后在之后释放

pipelineJob('Test_Job-2') {
    quietPeriod(0)
    triggers {
        cron('H 6 * * *')
    }
    lockableResources('host-1-lock')
    parameters {
        labelParam('Node_Select') {
            defaultValue('host1')
            allNodes('allCases', 'IgnoreOfflineNodeEligibility')
        }
    }
    definition {
        cps {
            script(readFileFromWorkspace('scripts/mypipeline.jenkinsfile'))
        }
    }
}

但是我收到错误

ERROR: (script, line 6) No signature of method: javaposse.jobdsl.dsl.jobs.WorkflowJob.lockableResources() is applicable for argument types: (java.lang.String) values: [host-1-lock]

我尝试使用文档中指定的语法 lock("host-1-lock") https://github.com/jenkinsci/lockable-resources-plugin但这会产生类似的错误。

我还尝试在 script() 之前和 script() 内的定义 { cp { ...}} 中包含 lock() ,但没有任何运气。

任何人都可以提供一个如何实现这一目标的例子吗?

jenkins jenkins-pipeline jenkins-plugins jenkins-groovy jenkins-job-dsl
1个回答
0
投票

你把它放在错误的地方了。锁的使用不应该是 jobdsl (又名作业定义)的一部分,而应该在实际管道中,在您的情况下 脚本/mypipeline.jenkinsfile`.

仔细查看 https://github.com/jenkinsci/lockable-resources-plugin#using-a-resource-in-a-pipeline-job

中的示例
© www.soinside.com 2019 - 2024. All rights reserved.