在构建first-api和second-api期间,我将需要执行数据库迁移,以便能够与作为服务启动的数据库一起运行集成测试。
由于存储库是公共的,我尝试克隆数据库迁移,构建然后执行。不幸的是,它在克隆步骤失败了。这是我的.gitlab-ci.yml:
init_db:
stage: build
script:
- git clone https://gitlab.com/groupname/database-migration.git
- cd database-migration
- mvn exec:java
我收到此错误:
$ git clone https://gitlab.com/groupname/database-migration.git
Cloning into 'database-migration'...
fatal: could not read Username for 'https://gitlab.com': No such device or address
ERROR: Job failed: exit code 1
这是正确的方法还是有更好的解决方案?如果这是正确的方法;我该如何使其发挥作用?
编辑,尝试子模块
输入后我应该使用子模块我改变了我的方法。
我已将文件.gitmodules
添加到first-api,如下所示:
[submodule "database-migration"]
path = database-migration
url = ../database-migration.git
在.gitlab-ci.yml
我有以下内容:
image: maven:latest
variables:
GIT_SUBMODULE_STRATEGY: recursive
init_db:
stage: build
script:
- ls
- cd database-migration
- mvn exec:java
作业失败,因为文件夹“database-migration”不存在。
如果您想查看存储库,可以找到它here。我试图在“game-rest-api”中使用子模块。
我做错了什么?
答案 0 :(得分:2)
您可以将数据库迁移作为first-api的子模块。 见https://docs.gitlab.com/ce/ci/git_submodules.html
不要忘记添加
a
到.gitlab-ci.yml
即
variables:
GIT_SUBMODULE_STRATEGY: recursive
git clone git@gitlab.com:groupname/first-api.git
cd first-api.git
git submodule add git@gitlab.com:groupname/database-migration.git
将nano gitmodules
替换为git@gitlab.com:groupname/database-migration.git
../../groupname/database-migration.git
到.gitlab-ci.yml
variables:
GIT_SUBMODULE_STRATEGY: recursive