php-Gitlab CI:在阶段之间保留MySQL数据
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php-Gitlab CI:在阶段之间保留MySQL数据,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1760字,纯文字阅读大概需要3分钟。
内容图文
![php-Gitlab CI:在阶段之间保留MySQL数据](/upload/InfoBanner/zyjiaocheng/883/434e2784302d4a1b847b5097b34a2fa1.jpg)
如何在不同的构建阶段之间保留MySQL数据?
我已经将MySQL设置为服务,但是,从构建到部署阶段时,MySQL数据库为空,因此我无法找到任何信息.
示例gitlab-ci.yml:
image: php:latest
services:
- mysql:5.6
stages:
- build
- deploy
build:
stage: build
script:
- [INSERT MYSQL DATA]
allow_failure: false
artifacts:
when: on_success
paths:
- /var/lib/mysql/
deploy:
stage: deploy
script:
- [MYSQL DUMP]
dependencies:
- build
allow_failure: false
when: on_success
尽管在构建阶段成功插入了数据,但MySQL转储将为空.
解决方法:
根据Gitlab问题页面:Share service between build stages.Gitlab-CI的设置方式如下:
each job is run in each job is run independently of the others,
including potentially running on different machines. And the services
are run locally on each runner. There’s no way for one job to access a
service on a different runner. On GitLab.com, we even recycle the
machine after each job runs so the services would all be destroyed.
@markpundsack
尽管已经存在7个月了,但该问题目前仍未解决.从mysql获取数据的问题也是一个问题,因为服务无法装载卷(我不相信有任何计划可以添加此功能),因此数据被卡在mysql容器内.
因此,您可以通过以下两种方式处理此问题:
>在同一工作中进行设置和测试
>创建一个已经添加了所有数据的SQL docker(不好的做法,但是如果需要的话)
>在设置中创建转储并共享为工件,然后通过测试重新加载该数据
编辑:添加一条注释,将expire_in组件用于工件可能是有用的,因为您不想存储一堆数据,您可能永远不需要.
编辑2:
经过研究后,我找到了gitlab的this.您可以执行以下操作:
services:
- mysql
variables:
# Configure mysql service (https://hub.docker.com/_/mysql/)
MYSQL_DATABASE: hello_world_test
MYSQL_ROOT_PASSWORD: mysql
connect:
image: mysql
script:
- echo "SELECT 'OK';" | mysql --user=root --password="$MYSQL_ROOT_PASSWORD" --host=mysql "$MYSQL_DATABASE"
- SOME DATABASE DUMPING
artifacts:
when: on_success
paths:
- /var/lib/mysql/
内容总结
以上是互联网集市为您收集整理的php-Gitlab CI:在阶段之间保留MySQL数据全部内容,希望文章能够帮你解决php-Gitlab CI:在阶段之间保留MySQL数据所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。