【问题标题】:Gitlab run job either by trigger or changesGitlab通过触发器或更改运行作业
【发布时间】:2020-05-17 05:16:05
【问题描述】:

我正在尝试在两种条件之一之后触发 CI 中的特定工作

  1. 由同一管道中的另一个作业触发 或
  2. 更改:somefile.txt

我的 CI 和描述的一样

job1:
    stage: build
    script: 
    - echo "JOb1"
    - curl -X POST -F token=2342344444 -F "variables[TRIGGER_JOB]=job1" -F ref=master https://main.gitlab.myconmpanyxyz.com/api/v4/projects/1234/trigger/pipeline
    only:
     changes:
     - job1.md

job2: # This does not RUN as expected because of the TRIGGER_JOB set to job1
    stage: test
    script: 
    - echo "Job2"   
    rules:
    - if: $TRIGGER_JOB =="job2"

job3: # this RUNS as expected because of VARIABLE TRIGGER_JOB
    stage: test
    script: 
    - echo "Job3"   
    rules:
    - if: $TRIGGER_JOB =="job1"

job4: # this also RUNS, but this should not be the expected behavior 
    stage: test
    script: 
    - echo “job4“   
    rules:
    - if: $TRIGGER_JOB == "xyz"
    - changes: 
      - job4.md

job1 完成后,它还需要调用 job4 而不调用任何其他作业(本例中为 job2)。所以我使用 CURL 来调用工作本身。如果有任何更好的方法来调用同一 CI 中的特定工作,也请告诉我。 我已经看过this stack-overflow 页面,但这无济于事,因为我的工作需要由 2 个条件 中的任何一个触发,这是 gitlab-ci 不允许的。

我需要通过 2 个条件之一调用 job4 - 如果 TRIGGER_JOB=="job1"job4.md 文件有任何更改。 当前,如果在 job4.md 文件中进行了更改,则 job4 运行,但是如果触发了 job1,它也会运行。但是,这不应该是预期的行为。 docs。谁能给我一些线索如何创建这种设计。

【问题讨论】:

    标签: continuous-integration gitlab devops gitlab-ci gitlab-api


    【解决方案1】:

    您的解决方案几乎是正确的,但只有在管道由 pushmerge_request 事件触发时,带有 onlyexceptchanges 关键字才有效。这是在变量CI_PIPELINE_SOURCE 中定义的。当您通过调用 API 触发管道时,变量 CI_PIPELINE_SOURCE 包含值 trigger,因此 only:changes 始终返回 true,这将再次触发 job1 并以无限循环结束。您可以在您的job1 中添加一个简单的except 规则来防止这种情况发生:

    job1:
        stage: build
        script: 
        - echo "JOb1"
        - curl -X POST -F token=2342344444 -F "variables[TRIGGER_JOB]=job1" -F ref=master https://main.gitlab.myconmpanyxyz.com/api/v4/projects/1234/trigger/pipeline
        only:
         changes:
           - job1.md
        except:
          variables:
            - $CI_PIPELINE_SOURCE == "trigger"
    

    您可以在the documentation 中找到有关only/except:changes 的更多信息。

    【讨论】:

      猜你喜欢
      • 2021-12-09
      • 1970-01-01
      • 1970-01-01
      • 2020-09-07
      • 2018-08-01
      • 2022-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多