Code review system¶
Gerrit is one of the core components of Software Factory. It provides the Git repository hosting server, a code review mechanism, and a powerful ACL system. Within Software Factory Gerrit is tightly integrated with the issue tracker and the CI pipelines manager.
Some useful plugins are installed on Gerrit:
- Reviewer-by-blame: Automatically adds code reviewers to submitted changes if they authored or modified files affected by the changes.
- Replication: Allows the replication of Git repositories hosted on Software Factory on a remote location, for example Github.
- Gravatar: Displays the gravatar picture associated with a contributor’s email.
- Delete-project: Allow a privileged user to fully remove an useless Gerrit project.
- Download-commands: Allows IDE integration
The following hooks are installed to update the issue tracker on specific events:
- An issue referenced in the commit message of a new submission will be automatically set as “In progress” in the issue tracker.
- An issue referenced by a submission will be closed when the patch gets merged into the main repository.
The following events will trigger actions on the CI pipelines:
- A new patch being submitted, or modified
- A “recheck” or “retrigger” message in the patch’s comments
- A patch reaching the score needed to be candidate for merging (+2 Core, +1 Workflow, +1 Verified)
- A patch being merged
See the pipelines manager section for more details.
Continuous Integration, Delivery, and Deployment system¶
Zuul(V3) <https://docs.openstack.org/infra/zuul/feature/zuulv3/> is the service in charge of running tests and managing projects’s pipeline such as gate and post deployment:
- Jobs are written in ansible and stored in repository
- Secrets management system to manage deployment/publishing key
- Simple multi-node jobs description
The service is pre-configured with five pipelines:
- A check pipeline, used for preliminary tests on upcoming changes
- A gate pipeline, used to make sure an approved change can be merged
- A post pipeline, executing jobs right after a change has been merged
- A release pipeline, executing jobs after a tag has been pushed on a repository
- A periodic pipeline, building jobs at a regular interval, usually daily
When deployed locally, the service is configured with a few roles:
- prepare-workspace: copy project with under review change
- emit-ara-report: generate html logs of ansible play
- validate-host: verify and log information about build host
- upload-logs: upload job logs to a static webserver
A Zuul(V2) service is also available for migration purpose but its usage is deprecated.
Test instances managemer¶
Nodepool(V3) <https://docs.openstack.org/infra/nodepool/feature/zuulv3> is the service in charge of creating tests environment. It supports 3 types of drivers to create instances:
- Openstack cloud
- OpenContainer (runC)
- Static node
It is designed to handle the life cycle of work nodes (creation, provision, assignation and destruction).
A Nodepool(V2) service is also available for migration purpose but its usage is deprecated.
Storyboard is a cross-project task tracker. StoryBoard lets you efficiently track your work across a large number of related projects. Flexible project grouping lets you group together the projects you’re interested in so you can find things quicky and easily.
Software Factory deploys a collection of tools that can ease sharing information within a team:
- Etherpad where team members can edit text documents synchronously to collaborate. This is really handy for instance to brainstorm or design drafts together.
- Lodgeit is a pastebin-like tool that helps sharing code snippets, error stack traces, anything text-based that does not need edition.
- Mumble is a lightweight VoIP and chat software. Software Factory provides the server out of the box, users have to install the mumble client for their respective OSes.