4 votes

GitlabHQ + Gitlab-CI : personnalisation de la logique de construction

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.

1voto

ViV Points 318

Je ne sais pas si c'est ce que vous voulez, mais vous pouvez désactiver complètement l'extraction de code de git en mettant GIT_STRATEGY à none :

variables:
  GIT_STRATEGY: none

https://docs.gitlab.com/ce/ci/yaml/#git-strategy

Pour exécuter des commandes avant l'exécution d'un travail, vous pouvez utiliser la directive "before_script".

before_script is used to define the command that should be run before all jobs, including deploy jobs, but after the restoration of artifacts. This can be an array or a multi-line string.

https://docs.gitlab.com/ce/ci/yaml/#before_script-and-after_script

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X