只在指定日期运行触发的Gitlab作业



我有以下问题:

我有一个调度的git管道它运行每个工作早晨的一天。这个管道正在触发其他项目的其他管道。作业在多个gitlab中定义。对应项目中的Yml文件。为了更好地理解,下面是一个只有一个被触发作业的最小示例:

main job:
trigger: child job

child job:
// Do something here
现在的问题是,这触发了子作业只允许在特定的日子运行. 在我们的例子中,是子作业不允许在星期一运行。

我已经有了在主任务中区分子任务应该在哪一天执行的想法,给子任务一个变量,并用onlyexcept标签检查给定的变量。但是,在gitlab.yml中获取当前工作日似乎并不那么容易。还是我错了?

有办法做到这一点吗?

@KamilCuk让我意识到我在这个问题中遗漏了一个重要的方面。当子作业自己执行时,如果可能的话,它应该在没有任何阻碍的情况下运行(也是在星期一)。当主作业触发时,应该应用检查。

最简单的方法就是在作业中检查。

child job:
script:
- weekday=$(LC_ALL=C date +%a)
- case "$weekday" in
Mon) echo "Not running on monday"; exit 0; ;;
esac
- rest of the job

可以通过API触发作业。https://docs.gitlab.com/ee/api/pipeline_triggers.html https://docs.gitlab.com/ee/ci/triggers/index.html

main job trigger child job:
script:
- weekday=$(LC_ALL=C date +%a)
- case "$weekday" in
Mon) echo "Not running on monday"; exit 0; ;;
esac
- curl
-H "Authorization: Bearer somethingosmething" 
$CI_GITALB_URL/.../api/4/....
trigger child job

最新更新