Nous utilisons GitlabHQ et Gitlab-CI dans notre infrastructure. Avec un tel ensemble d'intégration continue, nous sommes prêts à personnaliser la logique de construction dans CI.
Actuellement, lors d'un nouveau commit, GitlabHQ déclenche un hook vers CI, qui indique à gitlab-ci-runner d'exécuter une construction ou un test.
Le Runner a une logique codée en dur (au moins non personnalisable dans l'interface web) et avant d'exécuter les scripts définis par l'utilisateur, il émet ces commandes :
cd $HOMEDIR/gitlab-ci-runner/tmp/builds && git clone git@$GITLABSERVER:root/test1.git project-1 && cd project-1 && git checkout $COMMIT
cd $HOMEDIR/gitlab-ci-runner/tmp/builds/project-1 && git reset --hard && git checkout $COMMIT
et ensuite les scripts définis par l'utilisateur vont
Ce que je veux :
- personnaliser les options passées à git
- Exécuter quelques scripts définis par l'utilisateur avant que les commandes ci-dessus ne soient lancées (dans mon cas, je veux démarrer une machine virtuelle maintenue sur runner afin d'obtenir un environnement propre pour les tests).
Les questions sont les suivantes : Quelqu'un s'est-il trouvé dans une situation similaire ? Existe-t-il un moyen de contourner l'absence d'options nécessaires ?
En ce moment, j'utilise un hack très sale : j'ai remplacé le binaire de git par un bash script nommé 'git', qui attrape les options passées à git et l'exécute à l'intérieur de la machine virtuelle, mais cela ne semble pas être une bonne méthode IMO.