Pruebas de integración con Docker en Azure DevOps

Software Guru
Software GuruSoftware Guru
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
1 de 21

Recomendados

Integracion y Entrega Continua con Docker para SQL Server por
Integracion y Entrega Continua con Docker para SQL ServerIntegracion y Entrega Continua con Docker para SQL Server
Integracion y Entrega Continua con Docker para SQL ServerChristian Melendez
347 vistas23 diapositivas
Introduction to docker. Stratio por
Introduction to docker. StratioIntroduction to docker. Stratio
Introduction to docker. StratioJavier Cortejoso de Andrés
982 vistas31 diapositivas
Docker introducción - Flisol 2015 Huancayo por
Docker introducción - Flisol 2015 HuancayoDocker introducción - Flisol 2015 Huancayo
Docker introducción - Flisol 2015 HuancayoMario IC
2K vistas34 diapositivas
Introducción a Docker por
Introducción a DockerIntroducción a Docker
Introducción a DockerOscar Javier Gentilezza Arenas
166 vistas27 diapositivas
BEEVA | Introducción a Docker por
BEEVA | Introducción a DockerBEEVA | Introducción a Docker
BEEVA | Introducción a DockerBEEVA_es
1.4K vistas38 diapositivas
Docker containers-itb-2021 por
Docker containers-itb-2021Docker containers-itb-2021
Docker containers-itb-2021JaimeRamirez212673
138 vistas14 diapositivas

Más contenido relacionado

La actualidad más candente

Docker desde cero por
Docker desde ceroDocker desde cero
Docker desde ceroMariano German Egui
722 vistas24 diapositivas
Kubernetes - #dockerconlima por
Kubernetes  - #dockerconlimaKubernetes  - #dockerconlima
Kubernetes - #dockerconlimaAngel Nuñez
770 vistas19 diapositivas
Docker Ecosystem: Engine, Compose, Machine, Swarm, Registry por
Docker Ecosystem: Engine, Compose, Machine, Swarm, RegistryDocker Ecosystem: Engine, Compose, Machine, Swarm, Registry
Docker Ecosystem: Engine, Compose, Machine, Swarm, RegistryMario IC
1.8K vistas44 diapositivas
Docker como la máxima expresión de Devops - WISIT 2015 por
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
1.2K vistas24 diapositivas
Presentación Docker por
Presentación DockerPresentación Docker
Presentación DockerITPAMI
791 vistas19 diapositivas
Usando docker por
Usando dockerUsando docker
Usando dockerGustavo Muslera
1.3K vistas27 diapositivas

La actualidad más candente(20)

Kubernetes - #dockerconlima por Angel Nuñez
Kubernetes  - #dockerconlimaKubernetes  - #dockerconlima
Kubernetes - #dockerconlima
Angel Nuñez770 vistas
Docker Ecosystem: Engine, Compose, Machine, Swarm, Registry por Mario IC
Docker Ecosystem: Engine, Compose, Machine, Swarm, RegistryDocker Ecosystem: Engine, Compose, Machine, Swarm, Registry
Docker Ecosystem: Engine, Compose, Machine, Swarm, Registry
Mario IC1.8K vistas
Docker como la máxima expresión de Devops - WISIT 2015 por Gustavo Andres Brey
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 Brey1.2K vistas
Presentación Docker por ITPAMI
Presentación DockerPresentación Docker
Presentación Docker
ITPAMI 791 vistas
Kubernetes technical overview and our experience at Restorando :: Buenos Aire... por Restorando
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...
Restorando531 vistas
Docker Ecosystem - Part II - Compose por Mario IC
Docker Ecosystem - Part II - ComposeDocker Ecosystem - Part II - Compose
Docker Ecosystem - Part II - Compose
Mario IC654 vistas
Kubernetes 101 - Plain Concepts Dev Day por Plain Concepts
Kubernetes 101 - Plain Concepts Dev DayKubernetes 101 - Plain Concepts Dev Day
Kubernetes 101 - Plain Concepts Dev Day
Plain Concepts164 vistas
Docker meetup :: Kubernetes en Restorando por Restorando
Docker meetup :: Kubernetes en RestorandoDocker meetup :: Kubernetes en Restorando
Docker meetup :: Kubernetes en Restorando
Restorando447 vistas
Contenedores, creando infraestructuras homogeneas por Software Guru
Contenedores, creando infraestructuras homogeneasContenedores, creando infraestructuras homogeneas
Contenedores, creando infraestructuras homogeneas
Software Guru602 vistas
Docker Ecosystem - Part I - Engine por Mario IC
Docker Ecosystem - Part I - EngineDocker Ecosystem - Part I - Engine
Docker Ecosystem - Part I - Engine
Mario IC339 vistas
Jenkins Peru Meetup Docker Ecosystem por Mario IC
Jenkins Peru Meetup Docker EcosystemJenkins Peru Meetup Docker Ecosystem
Jenkins Peru Meetup Docker Ecosystem
Mario IC974 vistas

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

Docker - Entorno de trabajo configurado en 1 minuto [WCBilbao] por
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
1.8K vistas50 diapositivas
Web App Container por
Web App ContainerWeb App Container
Web App ContainerCDS
284 vistas21 diapositivas
Corriendo SQL Server en Docker por
Corriendo SQL Server en DockerCorriendo SQL Server en Docker
Corriendo SQL Server en DockerJavier Villegas
204 vistas48 diapositivas
Microservices: Ya funciona en mi máquina… Y en producción, ¿qué? por
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
228 vistas25 diapositivas
Iniciando con containers en azure por
Iniciando con containers en azureIniciando con containers en azure
Iniciando con containers en azureOscar Gensollen
331 vistas33 diapositivas
Curso gratuito de Docker por
Curso gratuito de DockerCurso gratuito de Docker
Curso gratuito de DockerRafael Hernamperez Martin
368 vistas90 diapositivas

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

Docker - Entorno de trabajo configurado en 1 minuto [WCBilbao] por Keopx
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 1.8K vistas
Web App Container por CDS
Web App ContainerWeb App Container
Web App Container
CDS284 vistas
Microservices: Ya funciona en mi máquina… Y en producción, ¿qué? por Plain Concepts
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 Concepts228 vistas
Iniciando con containers en azure por Oscar Gensollen
Iniciando con containers en azureIniciando con containers en azure
Iniciando con containers en azure
Oscar Gensollen331 vistas
An evening with... Docker por Arkhotech
An evening with... DockerAn evening with... Docker
An evening with... Docker
Arkhotech583 vistas
Dynamics saturday madrid 2018 bc-on-docker - jakub por Demian Raschkovan
Dynamics saturday madrid 2018   bc-on-docker - jakubDynamics saturday madrid 2018   bc-on-docker - jakub
Dynamics saturday madrid 2018 bc-on-docker - jakub
Demian Raschkovan139 vistas
Docker 101 Workshop - WomenWhoCode Buenos Aires por Bel Rey
Docker 101 Workshop - WomenWhoCode Buenos AiresDocker 101 Workshop - WomenWhoCode Buenos Aires
Docker 101 Workshop - WomenWhoCode Buenos Aires
Bel Rey488 vistas
Introduccion a SQL Server 2017 en Docker por Eduardo Castro
Introduccion a SQL Server 2017 en Docker Introduccion a SQL Server 2017 en Docker
Introduccion a SQL Server 2017 en Docker
Eduardo Castro1.2K vistas
Docker 10 02_18 por enyert
Docker 10 02_18Docker 10 02_18
Docker 10 02_18
enyert258 vistas
ReConnect 2015 - ASP.NET 5: MVC 6 y EF 7 por Luis Ruiz Pavón
ReConnect 2015  - ASP.NET 5: MVC 6 y EF 7ReConnect 2015  - ASP.NET 5: MVC 6 y EF 7
ReConnect 2015 - ASP.NET 5: MVC 6 y EF 7
Luis Ruiz Pavón961 vistas

Más de Software Guru

Hola Mundo del Internet de las Cosas por
Hola Mundo del Internet de las CosasHola Mundo del Internet de las Cosas
Hola Mundo del Internet de las CosasSoftware Guru
999 vistas19 diapositivas
Estructuras de datos avanzadas: Casos de uso reales por
Estructuras de datos avanzadas: Casos de uso realesEstructuras de datos avanzadas: Casos de uso reales
Estructuras de datos avanzadas: Casos de uso realesSoftware Guru
377 vistas44 diapositivas
Building bias-aware environments por
Building bias-aware environmentsBuilding bias-aware environments
Building bias-aware environmentsSoftware Guru
120 vistas61 diapositivas
El secreto para ser un desarrollador Senior por
El secreto para ser un desarrollador SeniorEl secreto para ser un desarrollador Senior
El secreto para ser un desarrollador SeniorSoftware Guru
199 vistas29 diapositivas
Cómo encontrar el trabajo remoto ideal por
Cómo encontrar el trabajo remoto idealCómo encontrar el trabajo remoto ideal
Cómo encontrar el trabajo remoto idealSoftware Guru
126 vistas74 diapositivas
Automatizando ideas con Apache Airflow por
Automatizando ideas con Apache AirflowAutomatizando ideas con Apache Airflow
Automatizando ideas con Apache AirflowSoftware Guru
348 vistas25 diapositivas

Más de Software Guru(20)

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

Último

Google alternativo, para volar por
Google alternativo, para volarGoogle alternativo, para volar
Google alternativo, para volarcorpbracat
8 vistas1 diapositiva
electricidadyelectrnica1-230404014355-1be10cf7.docx por
electricidadyelectrnica1-230404014355-1be10cf7.docxelectricidadyelectrnica1-230404014355-1be10cf7.docx
electricidadyelectrnica1-230404014355-1be10cf7.docxNyobeMahechaDvila
18 vistas17 diapositivas
Taller de Electricidad y Electrónica.docx por
Taller de Electricidad y Electrónica.docxTaller de Electricidad y Electrónica.docx
Taller de Electricidad y Electrónica.docxFranksamuel11
7 vistas15 diapositivas
Trabajo de tecnologia.docx por
Trabajo de tecnologia.docxTrabajo de tecnologia.docx
Trabajo de tecnologia.docxLauraCamilaMuozRamos
8 vistas4 diapositivas
Excel avanzado.pdf por
Excel avanzado.pdfExcel avanzado.pdf
Excel avanzado.pdfNyobeMahechaDvila
46 vistas22 diapositivas
Excel avanzado (1) (1).pdf por
Excel avanzado (1) (1).pdfExcel avanzado (1) (1).pdf
Excel avanzado (1) (1).pdfKagomeHigurashi11
6 vistas7 diapositivas

Último(20)

Google alternativo, para volar por corpbracat
Google alternativo, para volarGoogle alternativo, para volar
Google alternativo, para volar
corpbracat8 vistas
electricidadyelectrnica1-230404014355-1be10cf7.docx por NyobeMahechaDvila
electricidadyelectrnica1-230404014355-1be10cf7.docxelectricidadyelectrnica1-230404014355-1be10cf7.docx
electricidadyelectrnica1-230404014355-1be10cf7.docx
NyobeMahechaDvila18 vistas
Taller de Electricidad y Electrónica.docx por Franksamuel11
Taller de Electricidad y Electrónica.docxTaller de Electricidad y Electrónica.docx
Taller de Electricidad y Electrónica.docx
Franksamuel117 vistas
MakeCode por Coffe9
MakeCodeMakeCode
MakeCode
Coffe96 vistas
Fundamentos De Electricidad y Electrónica equipo 5.pdf por CamilaCordoba30
Fundamentos De Electricidad y Electrónica equipo 5.pdfFundamentos De Electricidad y Electrónica equipo 5.pdf
Fundamentos De Electricidad y Electrónica equipo 5.pdf
CamilaCordoba3015 vistas
¡Planificando para el éxito! Usando los Planners de Semantic Kernel para real... por codertectura
¡Planificando para el éxito! Usando los Planners de Semantic Kernel para real...¡Planificando para el éxito! Usando los Planners de Semantic Kernel para real...
¡Planificando para el éxito! Usando los Planners de Semantic Kernel para real...
codertectura56 vistas
tecnologaeinformtica-231124115719-3a836080.pdf por MaraJos722801
tecnologaeinformtica-231124115719-3a836080.pdftecnologaeinformtica-231124115719-3a836080.pdf
tecnologaeinformtica-231124115719-3a836080.pdf
MaraJos72280110 vistas
PROYECTOS 3ER PERIODO Sofia Collazos Santos.pdf por SaMu554
PROYECTOS 3ER PERIODO Sofia Collazos Santos.pdfPROYECTOS 3ER PERIODO Sofia Collazos Santos.pdf
PROYECTOS 3ER PERIODO Sofia Collazos Santos.pdf
SaMu55410 vistas
Basura electronica.docx por MissPotato2
Basura electronica.docxBasura electronica.docx
Basura electronica.docx
MissPotato28 vistas
Probando aplicaciones basadas en LLMs.pdf por Federico Toledo
Probando aplicaciones basadas en LLMs.pdfProbando aplicaciones basadas en LLMs.pdf
Probando aplicaciones basadas en LLMs.pdf
Federico Toledo44 vistas
Tarea Práctica web de la sesión 14.pptx por illanlir
Tarea Práctica web de la sesión 14.pptxTarea Práctica web de la sesión 14.pptx
Tarea Práctica web de la sesión 14.pptx
illanlir7 vistas
Rol de la ciencia y tecnología en la dinámica social.pdf por wilfredomarmolteran
Rol de la ciencia y tecnología en la dinámica social.pdfRol de la ciencia y tecnología en la dinámica social.pdf
Rol de la ciencia y tecnología en la dinámica social.pdf

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