请帮忙,我遇到以下情况,我浏览了许多视频,博客,但找不到与用例匹配的内容
要求: 在GitLab中编写CI \ CD管道,可以按此顺序简化以下步骤
- verify # unit test, sonarqube, pages
- build # package
- publish # copy artifact in repository
- deploy # Deploy artifact on runtime in an test environment
- integration # run postman\integration tests
所有其他阶段都可以正常工作,但在部署阶段却可以,但是由于一些限制,我不得不使用带有以下脚本的Jenkin远程API提交现有的Jenkins作业,但是该脚本返回异步响应并启动Jenkins的问题工作和部署阶段完成,然后进入下一个阶段(集成)。
Run Jenkins Job:
image: maven:3-jdk-8
tags:
- java
environment: development
stage: deploy
script:
- artifact_no=$(grep -m1 '<version>' pom.xml | grep -oP '(?<=>).*(?=<)')
- curl -X POST http://myhost:8081/job/fpp/view/categorized/job/fpp_PREP_party/build --user mkumar:1121053c6b6d19bf0b3c1d6ab604f22867 --data-urlencode json="{\"parameter\":[{\"name\":\"app_version\",\"value\":\"$artifact_no\"}]}"
注意:无法使用GitLab CE版和Jenkins CI项目服务。
我正在寻找一种从管道中触发Jenkins作业的可能方法,只有成功完成Jenkins作业后,我的集成阶段才会开始执行。
感谢您的帮助!
答案 0 :(得分:0)
通过remote access API以编程方式检索到的詹金斯工作的状态,以其不易处理而臭名昭著。
通常,您希望在响应标头中的Location
属性下收到一个url
,可以对其进行轮询以获取请求的状态,但不幸的是,这需要一些中间步骤达到这一点。您可以在此post中找到指南。您也可以看看这个较旧的post。
一旦有了该URL,就可以合并并解析状态作业,并在脚本中使用sh "exit 1"
或sh "exit 0"
来强制执行正在调用外部作业的作业。是成功还是失败,取决于您要如何断定远程作业