Initialisation SCM Sync Configuration

De EjnTricks

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.


User-group-icon.png 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.


Multiples-icon.png 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

Icon ACL.png 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.

Dependencies.gif 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

Strategy-icon.png 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.