在上一篇帖子:Jenkins的Lockable Resource插件 - 3:在Freestyle Job中实现根据参数动态绑定资源中需要创建8个Lockable Resource:IOS
、IOS_MIXING
、ANDROID
、ANDROID_MIXING
、MAC
、MAC_MIXING
、WIN
、WIN_MIXING
。
通过Jenkins的UI创建这么多资源真是挺麻烦的,参考StackOverflow上的帖子:Create persistent lock dynamically in Jenkins scripted pipeline ,可以写一个groovy脚本:
import org.jenkins.plugins.lockableresources.LockableResourcesManager
def resourceNames = ['IOS', 'IOS_MIXING', 'ANDROID', 'ANDROID_MIXING', 'MAC', 'MAC_MIXING', 'WIN', 'WIN_MIXING']
def lrm = LockableResourcesManager.get()
resourceNames.each { resourceName ->
lrm.createResource(resourceName)
def lockableResource = lrm.fromName(resourceName)
lockableResource.setEphemeral(false)
lrm.save()
}
运行 Groovy 脚本需要管理员权限,登录后在 Jenkins 的脚本控制台(位于 “Manage Jenkins” -> “Script Console”)中运行。
在 用Python启动并管理Jenkins任务 讨论的项目用的是python-jenkins库进行开发,套一层python后代码如下:
import jenkins
import time
def create_lockable_resource(server, lock_name):
groovy = '''
import org.jenkins.plugins.lockableresources.LockableResourcesManager
def lrm = LockableResourcesManager.get()
lrm.createResource("{0}")
def lockableResource = lrm.fromName("{0}")
lockableResource.setEphemeral(false)
lrm.save()
'''
server.run_script(groovy.format(lock_name))
server = jenkins.Jenkins('http://888.888.888.888:8888',
username='foo', password='bar')
resource_names = ['IOS', 'IOS_MIXING', 'ANDROID', 'ANDROID_MIXING', 'MAC', 'MAC_MIXING', 'WIN', 'WIN_MIXING']
for resource_name in resource_names:
create_lockable_resource(server, resource_name)
time.sleep(1)