Implémenter le Continuous Testing

Ce projet sert de support à l'atelier Implémenter le Continuous Testing


 

Plan :


 

Utiliser chrome ou firefox de préférence

Read/Write pour ceux qui veulent pratiquer en live :)

  • User : admin
  • Pass : admin


 

ETAPE 1 : FORK le projet cerberustesting/cerberus-sample-maboutique

  1. Depuis le projet github https://github.com/cerberustesting/cerberus-sample-maboutique, fork l’application sur votre repository perso


 

Capture d’écran 2022-06-11 à 00 22 09


 

  1. Valider la creation du fork


 

Capture d’écran 2022-06-11 à 00 23 40


 

Vous devriez être redirigé sur votre fork (Cf. ci dessous)


 

Capture d’écran 2022-06-11 à 00 35 05


 

Dans l'onglet Actions, activer les workflows


 

Capture d’écran 2022-06-27 à 22 33 04


 

ETAPE 2 : Ajout d'une Github Actions Qualité de code

  1. Aller sur la page https://sonarcloud.io/

  2. Choisir de parser un nouveau projet github


 

Capture d’écran 2022-06-12 à 09 37 10


 

  1. Cliquer sur + (ajouter un nouveau repository)


 

Capture d’écran 2022-06-12 à 09 39 18


 

  1. Choisir une organisation, choisir votre organisation perso, cliquer sur only select repository, choisir le projet "ma boutique" et cliquer sur install


 

Capture d’écran 2022-06-12 à 09 40 25

Capture d’écran 2022-06-12 à 09 40 57

Capture d’écran 2022-06-12 à 09 42 08


 

5.Créer une organisation


 

Capture d’écran 2022-06-12 à 09 43 25


 

  1. Choisir Free plan


 

Capture d’écran 2022-06-12 à 09 43 53


 

  1. Selectionner et cliquer sur setup


 

Capture d’écran 2022-06-12 à 09 44 34


 

  1. Dans Sonar, vous arrivez sur cette page


 

Capture d’écran 2022-06-27 à 22 39 03


 

Configurer

  1. Cliquer sur With Github Actions


 

  1. Copier le Token SONAR_TOKEN

Capture d’écran 2022-06-12 à 20 58 26


 

  1. Choisir Other, et copier la configuration

Capture d’écran 2022-06-12 à 21 02 13


 

  1. Copier les propriétés
sonar.projectKey
sonar.organization


 

Capture d’écran 2022-06-12 à 21 19 45


 

Configurer votre projet Github


 

  1. Dand Github, aller dans Settings > Secrets > Actions


 

  1. Cliquer sur New repository secret


 

Capture d’écran 2022-06-12 à 21 32 35


 

  • Name : SONAR_TOKEN
  • Value : Le token sauvegardé


 

  1. Executer manuellement l'action Manual Code Analysis only pour vérifier la bonne intégration avec sonar


 

Capture d’écran 2022-06-27 à 22 48 27


 

Dans Sonar Cloud, vous obtenez une première analyse neutre car aucune Quality Gate n'est configuré


 

Capture d’écran 2022-06-27 à 22 49 55


 

Cliquez sur Set New Code Definition et choisir Previous Version


 

Capture d’écran 2022-06-27 à 22 51 14


 

Depuis la page Actions, relancer une analyse. Dans Sonar, vérifier le résultat :


 

Capture d’écran 2022-06-12 à 11 17 34


 

Integrer l'analyse de code Sonar à la CI

Editer le fichier full_CI_to_complete.yml en intégrant la configuration SONAR. Le fichier ressemble à ceci :


 

name: Full CI to complete

on: [push]

env:
  TAG: SanityCheck.${{ github.event.pusher.name }}.${{ github.event.repository.pushed_at}}

jobs:
  build:
    name: Build
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - name: Checkout source and build
      run: echo Hello, world!
  sonarcloud:
    needs: build
    name: SonarCloud
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
        with:
          fetch-depth: 0  # Shallow clones should be disabled for a better relevancy of analysis
      - name: SonarCloud Scan
        uses: SonarSource/sonarcloud-github-action@master
        with:
          args: >
            -Dsonar.organization=${{ github.repository_owner }}
            -Dsonar.projectKey=${{ github.repository_owner }}_cerberus-sample-maboutique
            -Dsonar.qualitygate.wait=true
            -Dsonar.sources=.
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}  # Needed to get PR information, if any
          SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}


 

Lancer un changement pour tester la bonne intégration à la CI de la Quality Gate


 

Créer un nouveau fichier


 

Capture d’écran 2022-06-12 à 21 53 23


 

Nommez le votrenom.js et renseigner le contenu suivant


 

var names = ["Mike","Matt","Nancy","Adam","Jenny","Nancy","Carl"];
var uniqueNames = [];
$.each(names, function(i, el){
    if($.inArray(el, uniqueNames) === -1) uniqueNames.push(el);
});


 

Capture d’écran 2022-06-12 à 21 55 49


 

Commit New File


 

Capture d’écran 2022-06-12 à 21 56 05


 

Depuis la page Actions, vérifier l'execution de la CI. Vous devriez avoir un KO sur la scan Sonarcloud


 

Capture d’écran 2022-06-12 à 21 58 30


 

Dans Sonarcloud, vérifier la status


 

Capture d’écran 2022-06-12 à 11 23 12


 

cliquer sur "See full Analysis"


 

Capture d’écran 2022-06-12 à 11 36 28


 

Cliquer sur A rating required


 

Analyser les changements à appliquer


 

Capture d’écran 2022-06-12 à 11 37 14


 

Dans github, modifier le fichier


 

let names = ["Mike","Matt","Nancy","Adam","Jenny","Nancy","Carl"];
let uniqueNames = [];
$.each(names, function(_i, el){
    if($.inArray(el, uniqueNames) === -1) uniqueNames.push(el);
});


 

Commit, relancer une execution de l'action Code Analysis et vérifier la correction des erreurs


 

Capture d’écran 2022-06-12 à 11 40 48

ETAPE 3 : Ajout des tests automatiques dans la CI


 

  1. Dans Github aller sur la page Settings > Secrets > Actions


  Capture d’écran 2022-06-13 à 11 26 41


 

  1. Ajouter un nouveau "Repository Secret"


 


 

Capture d’écran 2022-06-13 à 11 22 26


 

  1. Aller sur l'onglet Action


 

Capture d’écran 2022-06-12 à 18 31 54


 

  1. Lancer l'execution du l'action Manual Automated Testing only


 

Capture d’écran 2022-06-28 à 08 56 07


 

Capture d’écran 2022-06-28 à 08 57 24


 

Intégrer l'execution des tests automatiques à la CI

Editer le fichier full_CI_to_complete.yml en intégrant la configuration CERBERUS. Le fichier ressemble à ceci :


 

name: Full CI to complete

on: [push]

env:
  TAG: SanityCheck.${{ github.event.pusher.name }}.${{ github.event.repository.pushed_at}}

jobs:
  build:
    name: Build
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - name: Checkout source and build
      run: echo Hello, world!
  sonarcloud:
    needs: build
    name: SonarCloud
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
        with:
          fetch-depth: 0  # Shallow clones should be disabled for a better relevancy of analysis
      - name: SonarCloud Scan
        uses: SonarSource/sonarcloud-github-action@master
        with:
          args: >
            -Dsonar.organization=${{ github.repository_owner }}
            -Dsonar.projectKey=${{ github.repository_owner }}_cerberus-sample-maboutique
            -Dsonar.qualitygate.wait=true
            -Dsonar.sources=.
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}  # Needed to get PR information, if any
          SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
  run_Tests_UAT:
    needs: sonarcloud
    name: Run_Tests_UAT
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@master
    - name: cerberus-action
      uses: cerberustesting/cerberus-github-action@v6
      with:
        host: https://jftl.cerberus-testing.fr
        campaign: SanityCheck
        apikey: ${{ secrets.APIKEY }}
        author: ${{ github.event.pusher.name }}
        environment: UAT
        tag: ${TAG}


 

Vous obtenez ce resultat


 

Capture d’écran 2022-06-12 à 22 11 05


 

Commit ce changement. Et vérifier la bonne execution de la CI


 

Capture d’écran 2022-06-12 à 22 16 12