【发布时间】:2022-12-09 00:40:30
【问题描述】:
我来自 Travis,是 GitHub 操作的新手,尽管阅读了大量文档和示例,但仍有一些方面我不理解。
通常,我有两种工作:验证和部署。
- 对于推送到 main 或拉取请求,运行验证脚本(单元测试、lint、生成文档等)。这是推送到 main 或 PR 时应该始终首先运行的内容。
- 对于推送到某些分支机构,在验证作业成功完成后运行部署作业。不同的分支应该触发不同的部署目标(开发、暂存、生产……)
我知道我可以创建一个包含多个作业的工作流,这样一个作业可以是“验证”并执行这些步骤,一个作业可以是“部署”并执行这些作业。但是触发器是不同的。部署作业应该只针对 _some 分支运行,并且似乎无法在其中使用 on 指令工作,仅适用于整个工作流程文件?
我知道我可以使用 if 来检查诸如针对 /ref/heads/master 等的分支,但我认为这非常丑陋,考虑到 on: branches: xxx 等有一个触发机制。然后诉诸于而是在步骤中使用 if 条件的单个作业。我对吗?
那么,我是否应该创建verify.yml和deploy-dev.yml、deploy-staging.yml、deploy-production.yml?
我也明白我可以创建一个带有输入的可重用工作流,这样我就可以创建一个 deploy.yml 工作流,它是从 deploy-dev.yml 等传递过来的,输入像 STAGE=dev。
但是我是否需要为我的每个工作流程重复 actions/checkout、actions/setup-node 等,或者不同的工作流程文件之间是否存在任何关系?
什么是最好的结构 1) 始终运行测试等 2) 在测试运行后根据目标分支部署到不同的环境。
- 多个工作流文件(设置代码有重复步骤?)
-
run:步骤中包含多个作业和条件的一个工作流 - 还有别的吗?
【问题讨论】:
标签: github-actions