如何解决Jenkins:如何在Jenkins文件中启动Bitbucket文件夹中的多分支作业?
在Jenkinsfile中,要从另一个作业开始参数化的管道作业,我有以下代码片段:
build job: 'build-sharpen-branch',parameters: [
[$class: 'StringParameterValue',name: 'BRANCHNAME',value: mergeBranchname]
]
这已按预期工作,它将在URL https://$JENKINS_URL/job/build-sharpen-branch/
上开始工作。
现在,我要开始一项工作,那就是Bitbucket文件夹内的多分支项目的一个分支。作业的网址为https://$JENKINS_URL/job/iText%207%20.NET/job/sharpen/job/feature%2FQA-10738/
。
-
iText%207%20.NET
是Bitbucket项目的名称。 -
sharpen
是Multibranch作业的名称。 -
feature%2FQA-10738
是分支的名称,使用urlencoded。
我阅读了以下有关不在文件夹内启动多分支作业的问题:
- Trigger Multibranch Job from another
- Triggering a multibranch pipeline job from an other multibranch pipeline
- How to trigger Multibranch Pipeline Jenkins Job within regular pipeline job?
从那里的答案中,我得出语法是$JOB/$BRANCH
(其中$BRANCH
进行了URL编码,以将诸如feature/foo
的分支重命名为feature%2Ffoo
)。
从Jenkins pipeline with folder plugin. How to build a job located different folder中,我发现文件夹内作业的语法为$FOLDER/$JOB
。
将两者结合起来,得出结论,文件夹+作业+分支的语法最有可能是$FOLDER/$JOB/$BRANCH
。
所以我尝试了以下代码:
build job: "iText%207%20.NET/sharpen/${java.net.URLEncoder.encode branchName,'UTF-8'}"
使用
- 文件夹=
iText%207%20.NET
- job =
sharpen
- branch =
${java.net.URLEncoder.encode branchName,'UTF-8'}
(URLEncoder将分支名称中的/
更改为%2F
)
令我惊讶的是,当我运行此程序时,出现了一个错误:
错误:没有找到名为iText%207%20.NET / sharpen / feature%2FQA-10738的项目
如上所述,URL https://$JENKINS_URL/job/iText%207%20.NET/job/sharpen/job/feature%2FQA-10738/
上存在一个作业。
Bitbucket文件夹中的多分支作业的正确语法是什么?
解决方法
问题出在文件夹名称import 'package:flutter/material.dart';
import 'package:quizapp2/views/signin.dart';
import 'package:quizapp2/views/signup.dart';
class Authenticate extends StatefulWidget {
@override
_AuthenticateState createState() => _AuthenticateState();
}
class _AuthenticateState extends State<Authenticate> {
bool showSignIn = true;
void toggleView() {
setState(() {
showSignIn = !showSignIn;
});
}
@override
Widget build(BuildContext context) {
if (showSignIn) {
return SignIn(toogleView: toggleView);
} else {
return SignUp(toogleView: toggleView);
}
}
}
,这是iText%207%20.NET
的数字编码版本。显然,詹金斯(Jenkins)无法处理文件夹名称中的urlencoded空格。
我将文件夹重命名为iText 7 .NET
,然后使用了
itext_7_dotnet
这有效。
故事的寓意:切勿在文件夹名称中使用空格!
,对我们来说,这可行:
build job: "${folder}/${repo}/${branch.replace('/','%2F')}",wait: false,propagate: false
您还可以使用curl
来触发构建,并附带碎屑。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。