Files
docker-seafile-client/CONTRIBUTING.md
2024-08-24 22:46:19 +02:00

116 lines
3.8 KiB
Markdown

**Do you want to contribute ? Please do!**
* [How to help?](#how-to-help?)
* [Report issues, propose features](#report-issues-propose-features)
* [Solve problems](#solve-problems)
* [Say thanks](#say-thanks)
* [Project workflow](#project-workflow)
* [Environment](#environment)
* [Development](#development)
* [CI/CD](#ci/cd)
# How to help?
They are several ways to help and improve this project.
## Report issues, propose features
You think you found a bug ? You think something is missing out ? Check that it has not been [already reported](https://gitlab.com/flrnnc-oss/docker-seafile-client/-/issues). If it has not, [report it](https://gitlab.com/flrnnc-oss/docker-seafile-client/-/issues/new?issue).
## Solve problems
You can't wait for a problem to be solved ? Pick one from the [already reported problems](https://gitlab.com/flrnnc-oss/docker-seafile-client/-/issues) and solve it. It will be greatly appreciated!
## Say thanks
One great way to help is simply to say thanks. You can do that by [adding a star to the Docker Hub repository](https://hub.docker.com/r/flrnnc/seafile-client) or [just saying thanks in the project topic on Seafile's forum](https://forum.seafile.com/t/docker-client-to-sync-files-with-containers/8573).
# Project workflow
The ins and outs of the project, from setting up a local environment for developments to notifying users of changes.
To provide the different Seafile's client versions, the project rely on the [`seafile` package available throughout the different Debian versions][packages]. Check out [Debian Developer's Package Overview][ddpo] and [Debian Package Tracker][tracker] for in depth details regarding that package.
[packages]: https://packages.debian.org/search?keywords=seafile-cli
[ddpo]: https://qa.debian.org/developer.php?login=team%2Bseafile%40tracker.debian.org
[tracker]: https://tracker.debian.org/pkg/seafile
The following state diagram describe essentially the project workflow for a release.
```mermaid
stateDiagram-v2
feature: Checkout new branch from main
changes: Apply changes
mr: Create a Merge Request
pipelines: CI/CD pipelines must be successful
log: Changes must be documented
merge: Branch is squash merged into main
release: Release is created
[*] --> feature
feature --> changes
changes --> mr
mr --> pipelines
pipelines --> log
log --> merge
merge --> release
release --> [*]
```
## Environment
The following is required to develop:
* Docker engine
* Bash
* Make
## Management
The project managemenet is mostly run through the Makefile.
The parameter `TARGET` define on which Debian version the instructions are run.
The following instructions are available:
### mock
Start the Docker Compose mock for a Seafile server.
### unmock
Start the Docker Compose mock for a Seafile server.
### client
Purge and start the client service on the Docker Compose mock for a Seafile server.
### logs
Continuously display the logs from the client service on the Docker Compose mock for a Seafile server.
### build
Build the Seafile Docker client image depending on the `TARGET`.
### build-test
Build the Seafile Docker client test image depending on the `TARGET`.
### test
Run the Seafile Docker client test container.
### documents
Build the documentation for both Docker Hub and Seafile's forum.
### publish-images
Publish the Docker Seafile client image, properly tagged with the appropriate Seafile cliens versions.
### publish-documents
Publish the generated documentation on Docker Hub only
### save
Export the Seafile Docker client image as a tarball.
### load
Load the Seafile Docker client image from a tarball
## Pipelines
Pipelines are run either on merge requests or on commit tags.
The pipelines are divided into three stages:
* Build
* Test
* Release
Release jobs are obviously not run on merge requests.