Edgar Rios Navarro
Posted on August 30, 2022
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
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.
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
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
Posted on August 30, 2022
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.