Chargement

DevOps 101

Pipelines<3

What is going on ?

Pour tester / pour le TD :
Projet ms-node-server

Les outils utilisés :
Mocha
Chai

La documentation utile / pour aller plus loin :
Jetbrains - Le guide CI / CD
Gitlab - CI / CD

Usecase

C'était pour la prod ton push ?

Elle est testée cette fonctionnalité ?

Kevin, ptin, t'a pas testé la fonctionnalité, on arrive à diviser par 0, il y a tout qui plante !

T'inquiète, ça marche sur mon arch linux en archi i686.

Il y a un push sur Master qui plante tout, la démo est dans 15 minutes, je vous hais.

But du jeu

Les Pipelines sont utilisés dans les SI depuis bien plus longtemps que l'arrivée du DevOps

La principale fonctionnalité d'une pipeline est sa capacité à enchainer des tâches dans le but d'éxécuter un processus plus complexe

Grace aux pipelines, on peut automatiser certaine tâches et éviter de gaspiller du temps et de l'argent.

Dans la plus part des cas, nous utilisons les pipelines pour la réalisation de tests, l'intégration continue et le déploiement continu.
Le but est d'automatiser les tâches à faible valeur ajoutée !

LeHow ToavecCircleCI

Pour commencer, nous allons utiliserCircleCI, rapide, simple, gratuit.

Commençons par créer un compte via Gitlab ou Github, afin d'automatiquement récupérer les projets.

Une fois le compte créé, il est temps de "Set Up Project" dans la liste de nos projets, en utilisant un template de configuration Circle CI proposé.
Dans le cadre d'un projet NodeJS, vous devriez obtenir la configuration suivante :

 1.    # This config is equivalent to both the '.circleci/extended/orb-free.yml' and the base '.circleci/config.yml'
 2.    version: 2.1
 3.
 4.    # Orbs are reusable packages of CircleCI configuration that you may share across projects, enabling you to create encapsulated, parameterized commands, jobs, and executors that can be used across multiple projects.
 5.    # See: https://circleci.com/docs/2.0/orb-intro/
 6.    orbs:
 7.      node: circleci/node@4.7
 7.
 9.    # Invoke jobs via workflows
10.    # See: https://circleci.com/docs/2.0/configuration-reference/#workflows
11.    workflows:
12.      sample: # This is the name of the workflow, feel free to change it to better match your workflow.
13.        # Inside the workflow, you define the jobs you want to run.
14.        jobs:
15.          - node/test:
16.              # This is the node version to use for the `cimg/node` tag
17.              # Relevant tags can be found on the CircleCI Developer Hub
18.              # https://circleci.com/developer/images/image/cimg/node
19.              version: '16.10'
20.              # If you are using yarn, change the line below from "npm" to "yarn"
21.              pkg-manager: npm

You can finallycommit!

A vous de jouer !

Ajoutez la CI au projet !(Et profitez-en pour ajouter des tests !)

Plusieurs réflexion à avoir par rapport à l'intégration d'une CI dans notre process :

• Est-ce utile de faire tourner une CI à chaque push ou uniquement sur certain ?
- Si uniquement sur certain, n'hésitez pas à utiliser le système detag
- Si sur tous les push, ayez une bonne stratégie de push pour éviter trop de pipeline dans le rouge :)

• Quelles sont les étapes à tester ?
- Le build ?
- Le code ?
- L'intégration ?

• Quels sont les fichiers / dossiers à cibler / éviter ?

Pour faire simple : Customisez votre config CircleCI !

 # Javascript Node CircleCI 2.0 configuration file
#
# Check https://circleci.com/docs/2.0/language-javascript/ for more details
#
version: 2.1
jobs:
  build:
    docker:
      # specify the version you desire here (last version :14)
      - image: circleci/node

    working_directory: ~/server
    steps:
      # Checkout code
      - run:
          name: Checkout code
          command: checkout

      # install all dependencies
      - run:
          name: Install dependencies
          command: yarn install

      # One more time ?
      - run:
          name: Build succeed
          command: echo "build succeed !"


workflows:
  version: 2
  tagged-build:
    jobs:
      - build:
          context: epita-devops