SlideShare una empresa de Scribd logo
Pruebas de integración
con Docker en Azure
DevOps
Rodolfo Ortiz
Pruebas de integración con Docker en Azure DevOps
Agenda
● Revisar conceptos
○ Pruebas de integración
○ Docker
○ Azure DevOps
● Consideraciones
● Detalles de implementación
Meta
Correr las pruebas sobre una base de datos que se crea al iniciar las pruebas, y
que al terminarlas la base de datos se borra.
¿Qué son las pruebas de integración?
Es la fase de pruebas de software en la que módulos individuales de software son
combinados y probados como un grupo.
Controlador => Command/Query (CQRS) => Repositorio => Base de datos
¿Qué es Docker?
Docker es una herramienta diseñada para hacer más fácil la creación, despliegue
(deploy) y ejecución de aplicaciones usando contenedores.
Es como una máquina virtual (VM) pero más ligera. Utiliza virtualización.
Diferencias entre Máquina Virtual y Contenedores
Máquina Virtual Contenedor
Pesadas (en cuanto a recursos) Ligeras
Desempeño limitado Desempeño nativo
Cada MV corre en su propio sistema
operativo
Todos los contenedores comparten el
sistema operativo anfitrión (host OS)
Virtualización a nivel de hardware Virtualización a nivel de software
Pueden requerir minutos para iniciar Inician en milisegundos
Asignan la memoria requerida Requieren menos espacio de memoria
Totalmente aislada y más segura Aislamiento a nivel de proceso,
posiblemente menos seguro
Ejemplo
docker run -it ubuntu
cat /etc/issue
docker run --name my_sqlserver -d -p 15435:1433 -e
"SA_PASSWORD=Password_01" -e "ACCEPT_EULA=Y"
mcr.microsoft.com/mssql/server:2019-latest
Dockerfile
Docker puede crear imágenes automáticamente leyendo las instrucciones de un
archivo llamado Dockerfile. Un archivo Dockerfile es un archivo de texto que
contiene todos los comandos que un usuario podría ejecutar en la línea de
comandos para crear una imagen.
Ejemplo
FROM mcr.microsoft.com/dotnet/core/aspnet:2.1-stretch-slim AS base
WORKDIR /app
EXPOSE 80
WORKDIR /src
RUN dotnet restore "Contoso.Web/Contoso.Web.csproj"
COPY /src/Contoso.Web Contoso.Web/
RUN dotnet build "Contoso.Web.csproj" -c Release -o /app
RUN dotnet publish "Contoso.Web.csproj" -c Release -o /app/publish
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "Contoso.Web.dll"]
¿Qué es Azure DevOps?
Un ambiente de integración continua y despliegue continuo (CI/CD)
Consideraciones de esta implementación
DevOps usa Linux 100% (Ubuntu)
SQL Server es necesario (versión Linux)
Se utiliza Roundhouse (herramienta de migración de base de datos)
Configuración del ambiente en Azure DevOps
¿Cuáles son los pasos necesarios para correr pruebas de integración usando
Docker en Azure DevOps?
1) Crear una imagen en base a un Dockerfile
2) Correr un contenedor con la imagen creada
3) Configurar DevOps para que corra las pruebas de integración
Azure DevOps
Dockerfile image
Dockerfile
Correr SQL Server
Restaurar base de
datos
Correr migraciones
de base de datos
Docker container
SQL Server
Tarea de Azure corre
las pruebas
Compila
docker
build
Corre
docker
run
dotnet
test
Detalles de implementación
docker build -t contoso_sqlserver --file Dockerfile .
docker run --name contoso_sqlserver -d -p 1433:1433 -e
"SA_PASSWORD=Password_01" -e "ACCEPT_EULA=Y" contoso_sqlserver
dotnet test
Revisión del Azure DevOps Pipeline
Atrás de escenas > compilar la imagen
Instalar .NET Core
Instalar SQL Server
Copiar el script para restaurar la base de datos
Copiar el script para instalar roundhouse
Copiar el script para correr las migraciones de base de datos
Atrás de escenas > correr el contenedor
Correr el contenedor exponiendo el puerto 1433
Esperar uno o dos minutos antes de continuar con la restauración de BD
Se ejecutan los siguientes scripts:
● para restaurar la base de datos
● para instalar Roundhouse
● para correr migraciones de base de datos
Atrás de escenas > pruebas de integración
Existen 2 opciones:
● dotnet test
● dotnet vstest
Preguntas
Links
https://dev.azure.com/ortiz-mpr/Contoso/
https://github.com/enriquecatala/mssql-server-samplesdb
Publicidad

Más contenido relacionado

La actualidad más candente (20)

Docker desde cero
Docker desde ceroDocker desde cero
Docker desde cero
Mariano German Egui
 
Kubernetes - #dockerconlima
Kubernetes  - #dockerconlimaKubernetes  - #dockerconlima
Kubernetes - #dockerconlima
Angel Nuñez
 
Docker Ecosystem: Engine, Compose, Machine, Swarm, Registry
Docker Ecosystem: Engine, Compose, Machine, Swarm, RegistryDocker Ecosystem: Engine, Compose, Machine, Swarm, Registry
Docker Ecosystem: Engine, Compose, Machine, Swarm, Registry
Mario IC
 
Docker como la máxima expresión de Devops - WISIT 2015
Docker como la máxima expresión de Devops - WISIT 2015Docker como la máxima expresión de Devops - WISIT 2015
Docker como la máxima expresión de Devops - WISIT 2015
Gustavo Andres Brey
 
Presentación Docker
Presentación DockerPresentación Docker
Presentación Docker
ITPAMI
 
Usando docker
Usando dockerUsando docker
Usando docker
Gustavo Muslera
 
Kubernetes technical overview and our experience at Restorando :: Buenos Aire...
Kubernetes technical overview and our experience at Restorando :: Buenos Aire...Kubernetes technical overview and our experience at Restorando :: Buenos Aire...
Kubernetes technical overview and our experience at Restorando :: Buenos Aire...
Restorando
 
Devops episodio 1. devOpsTnf
Devops episodio 1. devOpsTnf Devops episodio 1. devOpsTnf
Devops episodio 1. devOpsTnf
Erasmo Domínguez Jiménez
 
Docker Ecosystem - Part II - Compose
Docker Ecosystem - Part II - ComposeDocker Ecosystem - Part II - Compose
Docker Ecosystem - Part II - Compose
Mario IC
 
Contenedores como Servicio con Docker
Contenedores como Servicio con DockerContenedores como Servicio con Docker
Contenedores como Servicio con Docker
Fernando Mayo Fernández
 
Presentación Docker
Presentación DockerPresentación Docker
Presentación Docker
Gustavo Muslera
 
Kubernetes 101 - Plain Concepts Dev Day
Kubernetes 101 - Plain Concepts Dev DayKubernetes 101 - Plain Concepts Dev Day
Kubernetes 101 - Plain Concepts Dev Day
Plain Concepts
 
Docker meetup :: Kubernetes en Restorando
Docker meetup :: Kubernetes en RestorandoDocker meetup :: Kubernetes en Restorando
Docker meetup :: Kubernetes en Restorando
Restorando
 
Contenedores, creando infraestructuras homogeneas
Contenedores, creando infraestructuras homogeneasContenedores, creando infraestructuras homogeneas
Contenedores, creando infraestructuras homogeneas
Software Guru
 
Kubernetes para developers
Kubernetes para developersKubernetes para developers
Kubernetes para developers
Jaime Perera Merino
 
Docker Ecosystem - Part I - Engine
Docker Ecosystem - Part I - EngineDocker Ecosystem - Part I - Engine
Docker Ecosystem - Part I - Engine
Mario IC
 
Jenkins Peru Meetup Docker Ecosystem
Jenkins Peru Meetup Docker EcosystemJenkins Peru Meetup Docker Ecosystem
Jenkins Peru Meetup Docker Ecosystem
Mario IC
 
Introducción a Kubernetes
Introducción a KubernetesIntroducción a Kubernetes
Introducción a Kubernetes
Paradigma Digital
 
Introducción a Docker
Introducción a DockerIntroducción a Docker
Introducción a Docker
Nicolás Bello Camilletti
 
Kubernetes 101
Kubernetes   101Kubernetes   101
Kubernetes 101
Paco Ocampo
 
Kubernetes - #dockerconlima
Kubernetes  - #dockerconlimaKubernetes  - #dockerconlima
Kubernetes - #dockerconlima
Angel Nuñez
 
Docker Ecosystem: Engine, Compose, Machine, Swarm, Registry
Docker Ecosystem: Engine, Compose, Machine, Swarm, RegistryDocker Ecosystem: Engine, Compose, Machine, Swarm, Registry
Docker Ecosystem: Engine, Compose, Machine, Swarm, Registry
Mario IC
 
Docker como la máxima expresión de Devops - WISIT 2015
Docker como la máxima expresión de Devops - WISIT 2015Docker como la máxima expresión de Devops - WISIT 2015
Docker como la máxima expresión de Devops - WISIT 2015
Gustavo Andres Brey
 
Presentación Docker
Presentación DockerPresentación Docker
Presentación Docker
ITPAMI
 
Kubernetes technical overview and our experience at Restorando :: Buenos Aire...
Kubernetes technical overview and our experience at Restorando :: Buenos Aire...Kubernetes technical overview and our experience at Restorando :: Buenos Aire...
Kubernetes technical overview and our experience at Restorando :: Buenos Aire...
Restorando
 
Docker Ecosystem - Part II - Compose
Docker Ecosystem - Part II - ComposeDocker Ecosystem - Part II - Compose
Docker Ecosystem - Part II - Compose
Mario IC
 
Kubernetes 101 - Plain Concepts Dev Day
Kubernetes 101 - Plain Concepts Dev DayKubernetes 101 - Plain Concepts Dev Day
Kubernetes 101 - Plain Concepts Dev Day
Plain Concepts
 
Docker meetup :: Kubernetes en Restorando
Docker meetup :: Kubernetes en RestorandoDocker meetup :: Kubernetes en Restorando
Docker meetup :: Kubernetes en Restorando
Restorando
 
Contenedores, creando infraestructuras homogeneas
Contenedores, creando infraestructuras homogeneasContenedores, creando infraestructuras homogeneas
Contenedores, creando infraestructuras homogeneas
Software Guru
 
Docker Ecosystem - Part I - Engine
Docker Ecosystem - Part I - EngineDocker Ecosystem - Part I - Engine
Docker Ecosystem - Part I - Engine
Mario IC
 
Jenkins Peru Meetup Docker Ecosystem
Jenkins Peru Meetup Docker EcosystemJenkins Peru Meetup Docker Ecosystem
Jenkins Peru Meetup Docker Ecosystem
Mario IC
 

Similar a Pruebas de integración con Docker en Azure DevOps (20)

Docker - Entorno de trabajo configurado en 1 minuto [WCBilbao]
Docker - Entorno de trabajo configurado en 1 minuto [WCBilbao]Docker - Entorno de trabajo configurado en 1 minuto [WCBilbao]
Docker - Entorno de trabajo configurado en 1 minuto [WCBilbao]
Keopx
 
Web App Container
Web App ContainerWeb App Container
Web App Container
CDS
 
Corriendo SQL Server en Docker
Corriendo SQL Server en DockerCorriendo SQL Server en Docker
Corriendo SQL Server en Docker
Javier Villegas
 
Microservices: Ya funciona en mi máquina… Y en producción, ¿qué?
Microservices: Ya funciona en mi máquina… Y en producción, ¿qué?Microservices: Ya funciona en mi máquina… Y en producción, ¿qué?
Microservices: Ya funciona en mi máquina… Y en producción, ¿qué?
Plain Concepts
 
Iniciando con containers en azure
Iniciando con containers en azureIniciando con containers en azure
Iniciando con containers en azure
Oscar Gensollen
 
Curso gratuito de Docker
Curso gratuito de DockerCurso gratuito de Docker
Curso gratuito de Docker
Rafael Hernamperez Martin
 
Presentación DevOps CAI - FCE 20242C.pptx
Presentación DevOps CAI - FCE 20242C.pptxPresentación DevOps CAI - FCE 20242C.pptx
Presentación DevOps CAI - FCE 20242C.pptx
nerina31
 
Introduccion a Docker curso para saber como funciona la dockeriazacion -3
Introduccion a Docker curso para saber como funciona la dockeriazacion -3Introduccion a Docker curso para saber como funciona la dockeriazacion -3
Introduccion a Docker curso para saber como funciona la dockeriazacion -3
S
 
Jug málaga docker 101 - final
Jug málaga   docker 101 - finalJug málaga   docker 101 - final
Jug málaga docker 101 - final
Julio Palma Vázquez
 
De desarrollo a producción usando docker
De desarrollo a producción usando dockerDe desarrollo a producción usando docker
De desarrollo a producción usando docker
Christian Rodriguez
 
An evening with... Docker
An evening with... DockerAn evening with... Docker
An evening with... Docker
Arkhotech
 
Dynamics saturday madrid 2018 bc-on-docker - jakub
Dynamics saturday madrid 2018   bc-on-docker - jakubDynamics saturday madrid 2018   bc-on-docker - jakub
Dynamics saturday madrid 2018 bc-on-docker - jakub
Demian Raschkovan
 
Lab3 cristian gastelbondo
Lab3 cristian gastelbondoLab3 cristian gastelbondo
Lab3 cristian gastelbondo
cristiangastelbondoo
 
docker.pdf
docker.pdfdocker.pdf
docker.pdf
AntonyPrez3
 
administracion de sistemas de informacion
administracion de sistemas de informacionadministracion de sistemas de informacion
administracion de sistemas de informacion
StivenLopez46
 
Docker 101 Workshop - WomenWhoCode Buenos Aires
Docker 101 Workshop - WomenWhoCode Buenos AiresDocker 101 Workshop - WomenWhoCode Buenos Aires
Docker 101 Workshop - WomenWhoCode Buenos Aires
Bel Rey
 
DevOps con MS Azure
DevOps con MS AzureDevOps con MS Azure
DevOps con MS Azure
Victor Hugo Villar Valladares
 
Introduccion a SQL Server 2017 en Docker
Introduccion a SQL Server 2017 en Docker Introduccion a SQL Server 2017 en Docker
Introduccion a SQL Server 2017 en Docker
Eduardo Castro
 
Docker 10 02_18
Docker 10 02_18Docker 10 02_18
Docker 10 02_18
enyert
 
Dokerize rails
Dokerize railsDokerize rails
Dokerize rails
Miguel Antonio Savignano Coronado
 
Docker - Entorno de trabajo configurado en 1 minuto [WCBilbao]
Docker - Entorno de trabajo configurado en 1 minuto [WCBilbao]Docker - Entorno de trabajo configurado en 1 minuto [WCBilbao]
Docker - Entorno de trabajo configurado en 1 minuto [WCBilbao]
Keopx
 
Web App Container
Web App ContainerWeb App Container
Web App Container
CDS
 
Corriendo SQL Server en Docker
Corriendo SQL Server en DockerCorriendo SQL Server en Docker
Corriendo SQL Server en Docker
Javier Villegas
 
Microservices: Ya funciona en mi máquina… Y en producción, ¿qué?
Microservices: Ya funciona en mi máquina… Y en producción, ¿qué?Microservices: Ya funciona en mi máquina… Y en producción, ¿qué?
Microservices: Ya funciona en mi máquina… Y en producción, ¿qué?
Plain Concepts
 
Iniciando con containers en azure
Iniciando con containers en azureIniciando con containers en azure
Iniciando con containers en azure
Oscar Gensollen
 
Presentación DevOps CAI - FCE 20242C.pptx
Presentación DevOps CAI - FCE 20242C.pptxPresentación DevOps CAI - FCE 20242C.pptx
Presentación DevOps CAI - FCE 20242C.pptx
nerina31
 
Introduccion a Docker curso para saber como funciona la dockeriazacion -3
Introduccion a Docker curso para saber como funciona la dockeriazacion -3Introduccion a Docker curso para saber como funciona la dockeriazacion -3
Introduccion a Docker curso para saber como funciona la dockeriazacion -3
S
 
De desarrollo a producción usando docker
De desarrollo a producción usando dockerDe desarrollo a producción usando docker
De desarrollo a producción usando docker
Christian Rodriguez
 
An evening with... Docker
An evening with... DockerAn evening with... Docker
An evening with... Docker
Arkhotech
 
Dynamics saturday madrid 2018 bc-on-docker - jakub
Dynamics saturday madrid 2018   bc-on-docker - jakubDynamics saturday madrid 2018   bc-on-docker - jakub
Dynamics saturday madrid 2018 bc-on-docker - jakub
Demian Raschkovan
 
administracion de sistemas de informacion
administracion de sistemas de informacionadministracion de sistemas de informacion
administracion de sistemas de informacion
StivenLopez46
 
Docker 101 Workshop - WomenWhoCode Buenos Aires
Docker 101 Workshop - WomenWhoCode Buenos AiresDocker 101 Workshop - WomenWhoCode Buenos Aires
Docker 101 Workshop - WomenWhoCode Buenos Aires
Bel Rey
 
Introduccion a SQL Server 2017 en Docker
Introduccion a SQL Server 2017 en Docker Introduccion a SQL Server 2017 en Docker
Introduccion a SQL Server 2017 en Docker
Eduardo Castro
 
Docker 10 02_18
Docker 10 02_18Docker 10 02_18
Docker 10 02_18
enyert
 
Publicidad

Más de Software Guru (20)

Hola Mundo del Internet de las Cosas
Hola Mundo del Internet de las CosasHola Mundo del Internet de las Cosas
Hola Mundo del Internet de las Cosas
Software Guru
 
Estructuras de datos avanzadas: Casos de uso reales
Estructuras de datos avanzadas: Casos de uso realesEstructuras de datos avanzadas: Casos de uso reales
Estructuras de datos avanzadas: Casos de uso reales
Software Guru
 
Building bias-aware environments
Building bias-aware environmentsBuilding bias-aware environments
Building bias-aware environments
Software Guru
 
El secreto para ser un desarrollador Senior
El secreto para ser un desarrollador SeniorEl secreto para ser un desarrollador Senior
El secreto para ser un desarrollador Senior
Software Guru
 
Cómo encontrar el trabajo remoto ideal
Cómo encontrar el trabajo remoto idealCómo encontrar el trabajo remoto ideal
Cómo encontrar el trabajo remoto ideal
Software Guru
 
Automatizando ideas con Apache Airflow
Automatizando ideas con Apache AirflowAutomatizando ideas con Apache Airflow
Automatizando ideas con Apache Airflow
Software Guru
 
How thick data can improve big data analysis for business:
How thick data can improve big data analysis for business:How thick data can improve big data analysis for business:
How thick data can improve big data analysis for business:
Software Guru
 
Introducción al machine learning
Introducción al machine learningIntroducción al machine learning
Introducción al machine learning
Software Guru
 
Democratizando el uso de CoDi
Democratizando el uso de CoDiDemocratizando el uso de CoDi
Democratizando el uso de CoDi
Software Guru
 
Gestionando la felicidad de los equipos con Management 3.0
Gestionando la felicidad de los equipos con Management 3.0Gestionando la felicidad de los equipos con Management 3.0
Gestionando la felicidad de los equipos con Management 3.0
Software Guru
 
Taller: Creación de Componentes Web re-usables con StencilJS
Taller: Creación de Componentes Web re-usables con StencilJSTaller: Creación de Componentes Web re-usables con StencilJS
Taller: Creación de Componentes Web re-usables con StencilJS
Software Guru
 
El camino del full stack developer (o como hacemos en SERTI para que no solo ...
El camino del full stack developer (o como hacemos en SERTI para que no solo ...El camino del full stack developer (o como hacemos en SERTI para que no solo ...
El camino del full stack developer (o como hacemos en SERTI para que no solo ...
Software Guru
 
¿Qué significa ser un programador en Bitso?
¿Qué significa ser un programador en Bitso?¿Qué significa ser un programador en Bitso?
¿Qué significa ser un programador en Bitso?
Software Guru
 
Colaboración efectiva entre desarrolladores del cliente y tu equipo.
Colaboración efectiva entre desarrolladores del cliente y tu equipo.Colaboración efectiva entre desarrolladores del cliente y tu equipo.
Colaboración efectiva entre desarrolladores del cliente y tu equipo.
Software Guru
 
Elixir + Elm: Usando lenguajes funcionales en servicios productivos
Elixir + Elm: Usando lenguajes funcionales en servicios productivosElixir + Elm: Usando lenguajes funcionales en servicios productivos
Elixir + Elm: Usando lenguajes funcionales en servicios productivos
Software Guru
 
Así publicamos las apps de Spotify sin stress
Así publicamos las apps de Spotify sin stressAsí publicamos las apps de Spotify sin stress
Así publicamos las apps de Spotify sin stress
Software Guru
 
Achieving Your Goals: 5 Tips to successfully achieve your goals
Achieving Your Goals: 5 Tips to successfully achieve your goalsAchieving Your Goals: 5 Tips to successfully achieve your goals
Achieving Your Goals: 5 Tips to successfully achieve your goals
Software Guru
 
Acciones de comunidades tech en tiempos del Covid19
Acciones de comunidades tech en tiempos del Covid19Acciones de comunidades tech en tiempos del Covid19
Acciones de comunidades tech en tiempos del Covid19
Software Guru
 
De lo operativo a lo estratégico: un modelo de management de diseño
De lo operativo a lo estratégico: un modelo de management de diseñoDe lo operativo a lo estratégico: un modelo de management de diseño
De lo operativo a lo estratégico: un modelo de management de diseño
Software Guru
 
La importancia de crear User Personas y Escenarios
La importancia de crear User Personas y EscenariosLa importancia de crear User Personas y Escenarios
La importancia de crear User Personas y Escenarios
Software Guru
 
Hola Mundo del Internet de las Cosas
Hola Mundo del Internet de las CosasHola Mundo del Internet de las Cosas
Hola Mundo del Internet de las Cosas
Software Guru
 
Estructuras de datos avanzadas: Casos de uso reales
Estructuras de datos avanzadas: Casos de uso realesEstructuras de datos avanzadas: Casos de uso reales
Estructuras de datos avanzadas: Casos de uso reales
Software Guru
 
Building bias-aware environments
Building bias-aware environmentsBuilding bias-aware environments
Building bias-aware environments
Software Guru
 
El secreto para ser un desarrollador Senior
El secreto para ser un desarrollador SeniorEl secreto para ser un desarrollador Senior
El secreto para ser un desarrollador Senior
Software Guru
 
Cómo encontrar el trabajo remoto ideal
Cómo encontrar el trabajo remoto idealCómo encontrar el trabajo remoto ideal
Cómo encontrar el trabajo remoto ideal
Software Guru
 
Automatizando ideas con Apache Airflow
Automatizando ideas con Apache AirflowAutomatizando ideas con Apache Airflow
Automatizando ideas con Apache Airflow
Software Guru
 
How thick data can improve big data analysis for business:
How thick data can improve big data analysis for business:How thick data can improve big data analysis for business:
How thick data can improve big data analysis for business:
Software Guru
 
Introducción al machine learning
Introducción al machine learningIntroducción al machine learning
Introducción al machine learning
Software Guru
 
Democratizando el uso de CoDi
Democratizando el uso de CoDiDemocratizando el uso de CoDi
Democratizando el uso de CoDi
Software Guru
 
Gestionando la felicidad de los equipos con Management 3.0
Gestionando la felicidad de los equipos con Management 3.0Gestionando la felicidad de los equipos con Management 3.0
Gestionando la felicidad de los equipos con Management 3.0
Software Guru
 
Taller: Creación de Componentes Web re-usables con StencilJS
Taller: Creación de Componentes Web re-usables con StencilJSTaller: Creación de Componentes Web re-usables con StencilJS
Taller: Creación de Componentes Web re-usables con StencilJS
Software Guru
 
El camino del full stack developer (o como hacemos en SERTI para que no solo ...
El camino del full stack developer (o como hacemos en SERTI para que no solo ...El camino del full stack developer (o como hacemos en SERTI para que no solo ...
El camino del full stack developer (o como hacemos en SERTI para que no solo ...
Software Guru
 
¿Qué significa ser un programador en Bitso?
¿Qué significa ser un programador en Bitso?¿Qué significa ser un programador en Bitso?
¿Qué significa ser un programador en Bitso?
Software Guru
 
Colaboración efectiva entre desarrolladores del cliente y tu equipo.
Colaboración efectiva entre desarrolladores del cliente y tu equipo.Colaboración efectiva entre desarrolladores del cliente y tu equipo.
Colaboración efectiva entre desarrolladores del cliente y tu equipo.
Software Guru
 
Elixir + Elm: Usando lenguajes funcionales en servicios productivos
Elixir + Elm: Usando lenguajes funcionales en servicios productivosElixir + Elm: Usando lenguajes funcionales en servicios productivos
Elixir + Elm: Usando lenguajes funcionales en servicios productivos
Software Guru
 
Así publicamos las apps de Spotify sin stress
Así publicamos las apps de Spotify sin stressAsí publicamos las apps de Spotify sin stress
Así publicamos las apps de Spotify sin stress
Software Guru
 
Achieving Your Goals: 5 Tips to successfully achieve your goals
Achieving Your Goals: 5 Tips to successfully achieve your goalsAchieving Your Goals: 5 Tips to successfully achieve your goals
Achieving Your Goals: 5 Tips to successfully achieve your goals
Software Guru
 
Acciones de comunidades tech en tiempos del Covid19
Acciones de comunidades tech en tiempos del Covid19Acciones de comunidades tech en tiempos del Covid19
Acciones de comunidades tech en tiempos del Covid19
Software Guru
 
De lo operativo a lo estratégico: un modelo de management de diseño
De lo operativo a lo estratégico: un modelo de management de diseñoDe lo operativo a lo estratégico: un modelo de management de diseño
De lo operativo a lo estratégico: un modelo de management de diseño
Software Guru
 
La importancia de crear User Personas y Escenarios
La importancia de crear User Personas y EscenariosLa importancia de crear User Personas y Escenarios
La importancia de crear User Personas y Escenarios
Software Guru
 
Publicidad

Último (20)

MÓDULO I. (conceptos generales de higiene ocupacional)
MÓDULO I. (conceptos generales de higiene ocupacional)MÓDULO I. (conceptos generales de higiene ocupacional)
MÓDULO I. (conceptos generales de higiene ocupacional)
AimeeCoronel2
 
Registro ABA instrutivo para su instalacion
Registro ABA instrutivo para su instalacionRegistro ABA instrutivo para su instalacion
Registro ABA instrutivo para su instalacion
bomeza
 
EDICIÓN DE VIDEO. CLASE DE TICS II. UNIREU
EDICIÓN DE VIDEO. CLASE DE TICS II. UNIREUEDICIÓN DE VIDEO. CLASE DE TICS II. UNIREU
EDICIÓN DE VIDEO. CLASE DE TICS II. UNIREU
AndrsCastro58
 
Presentación de Héctor Orruño para Xeno Visual Studies II
Presentación de Héctor Orruño para Xeno Visual Studies IIPresentación de Héctor Orruño para Xeno Visual Studies II
Presentación de Héctor Orruño para Xeno Visual Studies II
hectororruno
 
taller 5 ciberseguridad habilidades digitales
taller 5 ciberseguridad habilidades digitalestaller 5 ciberseguridad habilidades digitales
taller 5 ciberseguridad habilidades digitales
juancardenaslosada
 
listado lideres funcionales para la formacion del coimite de riesgos.pptx
listado lideres funcionales para la formacion del coimite de riesgos.pptxlistado lideres funcionales para la formacion del coimite de riesgos.pptx
listado lideres funcionales para la formacion del coimite de riesgos.pptx
hirsoporteti
 
Tema 04Cuidados de Enfermería al neonato con trastornos metabólicos (1).pdf
Tema 04Cuidados de Enfermería al neonato con trastornos metabólicos  (1).pdfTema 04Cuidados de Enfermería al neonato con trastornos metabólicos  (1).pdf
Tema 04Cuidados de Enfermería al neonato con trastornos metabólicos (1).pdf
MARIAMALENATORRESDIA
 
presentacion-baterias-y-acumuladores-redox.pptx
presentacion-baterias-y-acumuladores-redox.pptxpresentacion-baterias-y-acumuladores-redox.pptx
presentacion-baterias-y-acumuladores-redox.pptx
CharlesBergeyre1
 
StacksTecnológicosInformaciónPresentación.pdf
StacksTecnológicosInformaciónPresentación.pdfStacksTecnológicosInformaciónPresentación.pdf
StacksTecnológicosInformaciónPresentación.pdf
SamuelMancebo2
 
Diseño de una red de comunicaciones en una vivienda.pptx
Diseño de una red de comunicaciones en una vivienda.pptxDiseño de una red de comunicaciones en una vivienda.pptx
Diseño de una red de comunicaciones en una vivienda.pptx
dvdgrcbd
 
SISTEMAS OPERATIVOS, LA MAGIA DE LA TECNOLOGIA
SISTEMAS OPERATIVOS, LA MAGIA DE LA TECNOLOGIASISTEMAS OPERATIVOS, LA MAGIA DE LA TECNOLOGIA
SISTEMAS OPERATIVOS, LA MAGIA DE LA TECNOLOGIA
IVAN CAMPUZANO
 
Habilidades digitales Taller Ciberseguridad
Habilidades digitales Taller CiberseguridadHabilidades digitales Taller Ciberseguridad
Habilidades digitales Taller Ciberseguridad
juandavidmahechafier
 
Redes industriales yde instrumentacion.pptx
Redes industriales yde instrumentacion.pptxRedes industriales yde instrumentacion.pptx
Redes industriales yde instrumentacion.pptx
TeresitaXalapa
 
SeguridadCookiesInformacionLegalPresentación.pdf
SeguridadCookiesInformacionLegalPresentación.pdfSeguridadCookiesInformacionLegalPresentación.pdf
SeguridadCookiesInformacionLegalPresentación.pdf
SamuelMancebo2
 
HABILIDADES DIGITALES - CIBERSEGURIDAD.pdf
HABILIDADES DIGITALES - CIBERSEGURIDAD.pdfHABILIDADES DIGITALES - CIBERSEGURIDAD.pdf
HABILIDADES DIGITALES - CIBERSEGURIDAD.pdf
jairocaviedes1
 
ciberseguridad habilidades Digitales.pdf
ciberseguridad habilidades Digitales.pdfciberseguridad habilidades Digitales.pdf
ciberseguridad habilidades Digitales.pdf
dayanacampos31
 
Plataforma Virtual E-Learning MOODLE.pdf
Plataforma Virtual E-Learning MOODLE.pdfPlataforma Virtual E-Learning MOODLE.pdf
Plataforma Virtual E-Learning MOODLE.pdf
GINGER YULISA ZAMBRANO NOBOA
 
presentacion-baterias-y-acumuladores-redox.pptx
presentacion-baterias-y-acumuladores-redox.pptxpresentacion-baterias-y-acumuladores-redox.pptx
presentacion-baterias-y-acumuladores-redox.pptx
CharlesBergeyre1
 
Riesgos Ergonómicos y Riesgos Psicosociales
Riesgos Ergonómicos y Riesgos PsicosocialesRiesgos Ergonómicos y Riesgos Psicosociales
Riesgos Ergonómicos y Riesgos Psicosociales
AimeeCoronel2
 
Presentación Proyecto de las Primeras Civilizaciones Mesopotamia – Egipto – ...
Presentación Proyecto de las Primeras Civilizaciones  Mesopotamia – Egipto – ...Presentación Proyecto de las Primeras Civilizaciones  Mesopotamia – Egipto – ...
Presentación Proyecto de las Primeras Civilizaciones Mesopotamia – Egipto – ...
DiosymarSuarez
 
MÓDULO I. (conceptos generales de higiene ocupacional)
MÓDULO I. (conceptos generales de higiene ocupacional)MÓDULO I. (conceptos generales de higiene ocupacional)
MÓDULO I. (conceptos generales de higiene ocupacional)
AimeeCoronel2
 
Registro ABA instrutivo para su instalacion
Registro ABA instrutivo para su instalacionRegistro ABA instrutivo para su instalacion
Registro ABA instrutivo para su instalacion
bomeza
 
EDICIÓN DE VIDEO. CLASE DE TICS II. UNIREU
EDICIÓN DE VIDEO. CLASE DE TICS II. UNIREUEDICIÓN DE VIDEO. CLASE DE TICS II. UNIREU
EDICIÓN DE VIDEO. CLASE DE TICS II. UNIREU
AndrsCastro58
 
Presentación de Héctor Orruño para Xeno Visual Studies II
Presentación de Héctor Orruño para Xeno Visual Studies IIPresentación de Héctor Orruño para Xeno Visual Studies II
Presentación de Héctor Orruño para Xeno Visual Studies II
hectororruno
 
taller 5 ciberseguridad habilidades digitales
taller 5 ciberseguridad habilidades digitalestaller 5 ciberseguridad habilidades digitales
taller 5 ciberseguridad habilidades digitales
juancardenaslosada
 
listado lideres funcionales para la formacion del coimite de riesgos.pptx
listado lideres funcionales para la formacion del coimite de riesgos.pptxlistado lideres funcionales para la formacion del coimite de riesgos.pptx
listado lideres funcionales para la formacion del coimite de riesgos.pptx
hirsoporteti
 
Tema 04Cuidados de Enfermería al neonato con trastornos metabólicos (1).pdf
Tema 04Cuidados de Enfermería al neonato con trastornos metabólicos  (1).pdfTema 04Cuidados de Enfermería al neonato con trastornos metabólicos  (1).pdf
Tema 04Cuidados de Enfermería al neonato con trastornos metabólicos (1).pdf
MARIAMALENATORRESDIA
 
presentacion-baterias-y-acumuladores-redox.pptx
presentacion-baterias-y-acumuladores-redox.pptxpresentacion-baterias-y-acumuladores-redox.pptx
presentacion-baterias-y-acumuladores-redox.pptx
CharlesBergeyre1
 
StacksTecnológicosInformaciónPresentación.pdf
StacksTecnológicosInformaciónPresentación.pdfStacksTecnológicosInformaciónPresentación.pdf
StacksTecnológicosInformaciónPresentación.pdf
SamuelMancebo2
 
Diseño de una red de comunicaciones en una vivienda.pptx
Diseño de una red de comunicaciones en una vivienda.pptxDiseño de una red de comunicaciones en una vivienda.pptx
Diseño de una red de comunicaciones en una vivienda.pptx
dvdgrcbd
 
SISTEMAS OPERATIVOS, LA MAGIA DE LA TECNOLOGIA
SISTEMAS OPERATIVOS, LA MAGIA DE LA TECNOLOGIASISTEMAS OPERATIVOS, LA MAGIA DE LA TECNOLOGIA
SISTEMAS OPERATIVOS, LA MAGIA DE LA TECNOLOGIA
IVAN CAMPUZANO
 
Habilidades digitales Taller Ciberseguridad
Habilidades digitales Taller CiberseguridadHabilidades digitales Taller Ciberseguridad
Habilidades digitales Taller Ciberseguridad
juandavidmahechafier
 
Redes industriales yde instrumentacion.pptx
Redes industriales yde instrumentacion.pptxRedes industriales yde instrumentacion.pptx
Redes industriales yde instrumentacion.pptx
TeresitaXalapa
 
SeguridadCookiesInformacionLegalPresentación.pdf
SeguridadCookiesInformacionLegalPresentación.pdfSeguridadCookiesInformacionLegalPresentación.pdf
SeguridadCookiesInformacionLegalPresentación.pdf
SamuelMancebo2
 
HABILIDADES DIGITALES - CIBERSEGURIDAD.pdf
HABILIDADES DIGITALES - CIBERSEGURIDAD.pdfHABILIDADES DIGITALES - CIBERSEGURIDAD.pdf
HABILIDADES DIGITALES - CIBERSEGURIDAD.pdf
jairocaviedes1
 
ciberseguridad habilidades Digitales.pdf
ciberseguridad habilidades Digitales.pdfciberseguridad habilidades Digitales.pdf
ciberseguridad habilidades Digitales.pdf
dayanacampos31
 
presentacion-baterias-y-acumuladores-redox.pptx
presentacion-baterias-y-acumuladores-redox.pptxpresentacion-baterias-y-acumuladores-redox.pptx
presentacion-baterias-y-acumuladores-redox.pptx
CharlesBergeyre1
 
Riesgos Ergonómicos y Riesgos Psicosociales
Riesgos Ergonómicos y Riesgos PsicosocialesRiesgos Ergonómicos y Riesgos Psicosociales
Riesgos Ergonómicos y Riesgos Psicosociales
AimeeCoronel2
 
Presentación Proyecto de las Primeras Civilizaciones Mesopotamia – Egipto – ...
Presentación Proyecto de las Primeras Civilizaciones  Mesopotamia – Egipto – ...Presentación Proyecto de las Primeras Civilizaciones  Mesopotamia – Egipto – ...
Presentación Proyecto de las Primeras Civilizaciones Mesopotamia – Egipto – ...
DiosymarSuarez
 

Pruebas de integración con Docker en Azure DevOps

  • 1. Pruebas de integración con Docker en Azure DevOps Rodolfo Ortiz
  • 3. Agenda ● Revisar conceptos ○ Pruebas de integración ○ Docker ○ Azure DevOps ● Consideraciones ● Detalles de implementación
  • 4. Meta Correr las pruebas sobre una base de datos que se crea al iniciar las pruebas, y que al terminarlas la base de datos se borra.
  • 5. ¿Qué son las pruebas de integración? Es la fase de pruebas de software en la que módulos individuales de software son combinados y probados como un grupo. Controlador => Command/Query (CQRS) => Repositorio => Base de datos
  • 6. ¿Qué es Docker? Docker es una herramienta diseñada para hacer más fácil la creación, despliegue (deploy) y ejecución de aplicaciones usando contenedores. Es como una máquina virtual (VM) pero más ligera. Utiliza virtualización.
  • 7. Diferencias entre Máquina Virtual y Contenedores Máquina Virtual Contenedor Pesadas (en cuanto a recursos) Ligeras Desempeño limitado Desempeño nativo Cada MV corre en su propio sistema operativo Todos los contenedores comparten el sistema operativo anfitrión (host OS) Virtualización a nivel de hardware Virtualización a nivel de software Pueden requerir minutos para iniciar Inician en milisegundos Asignan la memoria requerida Requieren menos espacio de memoria Totalmente aislada y más segura Aislamiento a nivel de proceso, posiblemente menos seguro
  • 8. Ejemplo docker run -it ubuntu cat /etc/issue docker run --name my_sqlserver -d -p 15435:1433 -e "SA_PASSWORD=Password_01" -e "ACCEPT_EULA=Y" mcr.microsoft.com/mssql/server:2019-latest
  • 9. Dockerfile Docker puede crear imágenes automáticamente leyendo las instrucciones de un archivo llamado Dockerfile. Un archivo Dockerfile es un archivo de texto que contiene todos los comandos que un usuario podría ejecutar en la línea de comandos para crear una imagen.
  • 10. Ejemplo FROM mcr.microsoft.com/dotnet/core/aspnet:2.1-stretch-slim AS base WORKDIR /app EXPOSE 80 WORKDIR /src RUN dotnet restore "Contoso.Web/Contoso.Web.csproj" COPY /src/Contoso.Web Contoso.Web/ RUN dotnet build "Contoso.Web.csproj" -c Release -o /app RUN dotnet publish "Contoso.Web.csproj" -c Release -o /app/publish WORKDIR /app COPY --from=publish /app/publish . ENTRYPOINT ["dotnet", "Contoso.Web.dll"]
  • 11. ¿Qué es Azure DevOps? Un ambiente de integración continua y despliegue continuo (CI/CD)
  • 12. Consideraciones de esta implementación DevOps usa Linux 100% (Ubuntu) SQL Server es necesario (versión Linux) Se utiliza Roundhouse (herramienta de migración de base de datos)
  • 13. Configuración del ambiente en Azure DevOps ¿Cuáles son los pasos necesarios para correr pruebas de integración usando Docker en Azure DevOps? 1) Crear una imagen en base a un Dockerfile 2) Correr un contenedor con la imagen creada 3) Configurar DevOps para que corra las pruebas de integración
  • 14. Azure DevOps Dockerfile image Dockerfile Correr SQL Server Restaurar base de datos Correr migraciones de base de datos Docker container SQL Server Tarea de Azure corre las pruebas Compila docker build Corre docker run dotnet test
  • 15. Detalles de implementación docker build -t contoso_sqlserver --file Dockerfile . docker run --name contoso_sqlserver -d -p 1433:1433 -e "SA_PASSWORD=Password_01" -e "ACCEPT_EULA=Y" contoso_sqlserver dotnet test
  • 16. Revisión del Azure DevOps Pipeline
  • 17. Atrás de escenas > compilar la imagen Instalar .NET Core Instalar SQL Server Copiar el script para restaurar la base de datos Copiar el script para instalar roundhouse Copiar el script para correr las migraciones de base de datos
  • 18. Atrás de escenas > correr el contenedor Correr el contenedor exponiendo el puerto 1433 Esperar uno o dos minutos antes de continuar con la restauración de BD Se ejecutan los siguientes scripts: ● para restaurar la base de datos ● para instalar Roundhouse ● para correr migraciones de base de datos
  • 19. Atrás de escenas > pruebas de integración Existen 2 opciones: ● dotnet test ● dotnet vstest