DEV Community

Edgar Rios Navarro
Edgar Rios Navarro

Posted on

Validar paquetes de Oracle con Docker (en un pipeline)

La forma correcta de asegurar que los paquetes de nuesta aplicación, no tengan errores durante el Pase a Producción; es compilarlos anticipadamente en un ambiente Pre-Producción (o UAT).

Pero si lo tenemos que hacer manualmente, existe la posibilidad de obviar algún script o validación.

De manera que, automatizar este paso es crucial en nuestra operación de CI/CD.


Como primer punto, es tener una base de datos inicial. Puede contener solo la estructura de las tablas y con ello reducimos el tamaño del export.

Realizamos el import en una imagen de Docker:

FROM docker.io/gvenzl/oracle-xe:11
Enter fullscreen mode Exit fullscreen mode

Luego, ejecutaremos los scripts (DDL y DML). A continuación, compilaremos todos los paquetes.

De haber paquetes inválidos, el Pipeline fallará. Esa será la forma de validarlos.

Image description

Este es un ejemplo del archivo azure-pipelin.yml:

# Build Docker image for this app, to be published to Docker Registry
pool:
  vmImage: 'ubuntu-latest'
variables:
  buildConfiguration: 'Release'
steps:
- script: |
    git clone https://gitlab.com/edgar.gs/posunificado-docker-oracle11g.git
    cd posunificado-docker-oracle11g
    git checkout 5a9d701c0492841e734ee08dd1de10f6d652578d
- task: CopyFiles@2
  inputs:
    SourceFolder: 'posunificado-docker-oracle11g/DOCKER/init_scripts'
    contents: '**'
    targetFolder: 'fps-app-bd-posunificado/DOCKER/init_scripts'
- task: ExtractFiles@1
  inputs:
    archiveFilePatterns: 'posunificado-docker-oracle11g/DOCKER/PTOVENTA_V1.7.2.DMP.zip'
    destinationFolder: 'fps-app-bd-posunificado'
    cleanDestinationFolder: false
    overwriteExistingFiles: false 
- script: |
    cd fps-app-bd-posunificado
    docker build -f Dockerfile -t ptoventa-build:$BUILD_BUILDID .
    docker run --name ptoventadb ptoventa-build:$BUILD_BUILDID
- script: |
    docker start ptoventadb
    docker cp ptoventadb:/u01/app/oracle/artifacts $(System.DefaultWorkingDirectory)
    docker stop ptoventadb

- task: CopyFiles@2
  inputs:
    contents: '**/*.log'
    targetFolder: $(Build.ArtifactStagingDirectory)
- task: PublishBuildArtifacts@1
  inputs:
    pathToPublish: $(Build.ArtifactStagingDirectory)
    artifactName: MyBuildOutputs
Enter fullscreen mode Exit fullscreen mode

Se puede observar la ejecución en el siguiente video:


Documentación

https://gitlab.com/edgar.gs/posunificado-docker-oracle11g.git
https://hub.docker.com/r/gvenzl/oracle-xe

Top comments (0)