当前位置: X-MOL 学术J. Syst. Softw. › 论文详情
Our official English website, www.x-mol.net, welcomes your feedback! (Note: you will need to create a separate account there.)
On the practice of semantic versioning for Ansible galaxy roles: An empirical study and a change classification model
Journal of Systems and Software ( IF 3.5 ) Pub Date : 2021-08-20 , DOI: 10.1016/j.jss.2021.111059
Ruben Opdebeeck 1 , Ahmed Zerouali 1 , Camilo Velázquez-Rodríguez 1 , Coen De Roover 1
Affiliation  

Ansible, a popular Infrastructure-as-Code platform, provides reusable collections of tasks called roles. Roles are often contributed by third parties, and like general-purpose libraries, they evolve. Therefore, new releases of roles need to be tagged with version numbers, for which Ansible recommends adhering to the semantic versioning format. However, roles significantly differ from general-purpose libraries, and it is not yet known what constitutes a breaking change or the addition of a feature to a role. Consequently, this can cause confusion for clients of a role and new role contributors.

To alleviate this issue, we perform an empirical study on semantic versioning in Ansible roles to uncover the types of changes that trigger certain types of version bumps. Our dataset consists of over 81 000 version increments spanning upwards of 8 500 Ansible roles. We design a novel structural model for these roles, and implement a domain-specific structural change extraction algorithm to calculate structural difference metrics. Afterwards, we quantitatively investigate the state of semantic versioning in Ansible roles and identify the most commonly changed elements. Then, using the structural difference metrics, we train a Random Forest classifier to predict applicable version bumps for Ansible role releases. Finally, we confirm our empirical findings with a developer survey.

Our observations show that although most Ansible role developers follow the semantic versioning format, it appears that they do not always consistently follow the same rules when selecting the version bump to apply. Moreover, we find that the distinction between patch and minor increments is often unclear. Therefore, we use the gained insights to formulate a number of guidelines to apply semantic versioning on Ansible roles. These guidelines can be used by role developers to ensure a clear interpretation of the version increments.



中文翻译:

Ansible星系角色语义版本化实践:实证研究和变化分类模型

Ansible 是一种流行的基础架构即代码平台,提供称为角色的可重用任务集合。角色通常由第三方提供,并且像通用库一样,它们会不断发展。因此,新版本的角色需要使用版本号进行标记,对此 Ansible 建议遵循语义版本控制格式。但是,角色与通用库有很大不同,目前尚不清楚什么构成重大更改或向角色添加功能。因此,这可能会导致角色的客户和新角色贡献者的混淆。

为了缓解这个问题,我们对 Ansible 角色中的语义版本控制进行了实证研究,以揭示触发某些类型版本颠簸的更改类型。我们的数据集包含超过81000 个 版本增量,跨越 8500 个 Ansible 角色。我们为这些角色设计了一个新的结构模型,并实现了一个特定领域的结构变化提取算法来计算结构差异度量。之后,我们定量研究 Ansible 角色中语义版本控制的状态,并确定最常更改的元素。然后,使用结构差异度量,我们训练一个随机森林分类器来预测 Ansible 角色发布的适用版本颠簸。最后,我们通过开发人员调查确认了我们的实证结果。

我们的观察表明,尽管大多数 Ansible 角色开发人员遵循语义版本控制格式,但在选择要应用的版本碰撞时,他们似乎并不总是始终遵循相同的规则。此外,我们发现补丁和小增量之间的区别通常不清楚。因此,我们使用获得的见解制定了许多指南,以在 Ansible 角色上应用语义版本控制。角色开发人员可以使用这些指南来确保对版本增量的清晰解释。

更新日期:2021-08-31
down
wechat
bug