Gitlab-CI – Pipeline planifié (Scheduler)

gitlab-ci

Avec la CI de Gitlab il est possible de lancer des jobs planifié et ça peut s’avérer très utile quand on fais de l’automatisation.

Il suffit de créer un pipeline Gitlab CI et de planifier la date et l’heure à laquelle le job doit se déclencher.

Pour l’exemple j’ai créer une pipeline qui lance un petit programme python.

Le script python en question est celui de l’article sur l’envoi de mail via python => ICI

Résumé du script :

  • scrappe les dernières sneakers en vente
  • m’envoi un mail aves les info sur les dernières paires

Exemple

Je souhaite que mon script drops.py se déclenche tous les jours à 21h.

Ajout des variables

Mon script de base va chercher les credentials pour la connexion à la boite mail dans le fichier secret.py.

Et comme il ne faut jamais mettre de secret dans son repo git on va les ajouter dans les variables caché de gitlab :

  1. Pour cela on se dirige dans SETTINGS/CI/CD
  2. On va dans Variables, Expand puis add variables
  3. On peut alors donner un nom à notre variable et une valeur
gitlab ci cd
gitlab variable

On peut accéder à notre variable dans le code en faisant $key_variable.

Construction de la pipeline

Je ne veux pas avoir à modifier mon script, dans ce cas je vais adapter ma pipeline au script.

gitlab-ci.yml :

image: ubuntu:latest

stages:
  - deploy

before_script:
  - |
    cat > secret.py << EOF
    compte_gmail = "$compte_gmail"
    password_gmail = "$password_gmail"
    to_mail = "$to_mail"
    EOF
  - export TZ=Europe/Paris
  - export DEBIAN_FRONTEND=noninteractive
  - apt-get update && apt-get install -y tzdata
  - apt install locales-all python3 python3-pip -y
  - pip3 install --upgrade pip 
  - pip3 install -r requirements.txt

deploy:
  stage: deploy
  script:
    - python3 drops.py

Dans before_script je créer mon fichier secret.py avec mes variables ajoutées précédemment puis j’installe les prérequis de mon script.

Enfin dans le job deploy je lance le script.

Ok super ma pipeline est crée mais ce que je veux c’est qu’elle se déclenche automatiquement tous les soirs à 21h, comment faire ?

Gitlab-CI Scheduler

En fait le CI/CD scheduler de gitlab n’est ni plus ni moins qu’un cron.

  1. On se rend dans la partie CI/CD / Schedules
  2. New schedule
  3. Dans Description on donne un nom au cron
  4. Puis dans Custom on rentre la ligne cron pour la planification (si tu ne sais pas faire essaye crontab.guru)
  5. Clique sur Save pipeline schedule
gitlab ci scheduler
gitlab scheduler pipeline

Voila, le job se lancera tous les jours à 21h 🎉

Laisser un commentaire