提交和提交约定要记录对软件所做的更改,可以使用 Git 的提交消息。有许多结构可用于构建 Git 的提交消息,我喜欢遵循Angular 提交约定。 Angular 提交约定定义了严格的规则,以使提交消息更具可读性。
Angular 提交消息约定
消息的结构很简单:
type(scope): body
根据定义,有以下提交类型:
• 构建
• ci
• 文档
• 壮举
• 修复
• 性能
• 重构
• 风格
• 测试
范围是可选的,并写在括号中,我们可以在其中引用项目管理工具中的票号。在正文中,我们简要描述了此提交的更改。现在特别的是,我们可以从不同的类型中推断出版本将如何变化。例如,以下提交消息将导致次要版本的增量:
feat(#TICKET_NUMMER): neues feature XY erarbeitet
管道是持续集成的重要组成部分。管道由阶段和作业组成。阶段描述了何时应该执行作业,例如在自动测试的合并请求期间或合并到主分支之后。
一个阶段中可以存在多个作业。一个作业包含代码或者可以执行脚本,例如我们可以检查分支的代码质量。一个阶段中的作业必须成功,即它们必须以退出代码 0 结束,管道才能移动到下一个阶段或成功完成。
阶段和作业在名为 的 YAML 文件中定义.gitlab-ci.yaml。
版本控制阶段
为了从提交消息自动创建新版本,.gitlab-ci.yaml-Datei如果它 分时度假业主名单 尚不存在,则首先创建它。
创建了Versioning-Stage和 的工作Versioning-Stage。该作业需要 Node.js Docker 镜像作为基础。为此,GitLab 运行程序必须有权访问 Docker 引擎。
要进行设置,请遵循Docker 执行器的 GitLab 文档。
.gitlab-ci.yaml 中的版本控制阶段和构建标记作业
首先,创建一个新阶段和一个新作业来创建语义版本。
该stages对象可以有一个阶段列表。创建阶段后,现在可以为该阶段定义作业。
你创造了一个新的工作build-tag。该作业定义如下,将为我们创建一个新版本:
在作业中,我们安装 NPM 包Semantic-Release并在 Node.js Docker 镜像中安装 Git。语义发布为我们处理工作并负责确定下一个版本号。
优点是语义发布从版本控制过程中消除了人类情感,并遵循明确的规则,即语义版本控制的规则。但是,我们可以指定包应响应哪些提交消息类型来定义新版本。
为了定义 Semantic-Release 应响应哪些类型的规则,.releaserc.json Datei当前执行路径中必须存在一个规则。在这里您可以看到Semantic-Release 的配置参考。
我的配置存储在环境变量中$RELEASE_RC。该变量存储在存储库的 CI/CD 设置中。
此外,您还需要一个名为 的环境变量$GITLAB_TOKEN。该变量$GITLAB_TOKEN包含用于访问存储库的令牌。您可以在此处阅读如何创建访问令牌。 Semantic-Release 查找此变量以将 Git 标签发布到您的存储库。 Git 标签是一种将版本历史记录中的点标记为重要的功能。
Semantic-Release首先检查Git仓库中是否有版本标签。创建版本时,Semantic-Release 会设置一个包含该版本的新 Git 标记。如果找到相应的版本标记,则仅检查该标记之前的所有提交。然后检查提交消息以查找找到的所有提交。然后可以根据使用的提交消息类型计算版本号。然后,新的语义版本将作为 Git 标签发布在存储库中。
如果未找到标签,则会自动v1.0.0创建包含版本的 Git 标签。初始版本可以在配置中传递给Semantic-Release。
用例:使用新版本号构建 Docker 映像
为了根据我们的代码创建 Docker 映像,我们定义了一个名为 的新阶段deploy和一个名为 的新作业build_docker_image。该作业应该在存储库中创建新的 Git 标签后立即运行,并且标签的名称是语义版本号。