Accueil Technologies GitHub Actions – Construire, tester et déployer sans effort (CI/CD)
GitHub Actions - Construire, tester et déployer sans effort (CI&CD)

GitHub Actions – Construire, tester et déployer sans effort (CI/CD)

par Jérémy PASTOURET
Publié : Mis à jour le

GitHub Actions est devenu un acteur très important dans la communauté Open Source et de manière générale dans le monde du développement. Depuis mon intégration à l’équipe Phalcon, j’utilise au maximum GitHub Actions pour construire mes projets, les tester et les déployer de manière automatique. C’est le concept du CI/CD (intégration continue / livraison continue).

Qu’est-ce que GitHub Actions ?

Qu'est-ce que GitHub Actions ?

C’est un onglet / une partie accessible sur un projet géré / versionné par GitHub. Cette fonction date d’août 2019 et permet de créer tout un workflow / processus. Vous pouvez en créer autant que vous le souhaitez par projet. Ces processus se déclenchent lorsqu’un événement définit ce produit. Par exemple : lancer un processus de validation lorsqu’un push (envoi de code) est effectué.

Je suis sûr que vous commencez déjà à en percevoir les avantages. En fonction du résultat du processus, vous pouvez bloquer ou non la réception d’une modification de code. Ce qui est très utile lorsque vous travaillez en équipe ou en communauté dans le cadre d’un projet Open Source.

Quels sont les systèmes d’exploitation gérés par GitHub Actions ?

Quels sont les systèmes d'exploitation gérés par GitHub Actions ?

Il s’agit d’un autre avantage majeur de GitHub. Vous avez la possibilité de compiler, tester et déployer votre code sur un ou plusieurs systèmes d’exploitation. GitHub Actions vous permet de lancer des machines Linux / Windows / MacOS pour faire de l’intégration en continu de manière automatique et sans coût supplémentaire de licence.

Vous pouvez aussi utiliser des images Docker pré-construites afin de vous faciliter encore plus la vie.

De plus, vous avez accès à un système de logs en temps réel, et détaillé pour débugger vos processus. GitHub propose aussi toute une marketplace de Workflows pré-développés en fonction du langage de votre projet, des outils tiers que vous utilisez…

Quel est le prix de GitHub Actions ?

Bannière composants

GitHub Actions est gratuit et sans limite pour tous les projets Open Source. C’est une chance énorme qu’offre GitHub à la communauté. Les projets sont désormais de meilleure qualité, et mis à jour plus facilement grâce à cette super option.

Pour les projets privés gratuits, pros, équipe et entreprise, GitHub donne un temps de base d’utilisation. Ensuite, si vous avez besoin de plus de ressources, vous devrez payer à la minute de consommation. Voici le temps de base et prix du service :

FormuleMinutes inclut/offertUtilisation supplémentaire
Open Source / publicIllimité0€
Gratuit / privé 2 000 minutes / moisLinux 2 cœurs, 7GB – $0.008/minute
Windows 2 cœurs, 7GB – $0.016/minute
macOS 2 cœurs, 7GB – $0.08/minute
Héberger localement – Gratuit
Pro3 000 minutes / mois
Team3 000 minutes / mois
Entreprise50 000 minutes / mois

Comme vous pouvez le constater, l’offre de GitHub est super abordable. Il faut bien entendu être attentif au ressources que vous utilisez dans vos workflows. L’idée n’est pas de surconsommer et de sur-tester à outrance.

Quelles sont les événements déclenchant un processus défini ?

Bannière choix

Vous pouvez déclencher un processus en fonction de plusieurs événements. C’est assez personnalisable. Par exemple : vous pouvez déclencher un processus de validation de code lorsqu’un push est reçu par GitHub. Cela permet d’éviter de polluer le projet versionné sur GitHub. Si le code n’est pas propre, il n’est pas injecté dans le projet, ni propagé sur le poste des autres développeurs. Vous pouvez aussi contrôler le code tous les week-ends, ou le 4 du mois car vous livrez votre code à cette date.

Il existe de nombreuses combinaisons possibles. Pour découvrir toutes les possibilités, je vous invite à consulter cette page de documentation de GitHub Actions.

Comment les Workflows sont-ils configurés?

Bannière développeurs

GitHub utilise le YAML pour décrire les processus. Ce format de fichier descriptif utilise les tabulations, les : et les tirets – pour décrire un processus. C’est assez simple, mais il faut être bien rigoureux. Une tabulation de trop peut faire planter l’interprétation du Workflow. Voici un exemple pour un projet Python :

name: Python package

on: [push]

jobs:
  build:

    runs-on: ubuntu-latest
    strategy:
      matrix:
        python-version: [2.7, 3.5, 3.6, 3.7, 3.8]

    steps:
    - uses: actions/checkout@v2
    - name: Set up Python ${{ matrix.python-version }}
      uses: actions/setup-python@v2
      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

Conclusion

Bannière conclusion

J’espère que ce premier article de présentation vous a donné envie d’essayer GitHub Actions. Vous avez peut-être l’habitude d’utiliser d’autres services concurrents plus connus comme Jenkins, CircleCI ou même GitLab CI.

Parlez-en dans les commentaires : utilisez-vous déjà des outils de CI/CD (Intégration continue / Livraison continue) ? Si oui, quels sont vos critères et quels outils utilisez vous ? Si non, quels sont vos points bloquants ou les désavantages que vous avez repéré ?

Pour continuer dans votre lancer, je vous invite à lire l’article suivant qui vous montre comment vérifier la qualité de votre code PHP avec GitHub Actions.

Vous pourriez aussi aimer

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.