我想为我们的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构建管道中。这就是我卡住的地方。
docker-compose.yml
中部署了上面的Jenkinsfile
的Docker堆栈,相应的阶段是否会在迁移过程中因错误而失败?说来,詹金斯会注意到那个错误吗?Jenkinsfile
答案 0 :(得分:2)
您可以使用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 agent
从boxfuse/flyway
映像创建的临时Docker容器中执行。如果命令失败,整个阶段也会失败。