Проверка пакетов Oracle с помощью Docker (в конвейере)

Правильный способ обеспечить отсутствие ошибок в пакетах приложений во время выпуска производственного релиза — это скомпилировать их заранее в среде Pre-Production (или UAT).

Но если нам придется делать это вручную, есть вероятность обойти некоторые скрипты или валидацию.

Таким образом, автоматизация этого шага имеет решающее значение в нашей работе CI/CD.


В качестве первого пункта необходимо иметь начальную базу данных. Он может содержать только структуру таблиц и таким образом уменьшать размер экспорта.

Мы выполняем импорт в образ Docker:

FROM docker.io/gvenzl/oracle-xe:11
Войдите в полноэкранный режим Выход из полноэкранного режима

Затем мы запускаем скрипты (DDL и DML). Далее мы скомпилируем все пакеты.

Если есть недопустимые пакеты, конвейер не выполнится. Это будет способом их подтверждения.

Это пример файла 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
Войдите в полноэкранный режим Выход из полноэкранного режима

Вы можете посмотреть исполнение на следующем видео:


Документация

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

Оцените статью
devanswers.ru
Добавить комментарий