Как сделать резервную копию flyway postgres DB в Gitlab CICD - PullRequest
0 голосов
/ 19 февраля 2020

Моя цель состоит в том, чтобы создать схему postgres с использованием миграции с миграционного пути и создать резервную копию всей базы данных с помощью Gitlab CICD. У меня проблема с доступом к интерфейсу командной строки postgres. Ниже мой .gitlab-ci.yml код

variables:
  POSTGRES_DB: postgres
  POSTGRES_USER: postgres
  POSTGRES_PASSWORD: "postgres"

migrate:
  image: java:8
  services:
    - postgres:latest
  script:
    - ./gradlew flywayMigrate
    - export PGPASSWORD=$POSTGRES_PASSWORD
    - psql -h "postgres" -U "$POSTGRES_USER" -d "$POSTGRES_DB" -c "select * from test";  // Not Working

Я знаю, что Postgres будет работать в отдельном контейнере. Но я хочу получить доступ к БД, чтобы взять Backup. Итак, я попробовал с этапами, у меня есть два этапа, называемые миграцией и резервным копированием. Этап миграции содержит миграцию с образа java, а этап Резервное копирование содержит резервную копию psql с изображением Postgres. Таким образом, два этапа не зависят друг от друга, поэтому переносите и резервная копия не синхронизируется c вместе.

Так что я решил следующий подход, который работает отлично.

migrations:
  image:
    name: boxfuse/flyway:5.2-alpine
    entrypoint: [""]
  before_script:
    - echo "flyway.url=jdbc:postgresql://postgres:5432/" >> ${HOME}/flyway.conf
    - echo "flyway.user=${POSTGRES_USER}" >> ${HOME}/flyway.conf
    - echo "flyway.password=${POSTGRES_PASSWORD}" >> ${HOME}/flyway.conf
    - echo "flyway.schemas=${POSTGRES_DB}" >> ${HOME}/flyway.conf
    - apk update
    - apk add postgresql-client
  script: 
    - flyway migrate
    - PGPASSWORD=$POSTGRES_PASSWORD psql -h "postgres" -U "$POSTGRES_USER" -d "$POSTGRES_DB" -c "select * from test";
  services:
    - postgres:latest
  variables:
    POSTGRES_DB: postgres
    POSTGRES_USER: postgres
    POSTGRES_PASSWORD: "postgres"

Но я хочу знать, как это сделать с первым подходом?

...