【问题标题】:Automate Flyway migration with Docker and Jenkins使用 Docker 和 Jenkins 自动化 Flyway 迁移
【发布时间】:2019-07-07 04:07:48
【问题描述】:

我想为我们的 MariaDB 数据库自动执行 Flyway 迁移。出于测试目的,我将以下服务添加到我的 docker-compose.yml 仅运行 info 命令。

  flyway:
    image: boxfuse/flyway:5.2.4
    command: -url=jdbc:mariadb://mariadb_service -schemas=$${MYSQL_DATABASE} -table=schema_version -connectRetries=60 info
    volumes:
      - ./db/migration:/flyway/sql
    depends_on:
      - mariadb_service

这似乎有效,即我可以看到info 的输出。

现在我想将这个想法更进一步,并将其集成到我们的 Jenkins 构建管道中。这就是我卡住的地方。

  1. 如果我在我的Jenkinsfile 中部署具有上述docker-compose.yml 的Docker 堆栈,在迁移过程中是否会因错误而导致相应阶段失败?说到这里,詹金斯会注意到这个错误吗?
  2. 如果不是这样,我如何将 Flyway 迁移集成到我的 Jenkins 管道中?我发现有一个 Flyway Runner 插件,但我没有看到它是否可以连接到由Jenkinsfile 部署的 Docker 堆栈中的数据库

【问题讨论】:

    标签: docker jenkins docker-compose flyway


    【解决方案1】:

    您可以使用Jenkins built-in support for Docker。那么你的管道脚本可能包含阶段

    stage('Apply DB changes') {
    
        agent {
            docker {
                image 'boxfuse/flyway:5.2.4'
                args '-v ./db/migration:/flyway/sql --entrypoint=\'\''
            }
        }
    
        steps {
            sh "/flyway/flyway -url=jdbc:mariadb://mariadb_service -schemas=${MYSQL_DATABASE} -table=schema_version -connectRetries=60 info"
        }
    
    }
    

    这样steps 将在Jenkins agentboxfuse/flyway 映像创建的临时Docker 容器中执行。如果命令失败,整个阶段也会失败。

    【讨论】:

      猜你喜欢
      • 2016-06-29
      • 2020-09-26
      • 2020-02-09
      • 2019-08-07
      • 2017-08-13
      • 2019-12-27
      • 2011-11-05
      • 2013-03-03
      • 2015-01-15
      相关资源
      最近更新 更多