道招

【案例】github actions不同yml复用job,减少费用和重复配置

如果您发现本文排版有问题,可以先点击下面的链接切换至老版进行查看!!!

【案例】github actions不同yml复用job,减少费用和重复配置

使用github actions已经有些年头了,虽然并不一定会用到什么高深的用法,但是每天都有稳定的使用量。自从知道github actions使用运行时长限制的,比如免费用户是2000分钟,付费用户可以达到3000分钟,企业用户可以达到50000分钟。

file

背景

同一个账号或者组织的所有项目共享这个运行分钟数的额度,当时为了避免问题,还特意新建了几个组织分散项目。可是随着项目的使用频率提升,终究这2000分钟的额度不够用了,于是对账号进行了升级。因为一个组织下有多个账号,升级组织时,旗下的每个账号都会升级,每个账号4美元/月,此时账号多了反而花费更高,所以无奈只有把其它用处不大的账号从组织里面移除了。

当时新建组织以及小号的原因是希望查看github workflow时方便看到各个触发来源使用量!!!

file

为了降低升级费用,这个办法不适用了,还是得回归到使用一个账号触发了,这样又无法区分各个触发来源使用量了。

案例实战

既然无法通知触发账号来区分各个触发来源使用量,那就相同的功能使用不同的yml文件名来区分吧。 也就原来用账号A运行workflow.yml,账号B运行workflow.yml,改成账号A运行workflow.yml,账号A运行workflow_B.yml,其中workflow_B.yml和workflow.yml内容一模一样

如果只有一两个workflow_B.yml还好,如果有N个,全部复制粘贴改名,后期维护也会比较麻烦,能否提取出公共的的部分呢,比如job_common.yml,然后新建workflow_A.yml,workflow_B.yml... workflow_N.yml,后期有功能变化只用更改job_common.yml即可。

重点是在yml里面声明workflow_call表示它可以被重用


name: workflow_common
on:
  workflow_call: # 声明为可重用
      # 声明期望接收的 inputs
    inputs:
          input_a:
            description: 'input_a description'
                required: true
                default: 'input_a'
                type: string
            input_b:
              description: 'input_b description'
                required: true
                default: 'input_b'
                type: string
jobs:
  job_common:
    runs-on: ubuntu-24.04
...其它配置此处略过

那workflow_A.yml怎么调用这个workflow_common.yml呢


name: workflow_common
on:
  workflow_dispatch:
    inputs:
        input_a:
            description: 'input_a description'
                required: true
                default: 'input_a'
                type: string
            input_b:
            description: 'input_b description'
                required: true
                default: 'input_b'
                type: string
jobs:
  job_a:
    uses: ./.github/workflows/workflow_common.yml
    with: # 每个yml的inputs相互独立,所以这里需要在写一遍,将workflow_A.yml的inputs选择性的透传到workflow_common.yml
            input_a:
            description: 'input_a description'
                required: true
                default: 'input_a'
                type: string

file

这里可以藏在job_a后面的大功臣job_common了。

结论

  • github actions支持跨yml进行job复用这个功能还是很方便的,满足了我的需求
  • 目前workflow_common.yml的job只有一个(即job_common),如果有多个,并且我只想执行里面的某一个呢?自己没试过,是不是有点为难github actions了😅
更新时间:
上一篇:接入大模型,前端怎么调用流式输出接口下一篇:到顶了

相关文章

通过github actions将佳明数据同步高驰平台脚本(支持国际区与国区)

最近发现了一个能将佳明数据同步高驰平台github脚本(支持国际区与国区) github地址 https://github.com/XiaoSiHwang/garmin-sync-coros 阅读更多…

githubaction提示The `set-output` command is deprecated and will be disabled soon怎么解决

这是github官方的改动,github actions不再推荐使用过时的写法 过时的写法 - name: Save state run: echo "::save-st 阅读更多…

github actions/checkout@v4 清空当前文件(Deleting the contents of xxx)怎么办

我们在使用github actions时几乎都会用到actions/checkout@v4,它的主要目的是把我们github项目的源代码给拉下来,它在拉代码之前会先把目标文件夹给清空了,但是有时我们 阅读更多…

web新开窗口场景降低加载耗时实战

背景 在PC端web项目中经常会出现要开新窗口打开某个页面的场景,一般来说这个新窗口(窗口B)很可能跟之前的窗口(窗口A)功能基本一致,只不过之前的窗口A打开的是a页面,新窗口B打开的B页面,其 阅读更多…

通过github actions实现佳明数据与高驰运动记录双向同步

之前分享过一个 《通过github actions将佳明数据同步高驰平台脚本(支持国际区与国区)》 ,fork了里面的github项目,经过测试后发现确实可以将佳明的运动记录定时同步到高驰呢,可是不 阅读更多…

Github actions如何让某个step自动重试

最近有个github action项目中的某个步骤step需要执行下载文件,但是近期开始出现下载超时的情况,并且还有点频繁。自己除了找服务器的原因以外,还想通过优化github actions来尽量 阅读更多…

关注道招网公众帐号
友情链接
消息推送
道招网关注互联网,分享IT资讯,前沿科技、编程技术,是否允许文章更新后推送通知消息。
允许
不用了