Once again, the assumption was that the most informative terms are enough to fully describe their corresponding documents from our application point of view.
Release engineering is the process responsible for taking the individual code contributions of developers and bringing those to the end user in the form of a high quality software release.
Even today, software organizations who are not at the forefront of the release engineering revolution need to consider what release practices should be adopted.
In total, we captured 35 third-party libraries. The major functionality of each library, inferred by analyzing their code and retrieving publicly available information on the Web, is presented in Table 1.
From this total
From this total, 646 merge scenarios have an errored build status.
In detail, we refer to Android-18 API documentation [26] and use the rules below (adopted by prior work [18]) to categorize exceptions: (1) Application Exception: the signaler is from the app itself (identified by the app’s package name).
A CI environment such as Jenkins kicks off a build multiple times a day, either for each patch currently under review, each new commit entering the version control system or at set times during the day (e.g., nightly build), with the aim of notifying developers as soon as possible of breakage [1], [2].
Our findings can help researchers as this inflation could be responsible for bias in build results. The results can also help practitioners to prioritize the best OS/perl version to test on, in terms of expected value.
Broadly speaking, the patches of developers need to be re- viewed and integrated (merged) [13] from developer branches into team and product branches, where they are compiled [48] and tested [89] by the Continuous Integration (CI) system, until they land in the master branch.
From start to finish, a myriad of tasks need to be performed by an organization’s release engineers, i.e., the personnel whose main duties are the development, maintenance, and operation of an organization’s release infrastructure.
Apart from slow CI tests, another major reason for slow CI builds in organizations with large development teams, is the simultaneous submission of multiple commits, yielding a large number of new commits and merges in a short timespan.
The deployment phase is typically followed relatively quickly by the release phase (see below), since in between deployment and release, the deployed files basically are inactive (and invisible to users).
Finally, given that the goal of the integration process (see Section II-A) is to bring high quality code changes as fast as possible to the master branch (and hence to the user), being able to profile the integration process for integration bottle- necks would be a major asset for companies.
Granted, not all of these challenges are release engineering-specific, but these activities would definitely reduce the risk of a bad mobile release for developers.
In general, the correctness of a build system is impacted by the way in which build specifications co-evolve with the source code, for example to include new source code files in the build.
Even the final release might not be released all at once, but might be revealed (released) to one user group at a time (see canary deployment in Section II-E).
If a study by accident would be measuring the bugs reported during feature freeze or the code changes reviewed in that period, a much larger proportion of bug fixes would be visible than usual, with hardly any new feature development [27].