Initialisation SCM Sync Configuration
Une fois le plugin installé, il est nécessaire d'initialiser l'environnement d'exécution. Cet article décrit la mise en place des paramètres avec un dépôt SVN
.
Sommaire
Déclaration comptes
Un annuaire LDAP sera utilisé pour paramétrer les comptes accédant au dépît spécifique. La mise en place s'effectuera comme décrit dans l'article de synchronisation des groupes LDAP. Au niveau de l'annuaire, deux groupes sont créés.
- svn-jenkins-contrib : pour un accès en lecture et écriture;
- svn-jenkins-reader : pour un accès en lecture.
Pour rappel, les tirets dans les noms des groupes sont supprimés lors de la synchronisation. Ils seront donc paramétrés dans SVN avec les noms svnjenkinscontrib
et svnjenkinsreader
.
Gestionnaire source SVN
La mise en place du gestionnaire de source s'effectue comme décrit sur ce Wiki.
Création dépôt
La création du dépôt s'effectue comme dans l'article [Utilisation_SVN#Gestion_d'un_projet suivant].
Sur le serveur, les commandes suivantes sont exécutées pour créer le dépôt jenkins
.
#cd /var/opt/svn #sudo svnadmin create jenkins
Les permissions sont mises à jour pour donner accès au groupe www-data et l'utilisateur subversion:
#sudo chown -R www-data:subversion study #sudo chmod -R g+rws study
Pour des raisons de sécurité, il est recommandé de limiter les accès au repository uniquement au propriétaire et au groupe. Pour cela, les permissions pour "world" sont mises à zéro:
#sudo chmod -R o-rwx study
Restriction d'accès
Ce dépôt ne devrait être utilisé que par un compte technique. Il est donc nécessaire de restreindre les accès à celui-ci uniquement. Dans le cadre de cette installation, un annuaire LDAP est utilisé, et les sécurités sont mises en place comme décrit dans l'article [Configuration_SVN#Restriction_d'accès de configuration de SVN]. Le fichier /var/opt/svn/jenkins/conf/authz
est modifié ainsi.
### This file is an example authorization file for svnserve.
### Its format is identical to that of mod_authz_svn authorization
### files.
### As shown below each section defines authorizations for the path and
### (optional) repository specified by the section name.
### The authorizations follow. An authorization line can refer to:
### - a single user,
### - a group of users defined in a special [groups] section,
### - an alias defined in a special [aliases] section,
### - all authenticated users, using the '$authenticated' token,
### - only anonymous users, using the '$anonymous' token,
### - anyone, using the '*' wildcard.
###
### A match can be inverted by prefixing the rule with '~'. Rules can
### grant read ('r') access, read-write ('rw') access, or no access
### ('').
[aliases]
# joe = /C=XZ/ST=Dessert/L=Snake City/O=Snake Oil, Ltd./OU=Research Institute/CN=Joe Average
[groups]
# harry_and_sally = harry,sally
# harry_sally_and_joe = harry,sally,&joe
# [/foo/bar]
# harry = rw
# &joe = r
# * =
# [repository:/baz/fuz]
# @harry_and_sally = rw
# * = r
[/]
@svnjenkinscontrib = rw
@svnjenkinsreader = r
* =
[groups]
Ainsi, le group svnjenkinscontrib
aura un accès en lecture et écriture sur le dépôt, aors que le group snvjenkinsreader
sera restreint à la lecture.
Synchronisation groupes LDAP
Une fois le fichier d'authentification modifié, il faut mettre en place la synchronisation automatique des groupes LDAP dans celui-ci, comme décrit dans l'article suivant. Dans ce dernier, un script a été mis en place et son exécution plannifié à l'aide d'un cron
, exécution sous une machine Ubuntu
.
Le script /var/opt/ldap_svn/run_sync_ldap_groups.sh
est donc modifié pour plannifier la synchronisation des groupes dans le fichier d'authentification.
python /var/opt/ldap_svn/sync_ldap_groups_to_svn_authz.py \
-d "$bindDn" \
-p "$pwd" \
-l "$ldapUrl" \
-b "$baseDn" \
-g "(&(objectClass=groupOfNames)(cn=svn-jenkins*))" \
-u "$userQuery" \
-i "$userAttr" \
-z /var/opt/svn/jenkins/conf/authz
chmod 640 /var/opt/svn/jenkins/conf/authz
chown www-data:subversion /var/opt/svn/jenkins/conf/authz
Stratégie de Backup
Une sauvegarde est mise en place comme dans le cadre de l'article suivant.
Le répertoire pour les sauvegardes est créés dans un premier temps.
#sudo mkdir /var/opt/backups/svn/jenkins #sudo chmod 740 /var/opt/backups/svn/jenkins #chown root:root /var/opt/backups/svn/jenkins
La sauvegarde est mise en place simplement par l'ajout d'exécution du script /var/opt/backups/svn/svn_backup.sh
avec les paramètres adéquats comme dans la définition suivante de la crontable.
20 5 * * 0,2-6 root cd / && /var/opt/backups/svn/svn_backup.sh jenkins
20 5 * * 1 root cd / && /var/opt/backups/svn/svn_backup.sh jenkins full
Une sauvegarde incrémentale, commande cd / && /var/opt/backups/svn/svn_backup.sh study
, est donc mise en place tous les jours de la semaine, sauf le lundi, à 5h20 AM Une sauvegarde complète, commande commande cd / && /var/opt/backups/svn/svn_backup.sh study
, est mise en place le lundi matin à la même heure. A noter que cette planification est réalisée quelques minutes avant la procédure de sauvegarde de Jenkins.