我有以下问题:
我有一个调度的git管道它运行每个工作早晨的一天。这个管道正在触发其他项目的其他管道。作业在多个gitlab中定义。对应项目中的Yml文件。为了更好地理解,下面是一个只有一个被触发作业的最小示例:
main job:
trigger: child job
child job:
// Do something here
现在的问题是,这触发了子作业只允许在特定的日子运行. 在我们的例子中,是子作业不允许在星期一运行。
我已经有了在主任务中区分子任务应该在哪一天执行的想法,给子任务一个变量,并用only
或except
标签检查给定的变量。但是,在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