在我的一个项目中,我们正在使用 GitHub 流。分支模型如下:
- 在 Jira 上创建票证 (OSCS-103)
- 从 中创建一个分支
master
,称为OSCS-103
。 - PR 一经创建就在此分支上创建,具有可以测试它的自定义环境,UI 位于
oscs-103.x.com
. - 关闭 PR 后,将删除环境(使用 Terraform)。
- 中的所有
master
内容都已考虑int
并已准备好发布,可以通过int.x.com
. - 创建发布后,其中的所有内容
master
都会被推送到 prod 环境,x.com
目前,为每个分支创建不同环境的过程是“手动”的,我们运行以下命令:
$ terraform init
$ terraform workspace new OSCS-103
$ terraform apply -var="source_branch=OSCS-203" -var="token=$GITHUB_TOKEN"
这在 Terraform 中启动了一个新环境,我们使用它source_branch
来创建管道。
一旦我们完成了这个环境,我们执行:
$ terraform init
$ terraform workspace select OSCS-103
$ terraform destroy -var="source_branch=OSCS-203" -var="token=$GITHUB_TOKEN"
但是,我想自动化这个过程,这样每当创建 PR 时,就会自动创建一个 env(最好使用 AWS CodePipeline 或 AWS CodeBuild),并且当 PR 关闭/合并时,env 会被销毁。
有没有人有他们这样做的例子?
编辑:
澄清一下,terraform
上面的命令正在创建一个管道,这个管道“监听”上的变化source_branch
并运行一个脚本来检查基础设施的变化(使用 terraform 并在必要时进行更改),重建和部署 UI,重建和部署API,以及运行flyway
以迁移数据库更改。