The current starter template uses the following programs:
- Build system:
- Bazel: Build and test software of any size, quickly and reliably.
- Continouos integration (CI):
- GitHub Actions: automate your CI/CD workflows (e.g. build, test, deploy).
- Development enviroment
- devenv: Declaratively define your development environment by toggling basic options.
- pre-commit: Git hook scripts are useful for identifying simple issues before submission to code review.
- clang-format: C/C++ formatter.
- clang-tidy: C/C++ linter.
- Documentation:
- doxygen: It automates the generation of documentation from source code comments, parsing information about classes, functions, and variables to produce output in formats like HTML and PDF
- Version Control tools:
- Git: distributed version control system (VCS) that tracks versions of files.
- Commitizen: enforces a standarized set of rules to write commits (conventional commits by default)
- Release-please: automates CHANGELOG generation, the creation of GitHub releases, and version bumps for your projects.
Caution
You are expected to install devenv
in order to start working with this repository.
-
Change directory into the repository
-
Enter the development environment
devenv shell
-
Develop your code and build using Bazel
-
Commit your changes using
cz commit
Important
Use cz commit
instead of git commit
(this way you'll have some hints to
write your commit message).
Note
Committing will trigger the pre-commit hooks:
- Formatting (i.e. clang-format)
- Push your changes
Note
Pushing will trigger the GitHub Actions:
- CI (i.e. building, testing, style conventions, linting, documentation).
- After pushing your changes to the remote, an automatic pull request
(i.e.
release PR
) will show up. Whenever you decide to merge it an automatic release of your project will be created, a CHANGELOG file will be generated and the documentation will be published to github pages.
This project uses devenv to declaratively define the development environment.
# In your host shell: change directory to the location of this project
devenv shell
This is heavily influenced by ModernCppStarter.