When contributing to this repository, please first discuss the change you wish to make via issue, email, or any other method with the owners of this repository before making a change.
Please note we have a code of conduct, please follow it in all your interactions with the project.
- Ensure any unnecessary install or build dependencies and other files are removed before the end of the layer when doing a build.
- Explain the changes and update the README.md file and other documentation if necessary.
- Be ready to communicate about the Pull Request and make changes if required by reviewers.
- The Pull Request may be merged once it passes the review and automatic checks.
We use the standard Gitflow Workflow:
- master branch is used only for releases (and eventually hotfixes), this branch is also protected on GitHub (pull requests with review and all checks must pass)
- develop branch is used for development and as a base for following development branches of features, support stuff, and as a base for releases
- feature/* (base develop, rebase-merged back to develop when done)
- chore/* (like the feature but semantically different, not the feature but some chore, e.g., cleanup or update of Dockerfile)
- fix/* (like the feature but semantically different, not something new but fix of a non-critical bug)
- release/* (base develop, merged to master and develop when ready for release+tag)
- hotfix/* (base master, merged to master and develop)
Please note, that for tasks from our Jira, we use such
as [FDT-XX]
identifying the project and task number.
For the release management we use (aside from the Gitflow Workflow):
- Semantic versioning
- Release Candidates - X.Y.Z-rc.N should be created if don’t expect any problems (in that case use alpha or beta), and make a walkthrough to verify its functionality according to the manuals finally - it also verifies that the documentation is up to date with the new version.
- CHANGELOG.md
- GitHub releases and tags - make the release using GitHub (or hub extension), CI will automatically upload ZIP and TGZ distribution files there - better verify.
- Docker Hub image - in case of release, Docker image with the same tag will be created automatically.
- The matching version of TrainHandler-server and TrainHandler-client must be always compatible.