GitLab:如何在管道作业中使用其他存储库中的代码?

时间:2018-02-15 19:58:06

标签: gitlab gitlab-ci gitlab-ci-runner

我有一个GitLab项目,如下所示: enter image description here

在构建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”中使用子模块。

我做错了什么?

1 个答案:

答案 0 :(得分:2)

您可以将数据库迁移作为first-api的子模块。 见https://docs.gitlab.com/ce/ci/git_submodules.html

不要忘记添加

a

到.gitlab-ci.yml

  1. 创建子模块
  2. variables: GIT_SUBMODULE_STRATEGY: recursive

    1. 修改.gitmodules
    2. 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

      1. 添加
      2. ../../groupname/database-migration.git

        到.gitlab-ci.yml

        1. 提交并推送
        2. variables: GIT_SUBMODULE_STRATEGY: recursive