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 :
- Pour cela on se dirige dans SETTINGS/CI/CD
- On va dans Variables, Expand puis add variables
- On peut alors donner un nom à notre variable et une valeur
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.
- On se rend dans la partie CI/CD / Schedules
- New schedule
- Dans Description on donne un nom au cron
- Puis dans Custom on rentre la ligne cron pour la planification (si tu ne sais pas faire essaye crontab.guru)
- Clique sur Save pipeline schedule
Voila, le job se lancera tous les jours à 21h 🎉