Получить недавно зафиксированные SQL-скрипты из репозитория Gitlab и удалить их через Jenkins

#git #jenkins #gitlab #gitlab-ci #gitlab-ci-runner

#git #дженкинс #gitlab #gitlab-ci #gitlab-ci-runner

Вопрос:

Мое требование — извлечь список SQL-скриптов (.sql-файлов) из репозитория git, которые недавно были переданы в репозиторий, и запустить их в базе данных (Oracle) через SQLPLUS через Jenkins или GitLab CI / CD runner. У меня есть Gitlab в качестве контроля версий. Хотя я знаю, что мы можем использовать расширение SQLPLUS в Jenkins, но я не уверен, как я могу получить список зафиксированных SQL-файлов из репозитория Gitlab или как я могу добиться этого в Gitlab CI / CD runner. Может ли кто-нибудь помочь мне с примерами сценариев оболочки, которые могут этого достичь?

Я искал его в Google, но не смог найти никакого определенного ответа.

Спасибо

Ответ №1:

Я бы рекомендовал использовать Gitlab CI/CD runner вместо Jenkins, потому что:

  • Это даст вам доступ к среде по вашему выбору через образ docker.
  • Он хорошо интегрирован с GitLab.
  • Вам не придется git clone использовать свой проект.

Это пример .gitlab-ci.yml того, как начать:

 image: debian:latest

variables:
  DOCKER_DRIVER: overlay2
  DOCKER_HOST: tcp://docker:2375

services:
  - docker:dind

stages:
  - migrate

migrate:
  stage: migrate
  script:
    - find . -type f -name '*.sql'
  only:
    - master # or tags
  tags:
    - docker

  

Я использую docker:dind сервис, потому что мой gitlab ci runner — это контейнер docker, который может запускать docker в своем контейнере docker (dind = docker в docker). Это не является обязательным требованием.

Я бы также посоветовал использовать соответствующие инструменты миграции базы данных. (Например, flyway для вашей Java и т. Д.)