Devops
【案例】github actions不同yml复用job,减少费用和重复配置
使用github actions已经有些年头了,虽然并不一定会用到什么高深的用法,但是每天都有稳定的使用量。自从知道github actions使用运行时长限制的,比如免费用户是2000分钟,付费用户可以达到3000分钟,企业用户可以达到50000分钟。 背景 同一个账号或者组织的所有项目共享这个运行分钟数的额度,当时为了避免问题,还特意新建了几个组织分散项目。可是随着项目的使用频率提升,终究这2000分钟的额度不够用了,于是对账号进行了升级。因为一个组织下有多个账号,升级组织时,旗下的每个账号都会升级,每个账号4美元/月,此时账号多了反而花费更高,所以无奈只有把其它用处不大的账号从组织里面移除了。 当时新建组织以及小号的原因是希望查看github workflow时方便看到各个触发来源使用量!!! 为了降低升级费用,这个办法不适用了,还是得回归到使用一个账号触发了,这样又无法区分各个触发来源使用量了。 案例实战 既然无法通知触发账号来区分各个触发来源使用量,那就相同的功能使用不同的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呢 Read more…