下面是Jenkins groovy脚本,用于将工件推送到cloudfoundry。你知道吗
stage('stage_1'){
if (repoName == 'a'){
pushA(repoName)
}
else if(repoName == 'b'){
pushB(repoName)
}
else if (repoName == 'c'){
pushC(repoName)
}else if (repoName == 'd'){
pushD(repoName)
}else if (repoName == 'e'){
pushE(repoName)
}
}
这是一个单文件Jenkins groovy脚本,使用以下选项编写,与多个GitLab存储库连接:
为什么是pushA/pushB?因为每个推送都有自己的清单文件
如何避免else..if
代码气味?你知道吗
你建议用repoName
作为键的hashmap吗?你知道吗
如果是,如何在脚本启动期间注册pushX()
方法?在python中,我们使用registration decorator(在导入时运行)来更新commands
字典,如下所示:
下面是与python大致对应的代码。然而,这只是把关键关闭到一个地图。。。你知道吗
你可以用一个dispached dict来模拟交换机。下面是一个愚蠢的例子:
输出:
下面的代码定义伪
pushX()
函数来模拟示例中的函数,然后定义一个闭包映射,其中每个闭包调用相关的pushX()
函数,然后按名称查找相关闭包并调用它,并将名称作为参数传递:也许那样对你有用。不过,这仍然很难闻;如果
pushA()
只在推送到repo A时使用,为什么它需要repo名称作为参数?很可能有更好的方法来组织整个事情,包括上面没有显示的部分。你知道吗相关问题 更多 >
编程相关推荐