Diferencia entre revisiones de «Gestión de incidencias y integración continua completa»

De Wiki de EGC
Saltar a: navegación, buscar
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 heroku

Instalando Travis CLI

//Quizás sea necesario instalar ruby-dev $ sudo apt install ruby-dev
$ gem install travis -v 1.8.10 --no-rdoc --no-ri

Comenzando 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.1

2) 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 = 256

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.

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>