Ce projet sert de support à l'atelier Implémenter le Continuous Testing
Plan :
- ETAPE 1 : FORK le projet cerberustesting/cerberus-sample-maboutique.
- ETAPE 2 : Ajout d'une Github Actions Qualité de code.
- ETAPE 3 : Ajout des tests automatiques dans la CI.
Utiliser chrome ou firefox de préférence
Read/Write pour ceux qui veulent pratiquer en live :)
- User : admin
- Pass : admin
- Depuis le projet github https://github.com/cerberustesting/cerberus-sample-maboutique, fork l’application sur votre repository perso
- Valider la creation du fork
Vous devriez être redirigé sur votre fork (Cf. ci dessous)
Dans l'onglet Actions, activer les workflows
-
Aller sur la page https://sonarcloud.io/
-
Choisir de parser un nouveau projet github
- Cliquer sur + (ajouter un nouveau repository)
- Choisir une organisation, choisir votre organisation perso, cliquer sur only select repository, choisir le projet "ma boutique" et cliquer sur install
5.Créer une organisation
- Choisir Free plan
- Selectionner et cliquer sur setup
- Dans Sonar, vous arrivez sur cette page
- Cliquer sur With Github Actions
- Copier le Token SONAR_TOKEN
- Choisir Other, et copier la configuration
- Copier les propriétés
sonar.projectKey
sonar.organization
- Dand Github, aller dans Settings > Secrets > Actions
- Cliquer sur New repository secret
- Name : SONAR_TOKEN
- Value : Le token sauvegardé
- Executer manuellement l'action Manual Code Analysis only pour vérifier la bonne intégration avec sonar
Dans Sonar Cloud, vous obtenez une première analyse neutre car aucune Quality Gate n'est configuré
Cliquez sur Set New Code Definition et choisir Previous Version
Depuis la page Actions, relancer une analyse. Dans Sonar, vérifier le résultat :
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 }}
Créer un nouveau fichier
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);
});
Commit New File
Depuis la page Actions, vérifier l'execution de la CI. Vous devriez avoir un KO sur la scan Sonarcloud
Dans Sonarcloud, vérifier la status
cliquer sur "See full Analysis"
Cliquer sur A rating required
Analyser les changements à appliquer
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
- Dans Github aller sur la page Settings > Secrets > Actions
- Ajouter un nouveau "Repository Secret"
- Name : APIKEY
- Value : l'APIKEY réupéré dans Cerberus > Administration > Parameters.
- Aller sur l'onglet Action
- Lancer l'execution du l'action Manual Automated Testing only
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
Commit ce changement. Et vérifier la bonne execution de la CI