我正在尝试为Jenkins创建我的第一个Groovy脚本:
看了这里https://jenkins.io/doc/book/pipeline/后,我创建了这个:
node {
stages {
stage('HelloWorld') {
echo 'Hello World'
}
stage('git clone') {
git clone "ssh://git@mywebsite.com/myrepo.git"
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是,我得到了:
java.lang.NoSuchMethodError: No such DSL method "stages" found among steps
我错过了什么?
另外,如何在不用纯文本编写密码的情况下将我的凭据传递给Git存储库?
我在jenkins中执行参数化构建以计算否.文件中有1个文件参数的行.它的文件位置是pqr.脚本文件的名称linecount.sh保存在远程服务器上.当我尝试使用命令sh linecount.sh文件名执行它时,它完全可以从jenkins完成.但是当我从参数中删除文件名并执行与参数化构建相同的脚本时,它在控制台上显示以下错误:
Started by user Prasoon Gupta
[EnvInject] - Loading node environment variables.
Building in workspace users/Prasoon/sample_programs
Copying file to pqr
[sample_programs] $ /bin/sh -xe /tmp/hudson3529902665956638862.sh
+ sh linecount.sh
PRASOON4
linecount.sh: line 15: parameterBuild.txt: No such file or directory
Build step 'Execute shell' marked build as failure
Finished: FAILURE
Run Code Online (Sandbox Code Playgroud)
我parameterBuild.txt从本地机器上传文件().为什么会出现此错误?
我怀疑是在shell脚本中我使用了参数$1.当我将文件作为参数时,如何引用它.
简而言之,有没有办法根据构建/运行年龄而不是队列中的多长时间对Jenkins队列进行排序?
在一些背景知识中,我们有一个管道脚本可以并行执行多个任务,最后有一个步骤可以聚合并行任务的结果.这是一个简化版本:
stage ('Do Parrallel stuff') {
def par = [:]
for (int i = 0; i < 4; i++) { par[i] = {sleep(10)} }
parallel par;
}
stage ('Aggregate') {
node {
echo "Aggregating stuff"
}
}
Run Code Online (Sandbox Code Playgroud)
通常情况下,当只有一个正在进行的运行时,这工作正常.即它运行四个并行任务,然后执行聚合部分.但是在高负载期间,此设置失败.让我们考虑以下场景:我们有一个Jenkins实例和一个执行器:
#1[1],#1[2],#1[3],#1[4],#2[1],#2[2],#2[3]和#2[4]#1[1]我们将在队列中有七个任务.#1[2],#1[3]和#1[4].#1可以继续并调度聚合子任务,#1-Aggr#2[1],#2[2]依此类推#1-Aggr,#2-Aggr …