ci.yml
,wheel
et docker
,Pour ce TP, utilisez la branch 1_starting_ci
git checkout 1_starting_ci
Sur cette branche, il y a maintenant :
.github/workflows/ci.yml
qui contient le squelette d'une CI.Un pipeline de CI est déjà présent dans ce repo, nous allons l'exécuter.
Comme vous avez forké un repo existant, github actions a besoin d'une notification de création de fichier dans .github/workflows
pour qu'il détecte qu'il y a une CI à exécuter.
Pour cela renommez le fichier ci.yml
en ci-workflow.yml
. (Le fichier peut avoir n'importe quel nom, tant qu'il est dans le bon repository cela marchera).
mv .github/workflows/ci.yml .github/workflows/ci-workflow.yml
Commitez et pushez ce changement
git add .github/workflows/ci-workflow.yml
git commit -m "Rename workflow file"
git push
Comme il s'agit de notre premier commit il va falloir définir notre nom et notre adresse email :
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
Pour push
, Git demandera vos identifiants et un mot de passe. Le mot de passe est le token que vous avez généré au TP0.
Une alternative est de mettre en place une clef SSH.
Puis allez dans l'onglet github actions
❌Malheureusement, le pipeline a échoué ...
Il va falloir le faire passer au vert !
Github actions
est un outil mis à disposition de Github pour construire des pipelines de traitements.
Ces pipelines peuvent être utilisés à des fins d'intégration continue.
Le pipeline est décrit au travers de code, dans un fichier dans le dossier .github/workflows
en langage
YAML, une spec de configuration similaire au JSON
.
La documentation des github Actions ainsi que les mot-clefs utilisables dans les workflows sont consultables sur https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python.
Un exemple officiel en Python est disponible sur le repository Github: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python, nous allons le décrire briévement ci-après:
# Nom du workflow tel que visible dans l'interface
name: Python package
# Evènements qui vont lancer la CI
on: [push]
jobs:
build:
# Configuration de la machine utilisée pour lancer la CI
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["3.7", "3.8", "3.9", "3.10"]
steps:
# Pull du code
- uses: actions/checkout@v3
# Mise en place de python
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install flake8 pytest
if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
- name: Lint with flake8
run: |
# stop the build if there are Python syntax errors or undefined names
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
- name: Test with pytest
run: |
pytest
Votre mission si vous l'acceptez : éditez le fichier .github/workflow/ci-workflow.yml
à la racine du repository pour exécuter les tests avec succès et faire passer le pipeline au vert ✅.
Une fois que vous aurez apporté vos modifications, vous devrez commiter cela sur github.
Vous pourrez ensuite commit
et push
Ajouter à votre CI :
flake8
(disponible sur pypi)vulture
(disponible sur sur pypi)Vous pouvez creuser la façon d'ajouter des étapes sur votre pipeline avec cette documentation.
Finalement vous pouvez explorer comment ajouter des vérifications de sécurité dans votre CI avec le template SAST en lisant cette documentation.
Les instructions du tp suivant sont ici