Documentation

Build System (CI)

This document explains the build system designed and incorporated in Zero Waste Team Project. The document is structured as below

Vision

The code is versioned in Git repositories by the Zero Waste Team. The CI system is envisioned to be build around the git repositories that has the following goals met.

Tools

Note 1: Circle CI and Travis CI are better and more mature than GitHub Actions in many aspects such as dashboarding. GitHub Actions lacks organizational secrets where as Circle CI has it. GitHub actions short fall in these two aspects is overlooked as billing becomes easier. (One bill for Repositories and build tool). The integration is also out of the box between GitHub repos and GitHub Actions.

Note 2: JFrog Artifactory and ProGet are better than GitHub Packages in few aspects. Both JFrog Artifactory and ProGet supports npm, maven, nuget, docker and helm. Where as GitHub Packages does not support help out of the box. GitHub Package’s default behaviour is artifact repository per code repository. This is clearly not convenient to use. As the consumers have to consume from several artifact repositories. The access management of GitHub packages makes it easy and secure to consume artifacts for local and ci builds. Artifactory or ProGet as managed services is either not available or expensive. To save the effort of hosting artifact respositories and benefit from the feature provided by GitHub packages, it is choosen

Branching Stratergy

When using a git repository, its important have a proper branching stratery in place. There are many popular branching stratergies such as Git Flow, Github Flow, GitLab Flow, Release Flow, etc…

The appropriate branching model for the project has to be decided based on several factors. They are listed below

Based on the above points and a few assumptions, the following are branching stratergies are adopted

Versioning Stratergy

The artifacts produced will be versioned as per semantic versioning

Master branch build

Release branch build

Feature branch build

Snapshot of versioning

Versioning Image

Imposed Constraints

Caveat

Build Triggers

Setting up repository

Instructions for setting up repositories are here

Consuming build artifacts

Instrustions for consuming up build artificates from Github package are here