Connexion avec GitLab CI

ampasq
Messages : 2
Inscription : ven. avr. 30, 2021 5:17 pm

Connexion avec GitLab CI

Message par ampasq »

Bonjour,

Nous étudions votre solution pour nos projets et nous avons quelques questions sur votre future connexion avec GitLab CI.

Sera-t-il nécessaire d'installer un plug-in dans GitLab pour communiquer avec le serveur Squash ?
Vous parlez d'un service dans une image docker pour GitLab mais je veux être sûr.

Pourrais-je sélectionner une branche ou un tag du projet Gitlab pour exécuter les tests ?

Nos tests sont développés dans un environnement Linux et nous utilisons des images Docker dans la CI pour les exécuter.
Actuellement, les tests sont exécutés dans le même job, quand ils utilisent le même conteneur Docker.
Pourrais-je exécuter plusieurs tests Squash dans un même job GitLab pour éviter de lancer plusieurs fois le même conteneur Docker ?

Merci.
aguilhem
Messages : 11
Inscription : lun. mai 25, 2020 11:56 am

Re: Connexion avec GitLab CI

Message par aguilhem »

Bonjour,

Avec Squash DEVOPS, il est possible depuis un pipeline d'intégration continu de faire appel à Squash Orchestrator dans le but d'exécuter un plan d'exécution Squash TM. Le process est alors le suivant :
  • un job d'outil d'intégration continue est déclenché (de façon manuelle ou automatique)
  • le job comporte une étape qui transmet à Squash Orchestrator un descriptif du plan d'exécution Squash TM (une itération par exemple) à exécuter
  • Squash Orchestrator contacte Squash TM pour obtenir les informations sur les tests automatisés du plan d'exécution à exécuter
  • Squash TM envoie en retour à Squash Orchestrator les informations sur chaque cas de test à exécuter (dont des paramètres exploitables à l'exécution)
  • Squash Orchestrator échange directement (via SSH ou via HTTP par le biais d'un agent) avec des environnements d'exécution préalablement configurés au sein de celui-ci pour lancer l'exécution des automates concernés sur ces derniers
  • En fin d'exécution, les rapports et un statut d'exécution extrait de ces derniers est transmis à Squash TM pour chaque test
La transmission d'un descriptif à Squash Orchestrator d'un plan d'exécution à exécuter se faisant par un appel REST, le process décrit ci-dessus peut s'exécuter depuis n'importe quel outil d'intégration continue.
Actuellement, Squashtest propose pour Jenkins un plugin afin de faciliter l'appel à Squash Orchestrator depuis un job Jenkins.
Pour Gitlab, Squashtest ne propose pas encore de moyen pour faciliter l'exploitation de Squash Orchestrator au sein d'un job Gitlab CI mais travaille dessus. Probablement sous la forme de scripts qui seront déclenchable depuis un job Gitlab CI.

Il est par contre déjà possible de lié un cas de test Squash TM à un test automatisé versionné sur un repository hébergé sur Gitlab. Au moment de déclarer un repository dans Squash TM, il est possible de spécifier la branche du repository à viser.
armour
Messages : 5
Inscription : jeu. janv. 27, 2022 10:42 am

Re: Connexion avec GitLab CI

Message par armour »

Bonjour,

Pouvez-vous me dire si vous continuez de développer l’intégration GitLab ? Sera-t-il possible de lancer des tests sur GitLab-CI au travers de Squash TM.

En lisant votre documentation, l'application Python opentf-agent permet d'interroger Squash Orchestrator pour récupérer les tests à exécuter.
Avez vous un exemple concret, projet sur github ou vidéo YouTube.

Merci.
lmazure
Messages : 8
Inscription : ven. janv. 14, 2022 2:09 pm

Re: Connexion avec GitLab CI

Message par lmazure »

Bonjour,

Comme indiqué par Aubin, l'intégration avec Squash DevOps ne marche pas dans le sens Squash TM → GitLab. Il ne s'agit pas de lancer un pipeline GitLab depuis Squash TM.
Squash DevOps permet d'intégrer dans un pipeline (GitLab ou n'importe quel autre) l'exécution d'un plan de test défini dans Squash TM et d'y remonter les résultats des tests. Libre à vous de définir quand vous voulez déclencher ce pipeline : après chaque commit, lorsque vous taggez une release, tous les jours à minuit…
Pourriez-vous décrire votre besoin fonctionnel ? S'il s'agit de lancer des tests depuis Squash TM, il faut utiliser Squash AUTOM. Ce dernier n'a pas besoin de pipeline de CI/CD.

Contrairement à Jenkins, nous ne ferons de plugin pour GitLab, car ceci ne correspond pas à la philosophie de ce dernier.
Vous pouvez avoir des informations sur l'intégration avec GitLab sur le site de l'OpenTestFactory : https://opentestfactory.org/guides/gitlab-ci.html.

opentf-agent se lance une fois : vous vous placez dans l'environnement de test (par exemple un environnement disposant de Robot Framework et de Cucmber-JVM), vous lancez l'agent en indiquant l'os et les technologies de l'envrionnement (opentf-agent --tags windows,cucumber5,robotframework --host http://127.0.0.1 --token "ey..."), celui-ci se connectera toutes les 5 secondes auprès de l'orchestrateur, ce dernier pourra lui donner à exécuter des tests Robot ou Cucumber.

Cordialement
armour
Messages : 5
Inscription : jeu. janv. 27, 2022 10:42 am

Re: Connexion avec GitLab CI

Message par armour »

Nous sommes actuellement en cours d'intégration dans notre CI mais nous rencontrons un problème avec la version de Python que nécessite opentf. J'ai fait un poste à ce sujet -> https://forum.squashtest.com/viewtopic. ... 038#p14038

J'ai par contre une interrogation, comment est fait le lien entre le workflow (robotframework dans notre cas) lancé à partir du job GitLab et les tests référencé dans les exigences (champ "Référence du test automatisé") ? Si c'est automatique c'est parfait :)
lmazure
Messages : 8
Inscription : ven. janv. 14, 2022 2:09 pm

Re: Connexion avec GitLab CI

Message par lmazure »

Bonjour Arnaud,

1) La liste des tests à exécuter est définie dans le PEaC en y indiquant le plan de test (défini dans Squash TM) que l'on veut exécuter : https://autom-devops-fr.doc.squashtest. ... ns-un-peac

2) Dans Squash TM, chaque test automatisé doit référencer son implémentation : https://autom-devops-fr.doc.squashtest. ... -squash-tm

3) Lorsque le pipeline GitLab est déclenché, l'orchestrateur récupère la liste des tests du plan défini en 1), puis, pour chaque test, demande à l'environnement d'exécution de faire un git clone du repo (si pas déjà fait par un test précédent) et de lancer le script Robot Framework défini en 2).

Cordialement
armour
Messages : 5
Inscription : jeu. janv. 27, 2022 10:42 am

Re: Connexion avec GitLab CI

Message par armour »

Je me permets de revenir sur ce sujet car j'apporte d'autres éléments à mon besoin.

Actuellement j'ai un test dans SquashTM comme ceci:
SquashTM.png
SquashTM.png (98.24 Kio) Consulté 4602 fois
et une campagne:
SquashTM-campagne.png
SquashTM-campagne.png (80.42 Kio) Consulté 4602 fois
Mon fichier de workflow est le suivant:

Code : Tout sélectionner

metadata:
  name: Robot Framework Example
jobs:
  # Set the job key.  The key is displayed as the job name when
  # a job name is not provided
  non-regression:
    generator: tm.squashtest.org/tm.generator@v1
    with:
      testPlanType: Iteration
      testPlanUuid: 0d4c446d-f0d7-4656-97a2-e2d813ffcaa1
      squashTMUrl: http://squashtest.phedre.fr
      squashTMAutomatedServerLogin: toto
      squashTMAutomatedServerPassword: 12345
Mon objectif est toujours que le job de ma CI GitLab lance le workflow pour valider un test dans SquashTM, la commande exécutée dans le job est la suivante:

Code : Tout sélectionner

opentf-ctl run workflow tests/fiches/squash/workflow.yaml --wait
Actuellement j'ai l'erreur suivante:

Code : Tout sélectionner

$ opentf-ctl run workflow tests/fiches/squash/workflow.yaml --wait
Workflow 192461fe-e8a5-49eb-9a4a-ea9cb5096224 is running.
Workflow Robot Framework Example
[2022-05-04T06:54:44] [job 27d5c2e6-b233-4d27-a5b1-3d8f917be835] Running action non-regression
[] [job ID not available] ERROR: An ExecutionError occurred:
failure.details: Unexpected redirection.
generator.error: Invalid Squash TM test plan query.
Workflow failed.
Avez-vous une idée ou un lien pour m'indiquer la bonne procédure car on s'y perd facilement entre la documentation de Squash et d'OpenTestFactory.
iData
Messages : 3
Inscription : lun. oct. 24, 2022 3:18 pm

Re: Connexion avec GitLab CI

Message par iData »

Bonjour à tous,

Je suis dans le même cas qu'armour mais pas la même erreur.

J'ai créé un cas de test robotframework avec un "hello world!" :

Code : Tout sélectionner

*** Test Cases ***

My First Robot Test
    Log To Console            Hello Robot World!
 
Aucun soucis d'exécution côté Web UI Squash TM :
1.png
1.png (11.7 Kio) Consulté 4252 fois
Côté client en ligne de commande on le vois bien OK :

Code : Tout sélectionner

root@squashtm-pod:/# opentf-ctl get workflows --opentfconfig=config --token=${TOKEN}
WORKFLOW_ID,STATUS,NAME
9ea8fdc0-195a-48cc-a21c-bbbd9a9438a3,DONE,Workflow for Squash TM Suite with id 8ad8808283ebaa430183fab275af0007
Par contre dès que j'essaye de lancer via la ligne de commande, impossible d'avoir quelque chose qui fonctionne :

Code : Tout sélectionner

$ opentf-ctl run workflow wf.yml --opentfconfig=config --token=${TOKEN} --wait
Workflow 22033099-2d42-4cce-ad9d-4a3e100616f7 is running.
Workflow Robot Framework Example
(running in namespace 'default')
[2022-10-24T13:10:00] [job 5fe7736b-40e8-4585-b95b-6cbc9c6122e6] Running action non-regression
[] [job ID not available] ERROR: An ExecutionError occurred:
failure.details: HTTP 403 Forbidden
generator.error: Invalid Squash TM test plan query.
Workflow failed.

$ opentf-ctl get workflows --opentfconfig=config --token=${TOKEN}
WORKFLOW_ID,STATUS,NAME
22033099-2d42-4cce-ad9d-4a3e100616f7,FAILED,Robot Framework Example
Tous les identifiants et token sont correcte car j'arrive à curl des infos ou mêmes get des infos via la ligne de commande.

Également l'erreur n'est pas parlante et je ne trouve aucun moyen de passer la ligne de commande en mode debug ou verbose pour en savoir plus.

Voici le fichier de config utilisé :

Code : Tout sélectionner

apiVersion: opentestfactory.org/v1alpha1
contexts:
- context:
    orchestrator: my_orchestrator
    user: admin
  name: my_orchestrator
current-context: my_orchestrator
kind: CtlConfig
orchestrators:
- name: my_orchestrator
  orchestrator:
    insecure-skip-tls-verify: true
    ports:
      agentchannel: 24368
      eventbus: 38368
      killswitch: 7776
      observer: 7775
      receptionist: 7774
    server: http://10.242.4.11:8080/
users:
- name: admin
  user:
    token: xxxx
Le fichier de workflow.yml, qui provient de votre répo gitlab :

Code : Tout sélectionner

metadata:
  name: Robot Framework Example
jobs:
  # Set the job key.  The key is displayed as the job name when
  # a job name is not provided
  non-regression:
    generator: tm.squashtest.org/tm.generator@v1
    with:
      testPlanType: Iteration
        #      testPlanUuid: 589cd719-5387-4809-8a44-d97985124503
        #testPlanUuid: ebda1ce1-a91a-47ff-abfd-2b891d4c2ccf
        #testPlanUuid: 7ef1ba15-428d-4231-96d4-2dea2e7a4760
      testPlanUuid: 286aea7a-2ff1-45fa-8faa-c6d38e00e677
      squashTMUrl: http://10.242.4.11:8080/squash
      squashTMAutomatedServerLogin: admin
      squashTMAutomatedServerPassword: admin

Au niveau des plugins installés :

Code : Tout sélectionner

org.eclipse.jgit-5.1.2.201810061102-r.jar
plugin.api.rest.core-4.0.0.RELEASE.jar
plugin.api.rest.services-4.0.0.RELEASE.jar
plugin.bugtracker.mantisrest-4.0.1.RELEASE.jar
plugin.requirement.xsquash4gitlab-4.0.1.RELEASE.jar
plugin.requirement.xsquash4jira-4.0.0.RELEASE.jar
plugin.scm.git-4.0.0.RELEASE.jar
plugin.testautomation.squashautom.community-4.0.1.RELEASE.jar
report.books.requirements.editable-4.0.0.RELEASE.jar
report.books.testcases.editable-4.0.0.RELEASE.jar
report.qualitativecoverage-4.0.0.RELEASE.jar
squash-tm-gitlab-bt-connector-4.0.1.RELEASE.jar
squash.tm.rest.result.publisher.community-4.0.0.RELEASE.jar
squash.tm.rest.test.plan.retriever.community-4.0.0.RELEASE.jar
Version de Squash TM : 4.0.2.RELEASE

L'idée étant d'utiliser via Gitlab-ci l’exécution des tests côtés Squash.
Je monte un PoC pour un client afin de savoir si on est fonctionnel avant, bien sûr, d'acheter une licence.

D'avance merci de votre aide, ou de nous apporter une doc fonctionnelle pour Gitlab (ou même juste en ligne de commande ou curl).

Bonne journée.

Cordialement,

---
DR
lblouzon
Messages : 18
Inscription : mer. janv. 19, 2022 4:29 pm

Re: Connexion avec GitLab CI

Message par lblouzon »

Bonjour,

J'observe dans votre Peac les données suivantes:

Code : Tout sélectionner

squashTMAutomatedServerLogin: admin
      squashTMAutomatedServerPassword: admin
S'agit-il bien ici des identifiants de l'utilisateur technique (utilisateur spécifique appartenant au groupe "Serveur d'automatisation des tests" dans Squash TM) ?
Pour exécuter les tests automatisés depuis un pipeline, vous devez impérativement créer cet utilisateur dans Squash TM et ce sont ses identifiants qui doivent être renseignés dans le PEAC. L'erreur que vous obtenez semble nous indiquer que ce n'est pas le cas.
Vous trouverez ici la documentation relative à la création de cet utilisateur technique: https://tm-fr.doc.squashtest.com/latest ... utomatisee

Lucie
iData
Messages : 3
Inscription : lun. oct. 24, 2022 3:18 pm

Re: Connexion avec GitLab CI

Message par iData »

Bonjour Lucie,

Merci énormément pour la réponse et pour le lien de la doc, c'est parfait :

Code : Tout sélectionner

root@squashtm-pod:/# opentf-ctl run workflow wf.yml --opentfconfig=config --token=${TOKEN} --wait
Workflow a1f231db-c785-4ccd-8ecb-306b283f1796 is running.
Workflow Robot Framework Example
(running in namespace 'default')
[2022-10-25T07:22:24] [job 6bc84520-830a-49f6-a98a-d34f0d933d2a] Running action non-regression
[2022-10-25T07:22:24] [job e6117075-994e-478b-aa9f-526854ed549b] Requesting execution environment providing ['robotframework'] in namespace 'default' for job 'squashTMJob-0'
[2022-10-25T07:22:43] [job e6117075-994e-478b-aa9f-526854ed549b] Cloning into 'intranet'...
[2022-10-25T07:22:43] [job e6117075-994e-478b-aa9f-526854ed549b] warning: redirecting to https://gitlab.com/ramsaysante/intranet.git/
[2022-10-25T07:22:46] [job e6117075-994e-478b-aa9f-526854ed549b] ==============================================================================
[2022-10-25T07:22:46] [job e6117075-994e-478b-aa9f-526854ed549b] 7 Testdr
[2022-10-25T07:22:46] [job e6117075-994e-478b-aa9f-526854ed549b] ==============================================================================
[2022-10-25T07:22:46] [job e6117075-994e-478b-aa9f-526854ed549b] My First Robot Test                                                   Hello Robot World!
[2022-10-25T07:22:46] [job e6117075-994e-478b-aa9f-526854ed549b] | PASS |
[2022-10-25T07:22:46] [job e6117075-994e-478b-aa9f-526854ed549b] ------------------------------------------------------------------------------
[2022-10-25T07:22:46] [job e6117075-994e-478b-aa9f-526854ed549b] 7 Testdr                                                              | PASS |
[2022-10-25T07:22:46] [job e6117075-994e-478b-aa9f-526854ed549b] 1 test, 1 passed, 0 failed
[2022-10-25T07:22:46] [job e6117075-994e-478b-aa9f-526854ed549b] ==============================================================================
[2022-10-25T07:22:46] [job e6117075-994e-478b-aa9f-526854ed549b] Output:  /home/agent/e6117075-994e-478b-aa9f-526854ed549b/output.xml
[2022-10-25T07:22:46] [job e6117075-994e-478b-aa9f-526854ed549b] Log:     /home/agent/e6117075-994e-478b-aa9f-526854ed549b/log.html
[2022-10-25T07:22:46] [job e6117075-994e-478b-aa9f-526854ed549b] Report:  /home/agent/e6117075-994e-478b-aa9f-526854ed549b/report.html
[2022-10-25T07:22:47] [job e6117075-994e-478b-aa9f-526854ed549b] find: ‘browser/screenshot’: No such file or directory
[2022-10-25T07:22:47] [job e6117075-994e-478b-aa9f-526854ed549b] find: ‘browser/screenshot’: No such file or directory
[2022-10-25T07:22:48] [job e6117075-994e-478b-aa9f-526854ed549b] find: ‘browser/screenshot’: No such file or directory
[2022-10-25T07:22:49] [job e6117075-994e-478b-aa9f-526854ed549b] Releasing execution environment for job 'squashTMJob-0'
[2022-10-25T07:22:49] [job e6117075-994e-478b-aa9f-526854ed549b] WARNING,No attachment with Robot reports for Allure or no allure-robotframework in execution host
Workflow completed successfully.
Merci beaucoup.

Excellente journée.

---

DR
Répondre

Revenir à « GitLab CI »