SlideShare ist ein Scribd-Unternehmen logo
1 von 21
Pruebas de integración
con Docker en Azure
DevOps
Rodolfo Ortiz
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

Weitere ähnliche Inhalte

Was ist angesagt?

Kubernetes - #dockerconlima
Kubernetes  - #dockerconlimaKubernetes  - #dockerconlima
Kubernetes - #dockerconlimaAngel 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, RegistryMario 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 2015Gustavo Andres Brey
 
Presentación Docker
Presentación DockerPresentación Docker
Presentación DockerITPAMI
 
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 - ComposeMario IC
 
Kubernetes 101 - Plain Concepts Dev Day
Kubernetes 101 - Plain Concepts Dev DayKubernetes 101 - Plain Concepts Dev Day
Kubernetes 101 - Plain Concepts Dev DayPlain Concepts
 
Docker meetup :: Kubernetes en Restorando
Docker meetup :: Kubernetes en RestorandoDocker meetup :: Kubernetes en Restorando
Docker meetup :: Kubernetes en RestorandoRestorando
 
Contenedores, creando infraestructuras homogeneas
Contenedores, creando infraestructuras homogeneasContenedores, creando infraestructuras homogeneas
Contenedores, creando infraestructuras homogeneasSoftware Guru
 
Docker Ecosystem - Part I - Engine
Docker Ecosystem - Part I - EngineDocker Ecosystem - Part I - Engine
Docker Ecosystem - Part I - EngineMario IC
 
Jenkins Peru Meetup Docker Ecosystem
Jenkins Peru Meetup Docker EcosystemJenkins Peru Meetup Docker Ecosystem
Jenkins Peru Meetup Docker EcosystemMario IC
 

Was ist angesagt? (20)

Docker desde cero
Docker desde ceroDocker desde cero
Docker desde cero
 
Kubernetes - #dockerconlima
Kubernetes  - #dockerconlimaKubernetes  - #dockerconlima
Kubernetes - #dockerconlima
 
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
 
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
 
Presentación Docker
Presentación DockerPresentación Docker
Presentación Docker
 
Usando docker
Usando dockerUsando docker
Usando docker
 
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...
 
Devops episodio 1. devOpsTnf
Devops episodio 1. devOpsTnf Devops episodio 1. devOpsTnf
Devops episodio 1. devOpsTnf
 
Docker Ecosystem - Part II - Compose
Docker Ecosystem - Part II - ComposeDocker Ecosystem - Part II - Compose
Docker Ecosystem - Part II - Compose
 
Contenedores como Servicio con Docker
Contenedores como Servicio con DockerContenedores como Servicio con Docker
Contenedores como Servicio con Docker
 
Presentación Docker
Presentación DockerPresentación Docker
Presentación Docker
 
Kubernetes 101 - Plain Concepts Dev Day
Kubernetes 101 - Plain Concepts Dev DayKubernetes 101 - Plain Concepts Dev Day
Kubernetes 101 - Plain Concepts Dev Day
 
Docker meetup :: Kubernetes en Restorando
Docker meetup :: Kubernetes en RestorandoDocker meetup :: Kubernetes en Restorando
Docker meetup :: Kubernetes en Restorando
 
Contenedores, creando infraestructuras homogeneas
Contenedores, creando infraestructuras homogeneasContenedores, creando infraestructuras homogeneas
Contenedores, creando infraestructuras homogeneas
 
Kubernetes para developers
Kubernetes para developersKubernetes para developers
Kubernetes para developers
 
Docker Ecosystem - Part I - Engine
Docker Ecosystem - Part I - EngineDocker Ecosystem - Part I - Engine
Docker Ecosystem - Part I - Engine
 
Jenkins Peru Meetup Docker Ecosystem
Jenkins Peru Meetup Docker EcosystemJenkins Peru Meetup Docker Ecosystem
Jenkins Peru Meetup Docker Ecosystem
 
Introducción a Kubernetes
Introducción a KubernetesIntroducción a Kubernetes
Introducción a Kubernetes
 
Introducción a Docker
Introducción a DockerIntroducción a Docker
Introducción a Docker
 
Kubernetes 101
Kubernetes   101Kubernetes   101
Kubernetes 101
 

Ähnlich wie Pruebas de integración con Docker en Azure DevOps

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 ContainerCDS
 
Corriendo SQL Server en Docker
Corriendo SQL Server en DockerCorriendo SQL Server en Docker
Corriendo SQL Server en DockerJavier 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 azureOscar Gensollen
 
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 dockerChristian Rodriguez
 
An evening with... Docker
An evening with... DockerAn evening with... Docker
An evening with... DockerArkhotech
 
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 - jakubDemian Raschkovan
 
administracion de sistemas de informacion
administracion de sistemas de informacionadministracion de sistemas de informacion
administracion de sistemas de informacionStivenLopez46
 
Docker 101 Workshop - WomenWhoCode Buenos Aires
Docker 101 Workshop - WomenWhoCode Buenos AiresDocker 101 Workshop - WomenWhoCode Buenos Aires
Docker 101 Workshop - WomenWhoCode Buenos AiresBel 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_18enyert
 
Instalacion y uso basico de Docker.
Instalacion y uso basico de Docker.Instalacion y uso basico de Docker.
Instalacion y uso basico de Docker.Moisés Elías Araya
 

Ähnlich wie 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]
 
Web App Container
Web App ContainerWeb App Container
Web App Container
 
Corriendo SQL Server en Docker
Corriendo SQL Server en DockerCorriendo SQL Server en Docker
Corriendo SQL Server en Docker
 
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é?
 
Iniciando con containers en azure
Iniciando con containers en azureIniciando con containers en azure
Iniciando con containers en azure
 
Curso gratuito de Docker
Curso gratuito de DockerCurso gratuito de Docker
Curso gratuito de Docker
 
Jug málaga docker 101 - final
Jug málaga   docker 101 - finalJug málaga   docker 101 - final
Jug málaga docker 101 - final
 
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
 
An evening with... Docker
An evening with... DockerAn evening with... Docker
An evening with... Docker
 
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
 
Lab3 cristian gastelbondo
Lab3 cristian gastelbondoLab3 cristian gastelbondo
Lab3 cristian gastelbondo
 
docker.pdf
docker.pdfdocker.pdf
docker.pdf
 
administracion de sistemas de informacion
administracion de sistemas de informacionadministracion de sistemas de informacion
administracion de sistemas de informacion
 
Docker 101 Workshop - WomenWhoCode Buenos Aires
Docker 101 Workshop - WomenWhoCode Buenos AiresDocker 101 Workshop - WomenWhoCode Buenos Aires
Docker 101 Workshop - WomenWhoCode Buenos Aires
 
DevOps con MS Azure
DevOps con MS AzureDevOps con MS Azure
DevOps con MS Azure
 
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
 
Docker 10 02_18
Docker 10 02_18Docker 10 02_18
Docker 10 02_18
 
Dokerize rails
Dokerize railsDokerize rails
Dokerize rails
 
Azure DevOps y Blazor Web Assembly
Azure DevOps y Blazor Web AssemblyAzure DevOps y Blazor Web Assembly
Azure DevOps y Blazor Web Assembly
 
Instalacion y uso basico de Docker.
Instalacion y uso basico de Docker.Instalacion y uso basico de Docker.
Instalacion y uso basico de Docker.
 

Mehr von 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 CosasSoftware 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 realesSoftware Guru
 
Building bias-aware environments
Building bias-aware environmentsBuilding bias-aware environments
Building bias-aware environmentsSoftware 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 SeniorSoftware 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 idealSoftware Guru
 
Automatizando ideas con Apache Airflow
Automatizando ideas con Apache AirflowAutomatizando ideas con Apache Airflow
Automatizando ideas con Apache AirflowSoftware 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 learningSoftware Guru
 
Democratizando el uso de CoDi
Democratizando el uso de CoDiDemocratizando el uso de CoDi
Democratizando el uso de CoDiSoftware 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.0Software 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 StencilJSSoftware 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 productivosSoftware 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 stressSoftware 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 goalsSoftware 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 Covid19Software 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ñoSoftware 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 EscenariosSoftware Guru
 

Mehr von 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
 
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
 
Building bias-aware environments
Building bias-aware environmentsBuilding bias-aware environments
Building bias-aware environments
 
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
 
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
 
Automatizando ideas con Apache Airflow
Automatizando ideas con Apache AirflowAutomatizando ideas con Apache Airflow
Automatizando ideas con Apache Airflow
 
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:
 
Introducción al machine learning
Introducción al machine learningIntroducción al machine learning
Introducción al machine learning
 
Democratizando el uso de CoDi
Democratizando el uso de CoDiDemocratizando el uso de CoDi
Democratizando el uso de CoDi
 
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
 
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
 
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 ...
 
¿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?
 
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.
 
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
 
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
 
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
 
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
 
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
 
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
 

Kürzlich hochgeladen

Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfvladimiroflores1
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxAlan779941
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfAnnimoUno1
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxMiguelAtencio10
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estossgonzalezp1
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21mariacbr99
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...JohnRamos830530
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanamcerpam
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.FlorenciaCattelani
 

Kürzlich hochgeladen (11)

Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 

Pruebas de integración con Docker en Azure DevOps

  • 1. Pruebas de integración con Docker en Azure DevOps Rodolfo Ortiz
  • 2.
  • 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