You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Premièrement, le programme demande confirmation de l'endroit où vous souhaitez sauvegarder la clé (`.ssh/id_rsa`) puis il demande deux fois d'entrer un mot de passe qui peut être laissé vide si vous ne souhaitez pas devoir le taper quand vous utilisez la clé.
39
+
Cependant, si vous utilisez un mot de passe, assurez-vous d'ajouter l'option `-o` ; cela sauvegarde la clé privé dans un format qui est plus résistant au craquage par force brute des mots de passe que le format par défaut.
39
40
40
41
Maintenant, chaque utilisateur ayant suivi ces indications doit envoyer la clé publique à la personne en charge de l'administration du serveur Git (en supposant que vous utilisez un serveur SSH réglé pour l'utilisation de clés publiques).
41
42
Ils doivent copier le contenu du fichier `.pub` et l'envoyer par courriel.
`--reuseaddr` autorise le serveur à redémarrer sans devoir attendre que les anciennes connexions expirent, l'option `--base-path` autorise les utilisateurs à cloner des projets sans devoir spécifier le chemin complet, et le chemin en fin de ligne indique au _daemon_ Git l'endroit où chercher des dépôts à exporter.
20
20
Si vous utilisez un pare-feu, il sera nécessaire de rediriger le port 9418 sur la machine hébergeant le serveur.
21
21
22
22
Transformer ce processus en _daemon_ peut s'effectuer de différentes manières qui dépendent du système d'exploitation sur lequel il est lancé.
23
-
Sur une machine Ubuntu, c'est un script Upstart.
24
-
Donc dans le fichier :
23
+
24
+
Puisque `systemd` est le système d'init le plus habitituel sur les distributions Linux modernes, vous pouvez l'utiliser pour cela.
25
+
Placez simplement un fichier `/etc/systemd/system/git-daemon.service` avec le contenu suivant :
Par sécurité, ce _daemon_ devrait être lancé par un utilisateur n'ayant que des droits de lecture seule sur les dépôts — simplement en créant un nouvel utilisateur « git-ro » qui servira à lancer le _daemon_.
46
-
Par simplicité, nous le lancerons avec le même utilisateur « git » qui est utilisé par `git-shell`.
38
+
StandardOutput=syslog
39
+
StandardError=syslog
40
+
SyslogIdentifier=git-daemon
47
41
48
-
Au redémarrage de la machine, votre _daemon_ Git démarrera automatiquement et redémarrera s'il meurt.
49
-
Pour le lancer sans avoir à redémarrer, vous pouvez lancer ceci :
42
+
User=git
43
+
Group=git
50
44
51
-
[source,console]
52
-
----
53
-
initctl start local-git-daemon
45
+
[Install]
46
+
WantedBy=multi-user.target
54
47
----
55
48
49
+
Vous aurez noté que ce daemon Git est lancé ici avec comme utilisateur et groupe `git`.
50
+
Modifiez-le pour correspondre à vos besoins et assurez-vous que l'utilisateur fourni existe sur le système.
51
+
Vérifiez aussi que le binaire Git est bien à l'emplacement `/usr/bin/git` ou changer le chemin si nécessaire.
52
+
53
+
Enfin, lancez `systemctl enable git-daemon` pour démarrer automatiquement le service au démarrage ; vous pouvez démarrer et arrêter le service avec respectivement `systemctl start git-daemon` et `systemctl stop git-daemon`.
54
+
56
55
Sur d'autres systèmes, le choix reste large, allant de `xinetd` à un script de système `sysvinit` ou à tout autre moyen — tant que le programme est démonisé et surveillé.
57
56
58
57
Ensuite, il faut spécifier à Git quels dépôts sont autorisés en accès non authentifié au moyen du serveur.
Copy file name to clipboardExpand all lines: book/04-git-server/sections/git-on-a-server.asc
+4-4Lines changed: 4 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,5 +1,5 @@
1
1
[[s_git_on_the_server]]
2
-
== Installation de Git sur un serveur
2
+
===Installation de Git sur un serveur
3
3
4
4
Nous allons à présent traiter de la configuration d'un service Git gérant ces protocoles sur votre propre serveur.
5
5
@@ -34,7 +34,7 @@ Il y a quelques légères différences dans le fichier de configuration mais pou
34
34
La commande extrait le répertoire Git sans répertoire de travail et crée un répertoire spécifique pour l'accueillir.
35
35
36
36
[[s_bare_repo]]
37
-
=== Copie du dépôt nu sur un serveur
37
+
==== Copie du dépôt nu sur un serveur
38
38
39
39
À présent que vous avez une copie nue de votre dépôt, il ne reste plus qu'à la placer sur un serveur et à régler les protocoles.
40
40
Supposons que vous avez mis en place un serveur nommé `git.exemple.com` auquel vous avez accès par SSH et que vous souhaitez stocker vos dépôts Git dans le répertoire `/srv/git`.
@@ -74,13 +74,13 @@ Dans les chapitres à venir, nous traiterons de mises en place plus sophistiqué
74
74
Ces sujets incluront l'élimination du besoin de créer un compte système pour chaque utilisateur, l'accès public aux dépôts, la mise en place d'interfaces utilisateur web, etc.
75
75
Néanmoins, gardez à l'esprit que pour collaborer avec quelques personnes sur un projet privé, tout ce qu'il faut, c'est un serveur SSH et un dépôt nu.
76
76
77
-
=== Petites installations
77
+
==== Petites installations
78
78
79
79
Si vous travaillez dans un petit groupe ou si vous n'êtes qu'en phase d'essai de Git au sein de votre société avec peu de développeurs, les choses peuvent rester simples.
80
80
Un des aspects les plus compliqués de la mise en place d'un serveur Git est la gestion des utilisateurs.
81
81
Si vous souhaitez que certains dépôts ne soient accessibles à certains utilisateurs qu'en lecture seule et en lecture/écriture pour d'autres, la gestion des accès et des permissions peut devenir difficile à régler.
82
82
83
-
==== Accès SSH
83
+
===== Accès SSH
84
84
85
85
(((servir des dépôts, SSH)))
86
86
Si vous disposez déjà d'un serveur auquel tous vos développeurs ont un accès SSH, il est généralement plus facile d'y mettre en place votre premier dépôt car vous n'aurez quasiment aucun réglage supplémentaire à faire (comme nous l'avons expliqué dans le chapitre précédent).
Copy file name to clipboardExpand all lines: book/04-git-server/sections/gitlab.asc
+16-18Lines changed: 16 additions & 18 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,29 +1,27 @@
1
-
== GitLab
1
+
===GitLab
2
2
3
3
(((servir des dépôts, GitLab)))(((GitLab)))
4
4
GitWeb reste tout de même simpliste.
5
5
Si vous cherchez un serveur Git plus moderne et complet, il existe quelques solutions libres pertinentes.
6
6
Comme GitLab est un des plus populaires, nous allons prendre son installation et son utilisation comme exemple.
7
7
Cette solution est plus complexe que l'option GitWeb et demandera indubitablement plus de maintenance, mais elle est aussi plus complète.
8
8
9
-
=== Installation
9
+
====Installation
10
10
11
11
GitLab est une application web reposant sur une base de données, ce qui rend son installation un peu plus lourde que certains autres serveurs Git.
12
12
Celle-ci est heureusement très bien documentée et supportée.
13
+
GitLab recommande fortement d'installer GitLab sur votre serveur via le paquet officiel Omnibus GitLab.
13
14
14
-
GitLab peut s'installer de différentes manières.
15
-
Pour obtenir rapidement quelque chose qui tourne, vous pouvez télécharger une image de machine virtuelle ou un installateur rapide depuis https://bitnami.com/stack/gitlab[], puis configurer plus finement selon vos besoins.(((bitnami)))
16
-
Une touche particulière incluse par Bitnami concerne l'écran d'identification (accessible via `alt + →`) qui vous indique l'adresse IP, l'utilisateur et le mot de passe par défaut de l'instance GitLab installée.
15
+
Les autres options d'installation de GitLab sont :
17
16
18
-
[[bitnami]]
19
-
.L'écran d’identification de la machine virtuelle du GitLab de Bitnami.
20
-
image::images/bitnami.png[L'écran d’identification de la machine virtuelle du GitLab de Bitnami.]
17
+
* GitLab Helm chart, pour une utilisation avec Kubernetes,
18
+
* des paquets GitLab dockerisés pour une utilisation dans Docker,
19
+
* depuis les fichiers source,
20
+
* Avec un fournisseur Cloud tel que AWS, Google Cloud Platform, Azure, OpenShift et Digital Ocean.
21
21
22
-
Pour toute autre méthode, suivez les instructions du readme du _GitLab Community Edition_, qui est consultable à https://gitlab.com/gitlab-org/gitlab-ce/tree/master[].
23
-
Vous y trouverez une aide pour installer GitLab en utilisant une recette Chef, une machine virtuelle sur Digital Ocean, ou encore via RPM ou DEB (qui, au moment de la rédaction du présent livre sont en bêta).
24
-
Il existe aussi des guides « non-officiels » pour faire fonctionner GitLab avec des systèmes d'exploitation ou de base données non standards, un script d'installation totalement manuel et d'autres guides couvrant d'autres sujets.
22
+
Pour de plus amples informations, référez-vous au https://gitlab.com/gitlab-org/gitlab-foss/-/blob/master/README.md[readme de GitLab Community Edition (CE)].
25
23
26
-
=== Administration
24
+
==== Administration
27
25
28
26
L'interface d'administration de GitLab passe par le web.
29
27
Pointez simplement votre navigateur sur le nom d'hôte ou l'adresse IP où GitLab est hébergé et identifiez-vous comme administrateur.
@@ -34,7 +32,7 @@ Une fois identifié, cliquez sur l’icône « Admin area » dans le menu en h
34
32
.L'entrée « Admin area » dans le menu GitLab.
35
33
image::images/gitlab-menu.png[L’entrée « Admin area » dans le menu GitLab.]
36
34
37
-
==== Utilisateurs
35
+
===== Utilisateurs
38
36
39
37
Les utilisateurs dans GitLab sont des comptes qui correspondent à des personnes.
40
38
Les comptes utilisateurs ne sont pas très complexes ; ce sont principalement des collections d'informations personnelles rattachées à chaque information d'identification.
@@ -53,7 +51,7 @@ Tous les projets et les données situées dans son espace de nom sont effacés e
53
51
Il s'agit clairement d'une action plus destructive et permanente, et son usage est assez rare.
54
52
55
53
[[s_gitlab_groups_section]]
56
-
==== Groupes
54
+
===== Groupes
57
55
58
56
Un groupe GitLab est un assemblage de projets, accompagné des informations de droits d'accès à ces projets.
59
57
Chaque groupe a un espace de nom de projet (de la même manière que les utilisateurs), donc si le groupe +formation+ a un projet +matériel+, son URL sera `http://serveur/formation/matériel`.
@@ -66,7 +64,7 @@ Chaque groupe est associé à des utilisateurs, dont chacun dispose d'un niveau
66
64
Ces niveaux s'échelonnent de _invité_ : `Guest` (tickets et discussions seulement) à _propriétaire_ : `Owner` (contrôle complet du groupe, ses membres et ses projets).
67
65
Les types de permissions sont trop nombreux pour être énumérés ici, mais GitLab fournit un lien très utile sur son écran d'administration.
68
66
69
-
==== Projets
67
+
===== Projets
70
68
71
69
Un projet GitLab correspond grossièrement à un dépôt Git unique.
72
70
Tous les projets appartiennent à un espace de nom unique, que ce soit un utilisateur ou un groupe.
@@ -77,13 +75,13 @@ Si un projet est privé (_Private_), l'accès au projet doit être explicitement
77
75
Un projet interne (_Internal_) est visible par tout utilisateur identifié, et un projet public (_Public_) est un projet visible par tout le monde.
78
76
Notez que ces droits contrôlent aussi bien les accès pour git `fetch` que les accès à l'interface utilisateur web du projet.
79
77
80
-
==== Crochets (_Hooks_)
78
+
===== Crochets (_Hooks_)
81
79
82
80
GitLab inclut le support pour les crochets, tant au niveau projet que système.
83
81
Pour ces deux niveaux, le serveur GitLab lance des requêtes HTTP POST contenant un JSON de description lorsque certains événements précis arrivent.
84
82
C'est une excellent moyen de connecter vos dépôts Git et votre instance GitLab avec le reste de vos automatisations de développement, telles que serveurs d'intégration continue, forum de discussion et outils de déploiement.
85
83
86
-
=== Usage de base
84
+
==== Usage de base
87
85
88
86
La première chose à faire avec GitLab est de créer un nouveau projet.
89
87
Pour cela, il suffit de cliquer sur l’icône `+` sur la barre d'outils.
L'interface utilisateur web donne accès à différentes vues utiles du dépôt lui-même.
112
110
La page d'accueil de chaque projet montre l'activité récente et des liens alignés en haut vous mènent aux fichiers du projet et au journal des _commits_.
113
111
114
-
=== Coopérer
112
+
==== Coopérer
115
113
116
114
Le moyen le plus simple de coopérer sur un projet GitLab consiste à donner à un autre utilisateur un accès direct en écriture sur le dépôt Git.
117
115
Vous pouvez ajouter un utilisateur à un projet en sélectionnant la section `Members` des paramètres du projet et en associant le nouvel utilisateur à un niveau d'accès (les différents niveaux d'accès sont abordés dans <<ch04-git-server#s_gitlab_groups_section>>).
Copy file name to clipboardExpand all lines: book/04-git-server/sections/gitweb.asc
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,4 +1,4 @@
1
-
== GitWeb
1
+
===GitWeb
2
2
3
3
(((servir des dépôts, GitWeb)))(((GitWeb)))
4
4
Après avoir réglé les accès de base en lecture/écriture et en lecture seule pour vos projets, vous souhaiterez peut-être mettre en place une interface web simple de visualisation.
Copy file name to clipboardExpand all lines: book/04-git-server/sections/hosted.asc
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,4 +1,4 @@
1
-
== Git hébergé
1
+
===Git hébergé
2
2
3
3
Si vous ne vous ne voulez pas vous investir dans la mise en place de votre propre serveur Git, il reste quelques options pour héberger vos projets Git sur un site externe dédié à l'hébergement.
4
4
Cette méthode offre de nombreux avantages : un site en hébergement est généralement rapide à créer et facilite le démarrage de projets, et n'implique pas de maintenance et de surveillance de serveur.
0 commit comments