GitLab:如何在管道作业中使用来自另一个存储库的代码?

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

我有一个GitLab项目,看起来像这样:

在构建第一个api和第二个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
这是正确的方法还是有更好的解决方案?如果这是正确的方法;我如何让它工作

编辑、尝试子模块

在输入我应该使用子模块之后,我改变了我的方法。 我在第一个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

  • 编辑.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

  • 编辑.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文件