自动化发布与基础设施即代码实践
1. 自动化发布
1.1 构建示例
在自动化发布的流程中,以构建编号 #41 为例,它由持续构建触发,并关联了两个 JIRA 工单。之后,会启动发布构建(用于发布 Maven 工件)和推广构建(将生成的工件推广到不同的暂存仓库),此构建编号为 #42。发布历史会记录在相关工具的发布历史面板中。
1.2 数据库变更处理
1.2.1 数据库更新脚本
在 DevOps 中,数据库元素也应实现自动发布。建议区分数据库扩展脚本和收缩脚本:
- 扩展脚本 :可在不破坏数据库与应用现有版本向后兼容性的情况下应用的数据库更改,例如添加新表或列等元素。这些脚本可在升级相应应用之前的任何时间运行。
- 收缩脚本 :迁移数据库并破坏向后兼容性,例如移除结构或清理数据。此过程可方便地将数据库迁移与应用部署解耦。
1.2.2 自动发布数据库
自动发布数据库的一个高级挑战是将数据库的当前版本(即当前的表、列等结构元素及其数据)与完整发布的其他部分的当前版本关联起来。通过将数据库元素纳入版本控制,可以创建标签并将所有配置项添加到定义的基线中。
自动部署数据库变更需要一个支持逐步应用数据库变更,同时保留当前结构和内容的过程。更新现有数据库的常见方法有以下几个步骤:
1. 将所有数据库元素(和所有变更集)纳入版本控制。
2. 创建 SQL 脚本,用于将数据库向前滚动到下一个版本以及向后滚动到上一个版本。这些脚本被分组到单个变更集中。
3. 为每