Note: A French version of this README is available right after this section.
Project description.
- Node.js
- Docker
- Git
- GPG
- SonarQube
- GitHub
- Heroku
- Semantic Release
- Husky
- Commitlint
- Conventional Commits
.
├── .github
│ ├── PULL_REQUEST_TEMPLATE
│ │ └── pull_request_template.md
│ └── workflows
│ └── build.yml
├── src
├── .gitignore
├── Dockerfile
├── LICENSE
├── package.json
├── Procfile
└── README.md
pull_request_template.md: Pull request template.build.yml: CI pipeline, based on GitHub Actions.src: Folder containing the source code of the application..gitignore: Configuration file to ignore certain files in Git.Dockerfile: Configuration file for creating a Docker image.LICENSE: License file.package.json: Configuration file for NPM, including husky and semantic-release.Procfile: Configuration file for Heroku.README.md: Project description file.
main: Main branch of the project. It is protected and can only be modified through pull requests. It is automatically deployed to Heroku.develop: Development branch. It is protected and can only be modified through pull requests. It can be considered as a pre-production branch, and deployed to Heroku if needed.feature/<ticket_number>: Feature branch. Created fromdevelopand merged back intodevelopthrough a pull request.hotfix/<ticket_number>: Hotfix branch. Created frommainand merged back intomainthrough a pull request.
- Commit messages should be written in English, in the present tense.
- Commit messages should be written using the Conventional Commits convention, i.e., following the format:
<type>[optional scope]: <description> [optional issue]. - Adhering to these conventions allows for automated version management and package publishing.
- Pull requests should be written in English, in the present tense.
- A pull request template is available in the
.github/PULL_REQUEST_TEMPLATE/pull_request_template.mddirectory. - Pull requests should be assigned to a reviewer.
- Create a new repository on GitHub: Use this template to create a new GitHub repository.
- Clone the repository: Clone the repository onto your local machine.
- Create a Project: Go to your SonarQube instance and create a new project.
- Generate a Key: Generate an API key for your project.
- Create a GitHub Secret: Go to your GitHub repository settings, then to
Secrets, and create a new secret calledSONAR_TOKENwith the generated API key.
To clone this project, make sure you have configured your SSH keys. You should have the following files in your ~/.ssh/ directory:
configid_rsa_personalid_rsa_personal.pubid_rsa_proid_rsa_pro.pubknown_hosts
If you use multiple GitHub accounts (personal and professional, for example), make sure your ~/.ssh/config file is correctly configured.
Clone the project with SSH:
git clone git@github.com-personal:<your_username>/<project_name>.git
# or for a professional account
git clone git@github.com-pro:<your_username>/<project_name>.gitIf your ~/.ssh/ directory does not contain the files listed above, you can either retrieve them from a backup or generate them again by following the actions below.
Generate a new SSH key:
ssh-keygen -t rsa -b 4096 -C "<YOUR_EMAIL_ADDRESS>"Add the SSH key to the SSH agent:
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa_personal
ssh-add ~/.ssh/id_rsa_proAdd the SSH key to GitHub:
- Go to your GitHub account settings, then to
SSH and GPG keys. - Click on
New SSH key. - Paste the previously exported SSH key into the
Keyfield.
Ensure you've configured your GPG key. You should have the following files in your ~/.gnupg/ directory:
pubring.kbxtrustdb.gpg
If these files are not present, you can either retrieve them from a backup or generate them anew by following the steps below.
Import an existing GPG key:
gpg --import <PATH_TO_KEY>Generate a new GPG key:
gpg --full-generate-keyList GPG keys:
gpg --list-secret-keys --keyid-format LONGExport the GPG key:
gpg --armor --export <KEY_ID>Add the GPG key to Git:
git config --global user.signingkey <KEY_ID>Add the GPG key to GitHub:
- Go to your GitHub account settings, then to SSH and GPG keys.
- Click on New GPG key.
- Paste the previously exported GPG key into the Key field.
- Write Access: Make sure your CI pipeline has write access to your repository. Check the settings at this URL.
- Branch Rules for
main:- Disallow
force-push. - Require code review before merging.
- Require CI to pass before merging.
- Disallow
- The
Dockerfileis configured for a basic environment. Adapt the steps according to your application and programming language.
- The
Procfilecontains commented examples for different types of applications. Uncomment and modify the line that corresponds to your application.
- Modify configuration files like
.gitignore,package.json, etc., according to your project needs.
semantic-release: To automate version management and package publishing. It is configured to run only on themainbranch. The initial setup on version numbers is as follows:1.0.0for the first release, then1.0.1for bug fixes,1.1.0for new features, and2.0.0for major changes. For more information, consult the semantic-release documentation.
This project is under the MIT license - see the LICENSE file for more details.
Description du projet.
- Prérequis
- Structure générale des projets
- Étapes de Configuration
- Personnalisation
- Scripts NPM
- Licence
- Node.js
- Docker
- Git
- GPG
- SonarQube
- GitHub
- Heroku
- Semantic Release
- Husky
- Commitlint
- Conventional Commits
.
├── .github
│ ├── PULL_REQUEST_TEMPLATE
│ │ └── pull_request_template.md
│ └── workflows
│ └── build.yml
├── src
├── .gitignore
├── Dockerfile
├── LICENSE
├── package.json
├── Procfile
└── README.md
pull_request_template.md: Modèle de pull request.build.yml: Pipeline de CI, basé sur GitHub Actions.src: Dossier contenant le code source de l'application..gitignore: Fichier de configuration pour ignorer certains fichiers dans Git.Dockerfile: Fichier de configuration pour créer une image Docker.LICENSE: Fichier de licence.package.json: Fichier de configuration pour NPM, notamment husky et semantic-release.Procfile: Fichier de configuration pour Heroku.README.md: Fichier de description du projet.
main: Branche principale du projet. Elle est protégée et ne peut être modifiée que par le biais de pull requests. Elle est automatiquement déployée sur Heroku.develop: Branche de développement. Elle est protégée et ne peut être modifiée que par le biais de pull requests. Elle peut être considérée comme une branche de pré-production, et déployée si besoin sur Heroku.feature/<numéro du ticket associé à la tache>: Branche de fonctionnalité. Elle est créée à partir dedevelopet fusionnée dansdeveloppar le biais d'une pull request.hotfix/<numéro du ticket associé à la tache>: Branche de correction. Elle est créée à partir demainet fusionnée dansmainpar le biais d'une pull request.
- Les messages de commit doivent être rédigés en anglais, au présent.
- Les messages de commit doivent être rédigés en utilisant la convention Conventional Commits, c'est-à-dire en respectant le format suivant :
<type>[optional scope]: <description> [optional issue]. - Le respect de ces conventions permet d'automatiser la gestion des versions et la publication du package.
- Les pull requests doivent être rédigées en anglais, au présent.
- Un template de pull request est disponible dans le dossier
.github/PULL_REQUEST_TEMPLATE/pull_request_template.md. - Les pull requests doivent être assignées à un reviewer.
-
Créer un nouveau dépôt sur GitHub : Utilisez ce template pour créer un nouveau dépôt GitHub.
-
Clone du dépôt : Clonez le dépôt sur votre machine locale.
-
Créer un Projet : Allez sur votre instance SonarQube et créez un nouveau projet.
-
Générer une Clé : Générez une clé d'API pour votre projet.
-
Créer un Secret GitHub : Allez dans les paramètres de votre dépôt GitHub, puis dans
Secrets, et créez un nouveau secret appeléSONAR_TOKENavec la clé d'API générée.
Pour cloner ce projet, assurez-vous d'avoir configuré vos clés SSH. Vous devrez avoir les fichiers suivants dans votre dossier ~/.ssh/ :
configid_rsa_personalid_rsa_personal.pubid_rsa_proid_rsa_pro.pubknown_hosts
Si vous utilisez plusieurs comptes GitHub (personnel et professionnel par exemple), assurez-vous que votre fichier ~/.ssh/config est correctement configuré.
Cloner le projet avec SSH :
git clone git@github.com-personal:<votre_nom_d_utilisateur>/<nom_du_projet>.git
# ou pour un compte professionnel
git clone git@github.com-pro:<votre_nom_d_utilisateur>/<nom_du_projet>.gitSi votre dossier ~/.ssh/ ne contient pas les fichiers listés ci-dessus, vous pouvez soit les récupérer depuis une sauvegarde, soit les générer à nouveau en suivant les actions ci-dessous.
Générer une nouvelle clé SSH :
ssh-keygen -t rsa -b 4096 -C "<VOTRE_ADRESSE_EMAIL>"Ajouter la clé SSH à l'agent SSH :
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa_personal
ssh-add ~/.ssh/id_rsa_proAjouter la clé SSH à GitHub :
- Allez dans les paramètres de votre compte GitHub, puis dans
SSH and GPG keys. - Cliquez sur
New SSH key. - Collez la clé SSH exportée précédemment dans le champ
Key.
Assurez-vous d'avoir configuré votre clé GPG. Vous devrez avoir les fichiers suivants dans votre dossier ~/.gnupg/ :
pubring.kbxtrustdb.gpgSi ces fichiers ne sont pas présents, vous pouvez soit les récupérer depuis une sauvegarde, soit les générer à nouveau en suivant les actions ci-dessous.
Importer une clé GPG existante :
gpg --import <CHEMIN_VERS_LA_CLE>Générer une nouvelle clé GPG :
gpg --full-generate-keyAfficher les clés GPG :
gpg --list-secret-keys --keyid-format LONGExporter la clé GPG :
gpg --armor --export <ID_DE_LA_CLE>Ajouter la clé GPG à Git :
git config --global user.signingkey <ID_DE_LA_CLE>Ajouter la clé GPG à GitHub :
- Allez dans les paramètres de votre compte GitHub, puis dans
SSH and GPG keys. - Cliquez sur
New GPG key. - Collez la clé GPG exportée précédemment dans le champ
Key.
-
Droits en Écriture : Assurez-vous que votre pipeline de CI a les droits en écriture sur votre dépôt. Vérifiez les paramètres à cette URL.
-
Règles de Branche pour
main:- Interdisez les
force-push. - Exigez une revue de code avant de fusionner.
- Exigez que la CI soit réussie avant de pouvoir fusionner.
- Interdisez les
- Le
Dockerfileest configuré pour un environnement de base. Adaptez les étapes en fonction de votre application et de votre langage de programmation.
- Le
Procfilecontient des exemples commentés pour différents types d'applications. Décommentez et modifiez la ligne qui correspond à votre application.
- Modifiez les fichiers de configuration tels que
.gitignore,package.json, etc., en fonction des besoins de votre projet.
semantic-release: Pour automatiser la gestion des versions et la publication du package. Il est configuré pour être exécuté sur la branchemainuniquement. La configuration initiale sur les numéros de version est la suivante :1.0.0pour la première version, puis1.0.1pour les corrections de bugs,1.1.0pour les nouvelles fonctionnalités, et2.0.0pour les changements majeurs. Pour plus d'informations, consultez la documentation de semantic-release.
Ce projet est sous licence MIT - voir le fichier LICENSE pour plus de détails.