ryzen-controller/CONTRIBUTING.md

88 lines
3.7 KiB
Markdown
Raw Permalink Normal View History

# How to contribute
## 1. For everyone
You can help us in many ways:
Without beeing a developer
- By [opening an issue](https://gitlab.com/ryzen-controller-team/ryzen-controller/issues/new) when:
- you found a bug
- have a suggestion
- or just to tell us thanks
- By testing new features an give feedbacks
- on merge requests labeled `[to-test]`, take a look at the pipelines, you'll see some some green "bubbles". The one named _installers_ allow you to download artifacts.
If you have some developer/IT knowledge
- By doing code reviews:
- on merge requests labeled `[to-review]`, by commenting the code.
- on the [whole codebase](https://gitlab.com/ryzen-controller-team/ryzen-controller/tree/v2-react/src), by [opening an issue](https://gitlab.com/ryzen-controller-team/ryzen-controller/issues/new)
If you want to be a part of Ryzen Controller Team, ask to become a member by [opening an issue](https://gitlab.com/ryzen-controller-team/ryzen-controller/issues/new) ;)
## 2. To members or Ryzen Controller Team
### 2.1. Git workflow
This project is fast forward commit only. It means the [commit graph](https://gitlab.com/ryzen-controller-team/ryzen-controller/-/network/master) will stay on one line. It also means that every merge request must be up-to-date with the target branch before beeing merged.
This allow us to avoid any side effect due to merge commits.
A little article about this: [A git workflow using rebase](https://medium.com/singlestone/a-git-workflow-using-rebase-1b1210de83e5)
#### 2.1.1. Quick example
```bash
git clone git@gitlab.com:ryzen-controller-team/ryzen-controller.git ryzencontroller
cd ryzencontroller
git checkout -b my-bugfix
# Doing stuff with files
git add .
git commit -m "fix: Ensure people know what to do."
git push origin my-bugfix
```
Then you'll see a like to create a merge request
### 2.2. Automation
This project contains a [`.gitlab-ci.yml`](https://gitlab.com/ryzen-controller-team/ryzen-controller/blob/master/.gitlab-ci.yml) file.
This file allow us to auotmatically test, build, package and publish Ryzen Controller app.
It's executed for each merge request update and each week on the master branch.
Here a list of what's done by stage.
#### 2.2.1. Tests
Some jobs to enhance gitlab features like [code quality review](https://docs.gitlab.com/ee/user/project/merge_requests/code_quality.html), [security dashboard](https://gitlab.com/ryzen-controller-team/ryzen-controller/security/dashboard/), [Static Application Security Testing](https://docs.gitlab.com/ee/user/application_security/sast/).
And a release-check ([sample job](https://gitlab.com/ryzen-controller-team/ryzen-controller/-/jobs/400164480)), this analyse commit list to detect if a new version must be released.
#### 2.2.2. Install
`yarn install --frozen-lockfile`: https://yarnpkg.com/lang/en/docs/cli/install/#toc-yarn-install-frozen-lockfile
Dont generate a yarn.lock lockfile and fail if an update is needed.
#### 2.2.3. Build
`yarn build`: Compile projects files into `build/` folder, production ready.
#### 2.2.4. Installers
`yarn dist-pack-all`: Create a electron package and the installers that goes with it.
#### 2.2.5. Release note
Only executed on scheduled pipelines
`create-rpm-link`, `create-deb-link`, `create-exe-link`: Create bitly links so we can count downloads =)
`update-changelog`: Update [CHANGELOG.md](https://gitlab.com/ryzen-controller-team/ryzen-controller/blob/master/CHANGELOG.md) files, will be used for the release description.
#### 2.2.6. Release
Only executed on scheduled pipelines
`publish`: Will create a new [release](https://gitlab.com/ryzen-controller-team/ryzen-controller/-/releases)
`no-publish`: Avoid the red flag when no release has to be published.