bytes.cat

La wiki d'FP d'informàtica

Eines de l'usuari

Eines del lloc


jenkins_django

Diferències

Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.

Enllaç a la visualització de la comparació

Ambdós costats versió prèvia Revisió prèvia
Següent revisió
Revisió prèvia
jenkins_django [2021/09/21 09:15]
enrique_mieza_sanchez [Provar tests amb GUI]
jenkins_django [2022/01/17 08:21] (actual)
enrique_mieza_sanchez [CI/CD amb Jenkins, Django i Selenium]
Línia 1: Línia 1:
- 
 ====== CI/CD amb Jenkins, Django i Selenium ====== ====== CI/CD amb Jenkins, Django i Selenium ======
  
Línia 12: Línia 11:
 {{selenium-logo.png}} {{selenium-logo.png}}
  
-{{tag> #Ciber #CiberMp03 #Asix #DawMp08 DevOps CI CD CI/CD Jenkins Django Selenium }}+{{tag> #FpInfor #Ciber #CiberMp03 #Ceti #CetiMp03 #Asix #DawMp08 DevOps CI CD CI/CD Jenkins Django Selenium }}
  
  
Línia 28: Línia 27:
   # A l'insti vigileu de no col·lisionar les IP amb els vostres companys   # A l'insti vigileu de no col·lisionar les IP amb els vostres companys
   config.vm.network "public_network", ip: "192.168.1.221"   config.vm.network "public_network", ip: "192.168.1.221"
 +  # També podem accedir per localhost:8080  
 +  config.vm.network "forwarded_port", guest: 8080, host: 8080
 +  # Configurem mes paràmetres
   config.vm.provider "virtualbox" do |vb|   config.vm.provider "virtualbox" do |vb|
     vb.name = "jenkinshost"     vb.name = "jenkinshost"
Línia 37: Línia 39:
 </file> </file>
  
 +\\
  
 ===== Instal·lar Jenkins ===== ===== Instal·lar Jenkins =====
Línia 60: Línia 63:
   $ tar xf geckodriver-v0.30.0-linux64.tar.gz   $ tar xf geckodriver-v0.30.0-linux64.tar.gz
   $ sudo cp geckodriver /bin   $ sudo cp geckodriver /bin
 +
 +\\
 +
 ===== Projecte Django ===== ===== Projecte Django =====
 Provarem els tests implementats al [[https://github.com/aws2/BorsaDeTreball/|projecte de Borsa de Treball fet a l'institut Esteve Terradas de Cornellà]]. Provarem els tests implementats al [[https://github.com/aws2/BorsaDeTreball/|projecte de Borsa de Treball fet a l'institut Esteve Terradas de Cornellà]].
  
-Abans caldrà que configurem la base de dades i les dependències necessàries per treballar amb Python:+Abans caldrà que configurem la base de dades i les dependències necessàries per treballar amb Python.
  
-  $ sudo apt install git python3-virtualenv mysql-server+Si estàs en Ubuntu: 
 +  $ sudo apt install git python3-venv mysql-server
  
 +Si utilitzes Debian:
 +  $ sudo apt install git python3-venv mariadb-server
  
 ==== Configurar la BD ==== ==== Configurar la BD ====
Línia 90: Línia 99:
   $ git clone https://github.com/aws2/BorsaDeTreball.git   $ git clone https://github.com/aws2/BorsaDeTreball.git
   $ cd BorsaDeTreball   $ cd BorsaDeTreball
-  $ virtualenv env         # també es pot fer pyhton3 -m venv env+  $ python3 -m venv env
   $ source env/bin/activate   $ source env/bin/activate
   (env)$ pip install -U pip   (env)$ pip install -U pip
Línia 119: Línia 128:
  
 Quan el test està correcte s'ens mostra un punt ".", mentre que si és erroni ens apareix una "E" juntament amb el motiu de l'error. Quan el test està correcte s'ens mostra un punt ".", mentre que si és erroni ens apareix una "E" juntament amb el motiu de l'error.
 +
 +=== Troubleshooting ===
 +Si us apareix algun d'aquests errors:
 +  selenium.common.exceptions.WebDriverException: Message: Failed to decode response from marionette
 +  selenium.common.exceptions.InvalidSessionIdException: Message: Tried to run command without establishing a connection
 +  selenium.common.exceptions.NoSuchWindowException: Message: Browsing context has been discarded
 +  selenium.common.exceptions.WebDriverException: Message: Failed to convert data to an object
 +
 +En [[https://stackoverflow.com/questions/49734915/failed-to-decode-response-from-marionette-message-in-python-firefox-headless-s|aquest article de Stackoverflow]] s'indica que augmentant la RAM de la màquina de test fins a 2GB soluciona el problema.
 +
 +
 +Si apareixen errors de desenvolupament (s'ha introduït un error a la branca ''dev''), hauria de ser mes segur canviar a la branca de producció i provar de nou:
 +  $ git chechout pro
 +  $ python manage.py test
  
  
Línia 125: Línia 148:
   #firefoxOptions.set_headless()   #firefoxOptions.set_headless()
  
-Per poder fer aquest pas necessitareu una màquina amb GUI o bé connectar-nos a la VM habilitant un túnel per les X-windows:+Per poder fer aquest pas necessitareu una màquina amb GUI o bé disposar de, com a mínim el paquet ''xorg'',connectar-nos a la VM habilitant un túnel per les X-windows
 + 
 +A la VM: 
 +  $ sudo apt install xorg 
 +  $ exit 
 + 
 +Des de la màquina //host//:
   $ ssh user@maquina -X   $ ssh user@maquina -X
  
 O si esteu utilitzant Vagrant: O si esteu utilitzant Vagrant:
-  $ vagrant ssh -- X+  $ vagrant ssh -- -X
      
 Testejeu abans si podeu arrencar el firefox: Testejeu abans si podeu arrencar el firefox:
Línia 136: Línia 165:
 Això pot ser interessant per depurar alguns problemes i per curiositat de veure com funciona el WebDriver de Selenium. Això pot ser interessant per depurar alguns problemes i per curiositat de veure com funciona el WebDriver de Selenium.
  
 +\\
  
-==== Automatitzar Jenkins ====+===== Automatitzar Jenkins =====
 Si ens funcionen els tests en la màquina via //shell//, ara podrem automatitzar la seva execució amb Jenkins. Si ens funcionen els tests en la màquina via //shell//, ara podrem automatitzar la seva execució amb Jenkins.
  
Línia 153: Línia 183:
   * Secció ''Build -> Add Build Step -> Execute Shell'' i afegim el codi shell:   * Secció ''Build -> Add Build Step -> Execute Shell'' i afegim el codi shell:
 <code bash> <code bash>
-virtualenv env+python -m venv env
 . env/bin/activate . env/bin/activate
 +pip install -U pip
 pip install -r requirements.txt pip install -r requirements.txt
 head -n -3 BorsaDeTreball/.env.example > BorsaDeTreball/.env head -n -3 BorsaDeTreball/.env.example > BorsaDeTreball/.env
jenkins_django.1632215755.txt.gz · Darrera modificació: 2021/09/21 09:15 per enrique_mieza_sanchez