代码之家  ›  专栏  ›  技术社区  ›  manish2aug

从GitLab pipeline阶段触发Jenkins作业,并在成功完成作业后转到下一阶段

  •  0
  • manish2aug  · 技术社区  · 5 年前

    你能帮忙吗,我有下面的场景,我浏览了很多视频,博客,但没有找到任何与我的用例匹配的东西

    要求 :

    - 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
    

    所有其他阶段都很好,但对于deploy阶段,由于一些限制,我必须使用Jenkin remote API和以下脚本提交一个现有的Jenkins作业,但是存在这样一个问题:脚本返回一个异步响应并启动Jenkins作业,deploy阶段完成,然后它将进入下一个阶段(集成)。

    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 edition和Jenkins CI项目服务。

    我正在寻找一种可能的方法,从管道触发Jenkins作业,只有在成功完成Jenkins作业后,我的集成阶段才开始执行。

    谢谢你的帮助!

    0 回复  |  直到 5 年前
        1
  •  0
  •   Neo Anderson    5 年前

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

    Location 属性,a url 您可以通过轮询来获取请求的状态,但不幸的是,有一些中间步骤可以达到这一点。你可以在这里找到向导 post . 你也可以看看这个老的 post .

    一旦有了url,就可以集中和解析状态作业,或者 sh "exit 1" sh "exit 0" 在脚本中强制调用 外部工作 失败或成功,取决于你想如何断言