【问题标题】:Flyway with Jenkins - Unable to resolve locationFlyway with Jenkins - 无法解析位置
【发布时间】:2019-06-16 23:10:10
【问题描述】:

我正在尝试通过在其中一个阶段运行 shell 命令将 db 迁移与 ci/cd 管道中的Flyway 集成。 (由于我不允许向管道添加任何新插件,所以不能使用 Flyway 插件)

我试过这样:

    stage('migrate-sql') {
      steps {
        sh """
          docker run --rm \
          -v /GetShorty/Apis/Sql:/flyway/sql \
          boxfuse/flyway:5.2.4 \
          -url=jdbc:postgresql://****:5432/**** \
          -user=**** \
          -password=**** \
          -baselineOnMigrate=false \
          -locations=/GetShorty/Apis/Sql \
          -connectRetries=60 \
          migrate
        """
      }
    }

但没有应用迁移,因为它似乎找不到迁移文件夹

WARNING: Unable to resolve location /GetShorty/Apis/Sql

Successfully validated 0 migrations (execution time 00:00.378s)

Current version of schema "public": << Empty Schema >>

Schema "public" is up to date. No migration necessary.

考虑如下投影结构:

知道这里可能出了什么问题吗?

【问题讨论】:

    标签: jenkins flyway


    【解决方案1】:

    docker 卷设置正在将主机上的/GetShorty/Apis/Sql 目录挂载到容器内的/flyway/sql 目录:

    -v /GetShorty/Apis/Sql:/flyway/sql
    

    Flyway 在容器内运行,因此位置标志需要是里面的目录:

    -locations=/flyway/sql
    

    【讨论】:

    • 我一整天都意识到了这个问题,并且已经做出了改变。奇怪的是,如果我在本地运行 docker 命令,它会应用迁移,但如果它是通过 jenkins 运行的,则不会
    【解决方案2】:

    偶然发现这个issue 我意识到我面临着类似的问题。

    我设法解决它的方法是在名为flyway 的根项目中创建一个单独的文件夹,其中包含一个包含所有迁移的sql 文件夹和以下Dockerfile

    FROM boxfuse/flyway:5.2.4
    
    COPY ./sql ./sql
    

    回到 jenkins 文件,我添加了一个新步骤来构建 docker 映像:

      DOCKER_IMAGE_FLYWAY = "flyway"
    
      stages {
        stage('build docker images') {
          steps {
            script {
              dockerImage_flyway = docker.build("$DOCKER_REGISTRY/${DOCKER_PROJECT}/${DOCKER_IMAGE_FLYWAY}:${env.BUILD_NUMBER}", "flyway")
            }
          }
        }
    

    并修改迁移阶段以使用该图像

    stage('migrate-sql') {
          steps {
            sh """
                docker run --rm \
                "$DOCKER_REGISTRY/${DOCKER_PROJECT}/${DOCKER_IMAGE_FLYWAY}:${env.BUILD_NUMBER}" \
                -url=jdbc:postgresql://****:5432/**** \
                -user=**** \
                -password=**** \
                -baselineOnMigrate=false \
                -schemas=**** \
                -connectRetries=60 \
                migrate
              """
          }
        }
    

    现在就像一个魅力。

    【讨论】:

      猜你喜欢
      • 2016-06-22
      • 2018-03-18
      • 2018-04-19
      • 2014-04-22
      • 1970-01-01
      • 2021-09-07
      • 2017-10-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多