GITLAB CI - 监听工作状态

问题描述 投票:0回答:1

问题:由于 GitLab CI 没有提供内置方法来处理手动取消作业时的清理任务,因此有必要创建一个 Python 脚本来处理作业超时或取消时的清理进程手动。为了实现这一点,脚本需要持续监控作业的状态。

  1. os.waitpid() 我无法获取 gitlab runner 的 pid???
  2. CI_JOB_STATUS 但这似乎是在脚本使用后
python gitlab continuous-integration gitlab-ci resource-cleanup
1个回答
0
投票

通常,您会使用

after_script
进行清理,但不幸的是,对于某些情况(例如取消的作业),不支持此功能,尽管此功能已被请求并计划了相当长一段时间(请参阅:#10158)。不过,它似乎已经非常接近完成,并将在 GitLab 17.0(下个月的版本)中发布。请参阅重大变更通知

after_script
关键字将针对已取消的作业运行

  • 在 GitLab 16.8 中发布(2024 年 1 月)
  • GitLab 17.0 中的删除(2024 年 5 月)(重大变更
  • 要讨论此更改或了解更多信息,请参阅弃用问题

after_script
CI/CD 关键字用于在作业的主要
script
部分之后运行附加命令。这通常用于清理作业使用的环境或其他资源。对于许多用户来说,如果取消作业,
after_script
命令不会运行,这是意外且不受欢迎的。在 17.0 中,该关键字将更新为在作业取消后也运行命令。确保使用 after_script 关键字的 CI/CD 配置也能够处理已取消作业的运行。

同时,更普遍的是,您可以通过为您的项目设置一个 webhook 并监听 job events 来“监听”作业状态更改,其中将包括任何作业状态更改以及运行者信息(如果需要) 。这可以让您实现所需的清理,而不是 GitLab 对此的全面支持。

© www.soinside.com 2019 - 2024. All rights reserved.