Skip to content

Platform Team Onboarding Guide

Haani Niyaz edited this page Jul 10, 2022 · 3 revisions

Objective

Provides the essential information for any new starter to the golang-buddies platform team. We highly encourage you to familiarise yourself with the content below as it will help you navigate the repository configurations, familiarise yourself with the tooling and provide you with enough context to contribute.

Developer docs

The published documents are available at https://rog-golang-buddies.github.io/golang-template-repository/

Please go through the contents in the Continuous integration section as it covers the CI tools we offer and how it is setup in this repository.

To setup the local development environment see the Quickstart guide.

Repository releases

semantic-release controls releases based on following a commit message convention. It is imperative this convention is followed to ensure releases are triggered.

Example

For a base version of 0.1.0, the following will apply:


| Type                      | Release type example      | Notes                                                          |
|---------------------------|---------------------------|----------------------------------------------------------------|
| `fix`                     | increments to   `0.1.1`   |                                                                |
| `feat`                    | increments to   `0.1.0`   | Resets any existing patch fixes e.g:   `0.1.3` will be `0.2.0` |
| `BREAKING CHANGE`         | Increments to `1.0.0`     | Can be added to any type                                       |
| All others                | No version increment      |                                                                |

See the full example here.

Commit message convention

The semantic-release commit message convention has 3 parts to it:

Parts Description
type Predefined
scope User defined
msg User defined

The following section focuses on scope to provide some standardisation.

Commit scope

In order to keep the commit scope consistent and meaningful, the following scopes should be used:

CI tooling

The CI tooling scopes should represent the tooling. Some examples are listed below.

sonarcloud
golangci-lint
gitleaks
semantic-release
goreleaser
dependabot
mkdocs
go-test
github           # github related things

Examples:

feat(sonarcloud): Add code coverage

The same scopes should be used for documentation updates. For example:

docs(sonarcloud): Add CI docs to describe the workflow

Other

dockerfile
makefile
readme
app

Style consistency

  1. Keep the scope names in lowercase and use hyphens

    # Do this
    feat(semantic-release): Add changelog
    
    # Not this
    feat(semanticRelease): Add changelog
    
  2. If multiple scopes need to be added use a comma separated list with no spaces

     # Do this
     fix(semantic-release,gorelease): goreleaser must be run after the tag is created
    
     # Not this
     fix(semantic-release, gorelease): goreleaser must be run after the tag is created