我们正试图迭代Map,但没有任何成功.我们将问题简化为这个最小的例子:
def map = [
'monday': 'mon',
'tuesday': 'tue',
]
Run Code Online (Sandbox Code Playgroud)
如果我们尝试迭代:
map.each{ k, v -> println "${k}:${v}" }
Run Code Online (Sandbox Code Playgroud)
仅输出第一个条目: monday:mon
我们知道的替代方案甚至无法进入循环:
for (e in map)
{
println "key = ${e.key}, value = ${e.value}"
}
Run Code Online (Sandbox Code Playgroud)
要么
for (Map.Entry<String, String> e: map.entrySet())
{
println "key = ${e.key}, value = ${e.value}"
}
Run Code Online (Sandbox Code Playgroud)
失败,都只显示异常java.io.NotSerializableException: java.util.LinkedHashMap$Entry.(这可能与提出'真实'例外时发生的异常有关,阻止我们知道发生了什么).
我们正在使用最新的稳定jenkins(2.19.1),截至今天(2016/10/20)所有插件都是最新的.
是否有解决方案来迭代MapJenkins管道Groovy脚本中的元素?
我有一个在现场运行的Jenkins服务器,它使用Jenkins文件管理一个管道,该管道使用并行测试执行器插件在几个代理上运行所有JUnit测试以加快测试速度.我们有一个刀片服务器(比买一个便宜!)并且我们的测试从接近2小时到22分钟加速.JUnit插件适用于并行测试.
然而,Jacoco Plugin却没有.所以我试图将覆盖文件合并到一个文件,以便Jacoco插件可以发布覆盖结果.Stash/unstash正在存储源代码,但是当我尝试存储不同的Jacoco输出文件以在master上取消它们时,它无法正常工作.
有什么想法吗?
这是我的Jenkinsfile:
#!/usr/bin/env groovy
def branch
def hash
node('remote') {
sh 'echo starting'
branch = env.gitlabBranch ?: '**'
echo "Branch: $branch"
checkout([$class: 'GitSCM',
branches: [[name: "$branch"]],
extensions: [
[$class: 'PruneStaleBranch'],
[$class: 'CheckoutOption', timeout: 120],
[$class: 'CloneOption', depth: 0, noTags: true, shallow: true, timeout: 180]
],
doGenerateSubmoduleConfigurations: false,
submoduleCfg: [],
userRemoteConfigs: [[credentialsId: 'gitlabLabptop', url: 'git@gitlab.com:protocase/my_project_url.git']]
]
)
hash = sh (script: 'git rev-parse HEAD', returnStdout: true).trim()
### - this stash works fine -###
stash name: 'sources', includes: '**', …Run Code Online (Sandbox Code Playgroud)