GitLab:如何在管道作业中使用来自另一个存储库的代码?
我有一个GitLab项目,看起来像这样: 在构建第一个api和第二个api的过程中,我需要执行数据库迁移,以便能够使用作为服务启动的数据库运行集成测试 由于存储库是公共的,所以我尝试克隆数据库迁移、构建然后执行。不幸的是,克隆步骤失败。这是我的.gitlab-ci.yml:GitLab:如何在管道作业中使用来自另一个存储库的代码?,gitlab,gitlab-ci,gitlab-ci-runner,Gitlab,Gitlab Ci,Gitlab Ci Runner,我有一个GitLab项目,看起来像这样: 在构建第一个api和第二个api的过程中,我需要执行数据库迁移,以便能够使用作为服务启动的数据库运行集成测试 由于存储库是公共的,所以我尝试克隆数据库迁移、构建然后执行。不幸的是,克隆步骤失败。这是我的.gitlab-ci.yml: init_db: stage: build script: - git clone https://gitlab.com/groupname/database-migration.git - cd
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
这是正确的方法还是有更好的解决方案?如果这是正确的方法;我如何让它工作
编辑、尝试子模块
在输入我应该使用子模块之后,我改变了我的方法。
我在第一个api中添加了一个文件.gitmodules
,如下所示:
[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
作业失败,因为“数据库迁移”文件夹不存在
如果您想查看存储库,可以找到它。我试图在“游戏RESTAPI”中使用子模块
我做错了什么?您可以将数据库迁移作为第一个api的子模块。 看 别忘了加上
variables:
GIT_SUBMODULE_STRATEGY: recursive
to.gitlab-ci.yml
i、 e
git克隆git@gitlab.com:groupname/first-api.git
cd first-api.git
git子模块添加git@gitlab.com:groupname/database migration.git
nano git模块
替换git@gitlab.com:groupname/database migration.git
with。/../groupname/database migration.git
变量:
GIT_子模块_策略:递归
to.gitlab-ci.yml
git提交-am“添加子模块”
git push
您可以将数据库迁移作为第一个api的子模块。
看
别忘了加上
variables:
GIT_SUBMODULE_STRATEGY: recursive
to.gitlab-ci.yml
i、 e
git克隆git@gitlab.com:groupname/first-api.git
cd first-api.git
git子模块添加git@gitlab.com:groupname/database migration.git
nano git模块
替换git@gitlab.com:groupname/database migration.git
with。/../groupname/database migration.git
变量:
GIT_子模块_策略:递归
to.gitlab-ci.yml
git提交-am“添加子模块”
git push
可能的重复可能的重复有人能更详细地描述一下如何定义子模块吗?我已经创建了.gitsubmodules并将路径设置为../database-migration.git。在日志中,我得到递归更新/初始化子模块…
,但没有任何已下载的指示。当我以脚本的形式运行ls
时,我也没有看到任何下载的内容。@DavidBerg我在回答中添加了一些细节。您必须使用git submodule add
命令,而不仅仅是add.gitmodules文件有人能更详细地描述一下如何定义子模块吗?我已经创建了.gitsubmodules并将路径设置为../database-migration.git。在日志中,我得到递归更新/初始化子模块…
,但没有任何已下载的指示。当我以脚本的形式运行ls
时,我也没有看到任何下载的内容。@DavidBerg我在回答中添加了一些细节。您必须使用git submodule add
命令,而不仅仅是add.gitmodules文件