git - 如何更新 gitlab CI/CD 中的子模块

标签 git gitlab gitlab-ci git-submodules

我有一个按以下树组织的项目

|.
|..
|-- devops
|-- project1
|-- project2

在 devops 文件夹中,我将其他两个项目作为子模块包含在内,因为这两个项目是由两个不同的团队独立开发的。

|.
|..
|-- project1@0deed0fa
|-- project2@0beef0fb
|-- .gitlab-ci.yml

我已经设置了部署项目的管道。每当任何项目有新提交时,都会设置一个触发器来运行 devops项目管道。作为 DevOps 工作的一部分,我运行 git submodule获取和 merge 的命令。然后构建。它有效。

我遇到的问题是,在一段时间内,子模块发生了很多变化。每次对任何项目进行提交时,都会重播从最后一个子模块提交到 devops 项目文件夹的更改。我每月手动更新一次devops项目文件夹并更新到子模块项目的最新提交。我可以提交 devops 管道任务中的更改,但这将在同一 devops 管道中生成新管道。 (我没有测试过,但看起来很明显)。

作为 DevOps 管道的一部分,有什么方法可以将子模块更新到最新提交吗?

谢谢。

最佳答案

使用这样的 CI 环境:

  variables:
    GIT_SUBMODULE_STRATEGY: normal
    GIT_SUBMODULE_UPDATE_FLAGS: --remote

更多信息请参见 docs

关于git - 如何更新 gitlab CI/CD 中的子模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65946723/

相关文章:

git - 将现有的 git 项目导入 GitLab?

android - 在 Docker 中为 Android 运行并行的 Gitlab CI 作业

kubernetes - 如何 kubectl 端口转发 GitLab web 服务?

shell - GItLab CI 给出了curl : (7) Failed to connect to localhost port 8090: Connection refused

batch-file - 将环境变量传递给子shell CMD

Gitlab 中的 WordPress CI

Git:将现有存储库从 PC 移动到服务器,从服务器克隆

git - 如何在另一个存储库推送到远程后自动更新本地存储库?

Git pull 在提交日志中产生无关的 "Merge branch"消息

Gitlab API,构建成功时合并