Gitlab + liqubase - PullRequest
       21

Gitlab + liqubase

1 голос
/ 27 января 2020

Вопрос очень простой Каков наилучший способ выполнить миграцию ликвидазы в конвейерах gitlab

то, что у меня есть, но кажется, что службы gitlab немедленно выполняют docker run и docker для запуска уже требуются параметры миграции БД

image: docker:19.03.1
stages:
  - build
  - db-migration
  - deploy
services:
  - docker:19.03.1-dind
  - liquibase/liquibase:latest
variables:
  DOCKER_TLS_CERTDIR: "/certs"
  AWS_ACCESS_KEY_ID: $AWS_ACCESS_KEY_ID
  AWS_SECRET_ACCESS_KEY: $AWS_SECRET_ACCESS_KEY
  AWS_IMAGE_PATH: $AWS_ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com

before_script:
  - apk add --update python python-dev py-pip
  - pip install awscli --upgrade
  - $(aws ecr get-login --no-include-email --region $AWS_REGION | tr -d '\r')

build:
  stage: build
  script:
    - docker build --tag $AWS_IMAGE_PATH/$CI_PROJECT_NAME:$CI_COMMIT_SHA --tag $AWS_IMAGE_PATH/$CI_PROJECT_NAME:latest .
    - docker push $AWS_IMAGE_PATH/$CI_PROJECT_NAME:$CI_COMMIT_SHA
    - docker push $AWS_IMAGE_PATH/$CI_PROJECT_NAME:latest

db-migration:
  stage: db-migration
  script:
    - liquibase --changeLogFile=/src/main/resources/db/changelog/psql/changelog.yaml
        --url="jdbc:postgresql://host:5432/db"
        --username username --password $DB_PASSWORD update
deploy:
  stage: deploy
  script:
    - echo "Deployed"

1 Ответ

0 голосов
/ 01 февраля 2020
db-migration:
  image: openjdk:8-jre-alpine
  stage: db-migration
  script:
    - INIT_PATH=`pwd`
    - apk add bash
    - mkdir /liquibase
    - mkdir /Downloads
    - cd /Downloads
    - wget "https://github.com/liquibase/liquibase/releases/download/liquibase-parent-3.7.0/liquibase-3.7.0-bin.zip"
    - wget "https://repo1.maven.org/maven2/org/postgresql/postgresql/42.2.8/postgresql-42.2.8.jar"
    - unzip liquibase-3.7.0-bin.zip -d /liquibase -q
    - mv postgresql-42.2.8.jar /liquibase/lib/
    - export PATH=$PATH:/liquibase
    - liquibase --changeLogFile=$INIT_PATH/src/main/resources/db/changelog/psql/changelog.yaml
        --url="jdbc:postgresql://host:port/db"
        --username username --password $DB_PASSWORD update
  only:
    - master
...