Loading search data...

Gitlab-ci - La parallélisation des jobs booste la productivité

Publié le : 19 octobre 2021 | Mis à jour le : 22 janvier 2023

Lorsque des membres de l’équipe attendent qu’un pipeline en cours d’exécution se termine pour pouvoir apporter une contribution à son projet, la productivité en prend un coup.

Dans un pipeline basique, tous les jobs d’une étape s’exécutent simultanément et les jobs de l’étape suivante doivent attendre qu’ils se terminent pour commencer.

Mais il existe des solutions pour augmenter la productivité des CI:

Les DAG de Gitlab

Job Parallel

Toutes les tâches d’un pipeline n’ont pas la même durée d’exécution. Alors que certains peuvent ne prendre que quelques secondes, d’autres vont prendre beaucoup plus de temps.

GitLab à ajouter une méthode pour créer des clones de jobs et les lancer en parallèle.

Les jobs de tests sont souvent les plus longs à s’exécuter. Prenons l’exemple sur les tests d’une application en ruby. (Ça doit exister également pour d’autres langages, mais va falloir chercher. Perso je vais regarder pour Django.)

test:
  parallel: 5
  script:
    - bundle exec rspec_booster --job $CI_NODE_INDEX/$CI_NODE_TOTAL

Chaque job parallèle se verra affecter une variable CI_NODE_INDEX et une variable CI_NODE_TOTAL.

Entrez dans la matrix

Blague à part. Voici une autre utilisation de parralel. Imaginez que vous deviez compiler votre application avec plusieurs versions du langage. Eh bien en utilisant l’option matrix vous pouvez définir des variables et leur affecter différentes valeurs qui seront utilisées dans jobs qui tourneront en //.

Un exemple avec du python :

wheel:
  image: python:$PYTHON_VERSION-slim
  stage: build
  before_script:
    - pip install build
  script:
    - python -m build --wheel .
  artifacts:
    paths:
      - dist/
    expire_in: 1 day
  parallel:
    matrix:
      - PYTHON_VERSION: ['3.6', '3.7', '3.8', '3.9']

Je suis sûr que vous voyez le gain, d’autres cas d’utilisation. On pourrait imaginer construire plusieurs images docker en // par exemple…

Mots clés :

devops tutorials gitlab ci-cd

Si vous avez apprécié cet article de blog, vous pouvez m'encourager à produire plus de contenu en m'offrant un café sur  Ko-Fi. Vous pouvez aussi passer votre prochaine commande sur amazon, sans que cela ne vous coûte plus cher, via  ce lien . Vous pouvez aussi partager le lien sur twitter ou Linkedin via les boutons ci-dessous. Je vous remercie pour votre soutien.

Autres Articles


Commentaires: