lettre d’amour à ma techno préférée

Jenkins c’est une techno de cyberclochard:

  • c’est lent
  • c’est relou à dev
  • relou à maintenir
  • il faut faire du groovy de merde qui s’exécute seulement dans le contexte de Jenkins
  • il faut traîner des plugins en pagaille qui ne sont pas maintenus ou avec des breaking changes
  • tu serres bien les fesses à chaque update
  • quand ça tombe, tu creuses ta tombe
  • c’est ultra moche, ça donne envie de vomir
    • ne parlons pas de blue ocean qui ne supporte même pas la moitié des features
  • sécu nulle

logo de jenkins avec une cible sur la tête

Bref c’est la honte ultime, l’outil de boloss

Alors vous savez quoi ? Plutôt crever qu’utiliser Jenkins

Je vois 2 alternatives

  • gitlab ci
  • solution de gros schlagos

Parce que gitlab ci est un outil d’une flexibilité et d’une puissance extraordinaire.

Je suis partial, mais pour moi c’est le seul outil de ci/cd qui vaille vraiment le coup, pour les raisons suivantes:

  • tu peux faire tes scripts dans le langage de ton choix
    • bash, python, cobol ce que tu veux et même groovy si tu es nostalgique de Jenkins, pauvre fou
  • gitlab ci et gitlab sont faiblement couplés à ton code de ci/cd
    • mise à jour sans casser ton code et sans réécrire quoi que ce soit
  • pas de foire au plug-in, certaines intégrations font gagner du temps et sont maintenus professionnellement par gitlab
    • j’insiste sur le professionnellement, on est certain d’un minimum de qualité et de suivi
  • tu n’as pas besoin de gitlab pour lancer ou testers tes scripts (et tu peux lancer des jobs pour tester les scripts de tes jobs en plus)

Seulement une contrainte majeure, il faut installer gitlab et un runner pour pouvoir en profiter. Ce qui en fait une bombe atomique pour écraser un moustique quand on bosse sur un projet perso.

Est-ce que j’ai envie de me faire chier à traîner un serveur pour ça, chez moi, ou payer pour une vm ?

Non, putain, ça me saoule puissance 1000, parce que vous le savez bien, j’ai deux qualités:

  • je suis une feignasse
  • je suis radin

animal paresseux rampe au sol

la peste ou le choléra ? choisissez le sida

Et bien aujourd’hui on parle de la solution de gros schlagos, pas envie d’installer Jenkins, pas envie d’installer gitlab et de migrer tous vos repos, besoin de faire du déploiement continu ?

Utiliser la solution Eco+, ménestrel, jonglage et script de margoulin. J’ai nommé git Hook 🤪

Attention, solution non scalable, non viable, mono dev, là on parle projet perso et solution chaussette sale et bouteilles vides au sol.

L’astuce c’est d’utiliser le script de prehook avec un process fork et une condition qui check si ton repo git est dans un état clean. pour que tout de suite après le git push, ton script s’exécute et déploie ta daube, n’oublie pas la sauce 🤪.

boeuf en daube

tu mets ça dans ton repo git .git/hooks/pre-push

sans oublier de faire un petit chmod +x qui va bien

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
#!/bin/bash


function shameful_cicd_function(){
    # mets ici tous tes rêves 
    for i in {1..5}
    do
       sleep 1
       echo "shame $i time"
    done
}

if [ -z "$(git status --porcelain)" ]; then
  # Working directory clean
  shameful_cicd_function  & disown
fi

exit 0

Et là tu vas me dire “quoi ? C’est tout ? C’est nul, rends l’argent des abonnés.”

‘kaamelott, merlin, ça va bien hein’

J’crois que tu n’as pas compris la puissance du truc:

  • deploy lancé au moment où tu push, à la microseconde, imbattable
  • pas d’outil en plus, pas de serveur, pas de connection failure ou d’attente que le runner fasse un truc
  • tu peux même faire du ansible avec le module repo pour git deploy ta nouvelle version depuis ton git remote, il va deploy ta version que tu viens de pusher

du coup à chaque push tu deploy ton truc, rapidité maximum, sécurité minimum All in baby 😏 prank ça part en prod

Pas de problème de ci/cd bloqué quand on a pas d’outil de ci/cd 🤪

meme genius

Conclusion :

  • Plutôt crever qu’utiliser Jenkins, virez-moi cette merde
  • Jenkins c’est horrible de façon pro, pourquoi l’utiliser en perso ? Plutôt crever
  • on peut faire du deploy continu sans installer d’outil dédié de ci/cd
  • pas besoin de traçabilité et d’outil complexe quand on est tout seul
  • prod is the new dev
  • ne fais pas ça sur des projets sérieux hein 😂😂 (ou si mais ne le dis à personne 😏)
  • ramène pas ton vieux jenkins sur des nouveau projets on n’en veut pas de ta merde