使用Docker和Jenkins自动化Flyway迁移
我想为我们的MariaDB数据库自动化Flyway迁移。出于测试目的,我在我的使用Docker和Jenkins自动化Flyway迁移,docker,jenkins,docker-compose,flyway,Docker,Jenkins,Docker Compose,Flyway,我想为我们的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 volum
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 build管道中。这就是我被卡住的地方
Jenkinsfile
中使用上面的Docker compose.yml
部署Docker堆栈,迁移过程中出现错误时相应的阶段会失败吗?我说,詹金斯会注意到这个错误吗Jenkinsfile部署的Docker堆栈中的数据库
stage(“应用数据库更改”){
代理人{
码头工人{
图像“boxfuse/flyway:5.2.4”
args'-v./db/migration:/flyway/sql--entrypoint=\'\'\''
}
}
台阶{
sh“/flyway/flyway-url=jdbc:mariadb://mariadb_service -schemas=${MYSQL\u DATABASE}-table=schema\u version-connectRetries=60 info”
}
}
这样,步骤将在Jenkins从image创建的临时Docker容器中执行。如果命令失败,整个阶段也将失败。您可以使用。那么您的管道脚本可能包含该阶段
stage(“应用数据库更改”){
代理人{
码头工人{
图像“boxfuse/flyway:5.2.4”
args'-v./db/migration:/flyway/sql--entrypoint=\'\'\''
}
}
台阶{
sh“/flyway/flyway-url=jdbc:mariadb://mariadb_service -schemas=${MYSQL\u DATABASE}-table=schema\u version-connectRetries=60 info”
}
}
这样,步骤将在Jenkins从image创建的临时Docker容器中执行。如果命令失败,整个阶段也将失败