.gitlab-ci.yml中的条件after_script

时间:2018-11-05 16:01:58

标签: gitlab gitlab-ci

我在.gitlab-ci.yml中写的工作很少,而我的问题与此SO Question相似。但是,提供和接受的答案不适用于我的情况。

该作业具有after_script部分,该部分在主要任务完成或失败时执行。

问题:我根据主要任务是成功还是失败发送了一封电子邮件警报,但是找不到任何Gitlab CI变量来指示要在警报电子邮件中阐明的工作结果。

如何在after_script部分中确定主要任务是成功还是失败?”

如果我使用when: on_failure,那么我的问题是何时定义我的when: on_success作业,因为这些作业将取决于该作业之前的作业-因此我只能执行其中的一项。为此,我一直试图在Gitlab Variables中找到变量,但找不到。

此外,在我的脚本中-我可以写if条件,但我正在检查是否有人可以提供更好的替代解决方案

1 个答案:

答案 0 :(得分:0)

<块引用>

问题:我根据主要任务是成功还是失败发送了电子邮件警报,但我在警报电子邮件中找不到任何指示作业结果的 Gitlab CI 变量。

<块引用>

此外,在我的后脚本中 - 我可以编写 if 条件,但我正在检查是否有人可以提供更好的替代解决方案

也许您会对新的 stage 提供电子邮件通知工作感兴趣。

完整的 .gitlab-ci.yml 示例:

stages:
  - build
  - notify

build_job:
  stage: build
  script:
    - echo "Your awesome script"
  allow_failure: false # it's here just clarify the workflow, it's false by default

email_alarm:
  stage: notify
  when: on_failure
  script:
    - echo "Your alarm notification to email"

email_success:
  stage: notify
  when: on_success
  script:
    - echo "Your success notification to email"

所以,这里是:只有在 email_alarm 失败时才会执行 build_job。而 email_success 只有在 build_job 成功完成后才会被执行。

如果您需要从 build_job 向电子邮件提供一些工件 - 在 gitlab artifactsbuild_job 作业中使用 email_alarm/email_success