Diferencia entre revisiones de «Gestión de incidencias y integración continua completa»
| Línea 15: | Línea 15: | ||
//Quizás sea necesario instalar ruby-dev $ sudo apt install ruby-dev | //Quizás sea necesario instalar ruby-dev $ sudo apt install ruby-dev | ||
$ gem install travis -v 1.8.10 --no-rdoc --no-ri | $ gem install travis -v 1.8.10 --no-rdoc --no-ri | ||
| + | </source> | ||
| + | |||
| + | Comenzando preparando las pruebas y el despliegue | ||
| + | ---------- | ||
| + | |||
| + | 1) Actualizamos el fichero requirements para permitir el despliegue y la correcta ejecución de las pruebas | ||
| + | |||
| + | <source> | ||
| + | Django==2.0 | ||
| + | django-heroku | ||
| + | gunicorn | ||
| + | pycryptodome==3.6.6 | ||
| + | djangorestframework==3.7.7 | ||
| + | django-cors-headers==2.1.0 | ||
| + | requests==2.18.4 | ||
| + | django-filter==1.1.0 | ||
| + | psycopg2==2.8.4 | ||
| + | django-rest-swagger==2.2.0 | ||
| + | coverage==4.5.2 | ||
| + | django-nose==1.4.6 | ||
| + | jsonnet==0.12.1 | ||
| + | </source> | ||
| + | |||
| + | 2) Creamos un fichero para guardar los valores del settings para travis (i.e $git$/decide/travis_local_settings.py) | ||
| + | <source> | ||
| + | ALLOWED_HOSTS = ["*"] | ||
| + | |||
| + | # Modules in use, commented modules that you won't use | ||
| + | MODULES = [ | ||
| + | 'authentication', | ||
| + | 'base', | ||
| + | 'booth', | ||
| + | 'census', | ||
| + | 'mixnet', | ||
| + | 'postproc', | ||
| + | 'store', | ||
| + | 'visualizer', | ||
| + | 'voting', | ||
| + | ] | ||
| + | |||
| + | APIS = { | ||
| + | 'authentication': 'http://localhost:8000', | ||
| + | 'base': 'http://localhost:8000', | ||
| + | 'booth': 'http://localhost:8000', | ||
| + | 'census': 'http://localhost:8000', | ||
| + | 'mixnet': 'http://localhost:8000', | ||
| + | 'postproc': 'http://localhost:8000', | ||
| + | 'store': 'http://localhost:8000', | ||
| + | 'visualizer': 'http://localhost:8000', | ||
| + | 'voting': 'http://localhost:8000', | ||
| + | } | ||
| + | |||
| + | BASEURL = 'http://localhost:8000' | ||
| + | |||
| + | DATABASES = { | ||
| + | 'default': { | ||
| + | 'ENGINE': 'django.db.backends.postgresql', | ||
| + | 'NAME': 'decide', | ||
| + | 'USER': 'decide', | ||
| + | 'HOST': 'localhost', | ||
| + | 'PORT': '5432', | ||
| + | } | ||
| + | } | ||
| + | |||
| + | # number of bits for the key, all auths should use the same number of bits | ||
| + | KEYBITS = 256 | ||
| + | </source> | ||
| + | |||
| + | 3) Introducimos los cambios pertinentes en el fichero decide/decide/settings.py para establecer los valores por defecto de la configuración de despliegue en Heroku. | ||
| + | <source> | ||
| + | import os | ||
| + | import django_heroku | ||
| + | ... | ||
| + | BASEURL = 'http://heroku-meet-travis.herokuapp.com' | ||
| + | |||
| + | APIS = { | ||
| + | 'authentication': BASEURL, | ||
| + | 'base': BASEURL, | ||
| + | 'booth': BASEURL, | ||
| + | 'census': BASEURL, | ||
| + | 'mixnet': BASEURL, | ||
| + | 'postproc': BASEURL, | ||
| + | 'store': BASEURL, | ||
| + | 'visualizer': BASEURL, | ||
| + | 'voting': BASEURL, | ||
| + | } | ||
| + | |||
| + | ... | ||
| + | DATABASES = { | ||
| + | 'default': { | ||
| + | 'ENGINE': 'django.db.backends.postgresql', | ||
| + | 'NAME': 'decide', | ||
| + | 'USER': 'decide', | ||
| + | 'PASSWORD': 'decide', | ||
| + | 'HOST': 'localhost', | ||
| + | 'PORT': '5432', | ||
| + | } | ||
| + | } | ||
| + | ... | ||
| + | INSTALLED_APPS = INSTALLED_APPS + MODULES | ||
| + | django_heroku.settings(locals()) | ||
| + | </source> | ||
</source> | </source> | ||
Revisión del 16:14 1 dic 2019
En esta práctica recrearemos un despliegue completo en el cual una vez realicemos commit a nuestro repositorio Github, Travis se encargará de ejecutar las pruebas y en caso de que pase las pruebas el mismo se encargará de desplegar la versión commiteada a Heroku.
Para la realización de esta práctica es recomendable haber realizado con anterioridad las prácticas de automatización de pruebas y de despliegue en Heroku.
Para comenzar la práctica necesitamos instalar en nuestra mmáquina tanto Heroku CLI como travis CLI
Instalando Heroku
$ sudo snap install --classic herokuInstalando Travis CLI
//Quizás sea necesario instalar ruby-dev $ sudo apt install ruby-dev
$ gem install travis -v 1.8.10 --no-rdoc --no-riComenzando preparando las pruebas y el despliegue
1) Actualizamos el fichero requirements para permitir el despliegue y la correcta ejecución de las pruebas
Django==2.0
django-heroku
gunicorn
pycryptodome==3.6.6
djangorestframework==3.7.7
django-cors-headers==2.1.0
requests==2.18.4
django-filter==1.1.0
psycopg2==2.8.4
django-rest-swagger==2.2.0
coverage==4.5.2
django-nose==1.4.6
jsonnet==0.12.12) Creamos un fichero para guardar los valores del settings para travis (i.e $git$/decide/travis_local_settings.py)
ALLOWED_HOSTS = ["*"]
# Modules in use, commented modules that you won't use
MODULES = [
'authentication',
'base',
'booth',
'census',
'mixnet',
'postproc',
'store',
'visualizer',
'voting',
]
APIS = {
'authentication': 'http://localhost:8000',
'base': 'http://localhost:8000',
'booth': 'http://localhost:8000',
'census': 'http://localhost:8000',
'mixnet': 'http://localhost:8000',
'postproc': 'http://localhost:8000',
'store': 'http://localhost:8000',
'visualizer': 'http://localhost:8000',
'voting': 'http://localhost:8000',
}
BASEURL = 'http://localhost:8000'
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'decide',
'USER': 'decide',
'HOST': 'localhost',
'PORT': '5432',
}
}
# number of bits for the key, all auths should use the same number of bits
KEYBITS = 2563) Introducimos los cambios pertinentes en el fichero decide/decide/settings.py para establecer los valores por defecto de la configuración de despliegue en Heroku.
import os
import django_heroku
...
BASEURL = 'http://heroku-meet-travis.herokuapp.com'
APIS = {
'authentication': BASEURL,
'base': BASEURL,
'booth': BASEURL,
'census': BASEURL,
'mixnet': BASEURL,
'postproc': BASEURL,
'store': BASEURL,
'visualizer': BASEURL,
'voting': BASEURL,
}
...
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'decide',
'USER': 'decide',
'PASSWORD': 'decide',
'HOST': 'localhost',
'PORT': '5432',
}
}
...
INSTALLED_APPS = INSTALLED_APPS + MODULES
django_heroku.settings(locals())</source>