【问题标题】:Triggering the Jenkins job from the GitLab pipeline stage and on successfully completion of the job move to next stage从 GitLab 管道阶段触发 Jenkins 作业,并在成功完成作业后移至下一阶段
【发布时间】:2020-07-26 18:19:15
【问题描述】:

你能帮忙吗,我有以下场景,我浏览了很多视频、博客,但找不到与我的用例匹配的任何内容

要求: 在 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

所有其他阶段都可以正常工作,但对于部署阶段,由于一些限制,我必须使用 Jenkins 远程 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 作业后,我的集成阶段才会开始执行。

感谢您的帮助!

【问题讨论】:

    标签: jenkins gitlab jenkins-pipeline gitlab-ci


    【解决方案1】:

    检索通过remote access API 以编程方式触发的 Jenkins 作业的状态因为不那么复杂而臭名昭著。

    通常您希望在响应标头中收到Location 属性下的url,您可以轮询以获取请求的状态,但不幸的是,有一些中间步骤可以达到这一点.您可以在此post 中找到指南。你也可以看看这个老的post

    获得 url 后,您可以合并并解析状态作业以及脚本中的 sh "exit 1"sh "exit 0" 以强制调用 外部作业 的作业失败或成功,取决于您希望如何断言远程作业

    的结果

    【讨论】:

      猜你喜欢
      • 2021-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多