Jenkins 将数组和ArrayList追加到ArrayList
使用Jenkins管道,我们有自己的构建脚本。此外,我们所有的项目都有一个耙子,这是我们用来做很多建设步骤。我们典型的jenkins构建执行3个rake任务,但我们确实有一些例外,当我们有一个角度的网站,我们试图用它来构建 我将管道配置为:Jenkins 将数组和ArrayList追加到ArrayList,jenkins,groovy,jenkins-pipeline,Jenkins,Groovy,Jenkins Pipeline,使用Jenkins管道,我们有自己的构建脚本。此外,我们所有的项目都有一个耙子,这是我们用来做很多建设步骤。我们典型的jenkins构建执行3个rake任务,但我们确实有一些例外,当我们有一个角度的网站,我们试图用它来构建 我将管道配置为: buildGitProject { repository='https://anonymous.visualstudio.com/Project/_git/my-csharp-project-with-angular' branchName=
buildGitProject {
repository='https://anonymous.visualstudio.com/Project/_git/my-csharp-project-with-angular'
branchName= 'master'
solutionName='MyCSharpSolution.sln'
emailTo='someone@aol.com'
preRakeCommands=['install_npm_dependencies', 'ng_build']
}
这取决于我们的构建脚本,即:
def call(body) {
def args= [:]
body.resolveStrategy = Closure.DELEGATE_FIRST
body.delegate = args
body()
def agentName = "windows && ${args.branchName}"
def remoteConfig = org.pg.RemoteConfigFactory.create(args.repository);
pipeline {
agent none
options {
buildDiscarder(logRotator(numToKeepStr: org.pg.Settings.BUILDS_TO_KEEP))
skipStagesAfterUnstable()
timestamps()
}
stages {
stage("checkout") {
agent any
steps {
checkoutFromGit(remoteConfig, args.branchName)
}
}
stage('build') {
agent{node{ label agentName as String}}
steps {
buildSolution(args.solutionName, args.get('preRakeCommands', []), args.get('postRakeCommands', []))
}
}
stage('test') {
agent{node{ label agentName as String}}
steps {
testSolution(args.solutionName)
}
}
}
}
}
在构建阶段失败。
buildSolution.groovy
def call(String solutionName, ArrayList preRakeCommands, ArrayList postRakeCommands) {
unstash 'ws'
String[] rakeCommands = [
"build_solution[${solutionName}, Release, Any CPU]",
"copy_to_deployment_folder",
"execute_dev_dropkick"
]
String[] combinedRakeCommand = (preRakeCommands.plus(rakeCommands).plus(postRakeCommands)) as String[]
executeRake( combinedRakeCommand )
stash name: 'deployment', includes: 'deployment/**/*'
}
def call(String... rakeTasks) {
def safeRakeTasks = rakeTasks.collect{ "\"$it\"" }.join(' ');
bat script: "rake ${safeRakeTasks}"
}
executeRake.groovy
def call(String solutionName, ArrayList preRakeCommands, ArrayList postRakeCommands) {
unstash 'ws'
String[] rakeCommands = [
"build_solution[${solutionName}, Release, Any CPU]",
"copy_to_deployment_folder",
"execute_dev_dropkick"
]
String[] combinedRakeCommand = (preRakeCommands.plus(rakeCommands).plus(postRakeCommands)) as String[]
executeRake( combinedRakeCommand )
stash name: 'deployment', includes: 'deployment/**/*'
}
def call(String... rakeTasks) {
def safeRakeTasks = rakeTasks.collect{ "\"$it\"" }.join(' ');
bat script: "rake ${safeRakeTasks}"
}
在jenkins构建日志中,它说:
08:43:09 C:\jenkins_repos\Project\my-csharp-project-with-angular>rake "install_npm_dependencies" "ng_build" "[Ljava.lang.String;@11bd466"
我不知道它是如何或为什么使用字符串指针的,因为我认为plus
concated数组和ArrayList。。。加上詹金斯身上有这种感觉,所以测试起来很痛苦
List a = ['a1','a2','a3']
String [] s = ['s1','s2','s3']
List b = ['b1','b2','b3']
println a.plus(s as List).plus(b)
输出:
[a1, a2, a3, s1, s2, s3, b1, b2, b3]
输出:
[a1, a2, a3, s1, s2, s3, b1, b2, b3]
另一种方法:
List a = ['a1','a2','a3']
String[] s = ['s1','s2','s3']
List b = ['b1','b2','b3']
println ([*a,*s,*b])
或者
println a + [*s] + b
另一种方法是,哪一种应该表现得更好
List a = ['a1','a2','a3']
String[] s = ['s1','s2','s3']
List b = ['b1','b2','b3']
println ([*a,*s,*b])
或者
println a + [*s] + b
哪个性能更好修复了它。。我真傻。我应该使用
ArrayList.addAll
。愚蠢的C#habbits解决了这个问题。。我真傻。我应该使用ArrayList.addAll
。愚蠢的C#habbitsi使用了一种稍有不同的方法,但这种方法也会奏效。谢谢。我用了一个稍微不同的方法,但这个方法也会奏效。非常感谢。