Github-Action-Day16:带有共享数据的条件

这是 Github Action Advent Calendar 的第十六天的内容,如果您想要了解更多已经发布的 tips 信息,查看此处的 索引

昨天,我们研究了我们如何在一个工作流的 steps 中 设置自定义的数据 ,以供后续的 steps 使用。我们通过将数据添加到 env context 中来实现这一点,env context 是一个属性包,您可以对其进行读写。

但是,您没有必要限制您自己只在 steps 中使用 env context 。您也可以在您的工作流(workflow) 内部中使用 env context ,比如基于您在之前的 steps 中设定的数据(环境变量)设置一些条件。

例如,你可能有一个您希望每天都运行的工作流(workflow),并且您希望对这个工作流在星期一的运行方式上做小小的修改。你可以使用一个 计划触发器 配置每天都运行这个工作流(workflows) 。你也可以复制这个工作流(workflows) ,并添加一些您希望只在星期一运行的特殊修改。但是,维护两个相似但是又略微不同的工作流(workflow) 是一件非常痛苦的事情。

相反,您可以观察一下今天是星期几,并基于此设置一个环境变量值 — 在这里,我将使用 bash 语法运行 date 命令来打印缩写的星期几,并放到我的 echo语句中,它会将 DAY_OF_WEEK 变量保存在我们的 env context 中。然后我就会使用 env.DAY_OF_WEEK 作为后续步骤的一个条件值。

在这个配置下,我会在 UTC 时间的每天 05:00 运行这个工作流。在星期一时,比如今天,独属星期一的 step 才会运行。

image-20210829173408590

但是对于这个礼拜的其余时候,这个 step(Monday-only) 就会被跳过。

image-20210829171511374

这也是另一个优秀的例子,说明 Github Actions 如何提供给您简单的语法,您可以将这些简单的东西组合起来创建强大的工作流(workflows)。