À l'issue de cette section, vous aurez découvert :

Présentation des nouveautés sur la branche de ce TP

Pour ce TP, utilisez la branch 1_starting_ci

git checkout 1_starting_ci

Sur cette branche, il y a maintenant :

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
onglet Actions

❌Malheureusement, le pipeline a échoué ...

pipeline tests rouge

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.

Exemple décrit en 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 :

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