社区首页 >问答首页 >为什么Gitlab CI不能获得git子模块,但是在随后的推出子模块时呢?

为什么Gitlab CI不能获得git子模块,但是在随后的推出子模块时呢?
EN

Stack Overflow用户
提问于 2020-08-06 04:45:00
回答 1查看 369关注 0票数 2

我的项目由父项目和子项目组成。子项目作为子模块包含在父项目中。

我正在使用Gitlab CI。下面是..gitlab ci.yml文件。

代码语言:javascript
代码运行次数:0
复制
stages:
 - build

variables:
  GIT_SUBMODULE_STRATEGY: recursive
  
build-backend:
  image: mcr.microsoft.com/dotnet/core/sdk:3.1
  stage: build
  script:
    - echo "build-backend"
    - apt update -y
    - apt install -y nodejs npm
    - node --version
    - npm --version
    - ls -al MyApp/client
    - dotnet publish MyApp /p:PublishProfile="Profile"

gitmodules文件如下所示

代码语言:javascript
代码运行次数:0
复制
[submodule "MyApp/client"]
    path = MyApp/client
    url = ../myappclient.git
    branch = master

如果我更改了源代码并将其推送到Gitlab,那么Gitlab就会出现此错误。

代码语言:javascript
代码运行次数:0
复制
fatal: destination path '/builds/def/abc/xyz/MyApp/client' already exists and is not an empty directory.

完全错误信息

代码语言:javascript
代码运行次数:0
复制
Running with gitlab-runner 13.1.0 (6214287e)
  on runner-docker-builder-7.dev.nsynd.com spMNyspT
Preparing the "docker" executor
00:00
Using Docker executor with image mcr.microsoft.com/dotnet/core/sdk:3.1 ...
Pulling docker image mcr.microsoft.com/dotnet/core/sdk:3.1 ...
Using docker image sha256:052ed32b57d8892af69eb4141a96032b01534ccc63db136c5649813e727c78ca for mcr.microsoft.com/dotnet/core/sdk:3.1 ...
Preparing environment
00:02
Running on runner-spmnyspt-project-440-concurrent-0 via runner-docker-builder-7.dev.nsynd.com...
Getting source from Git repository
00:04
Fetching changes...
Reinitialized existing Git repository in /builds/def/abc/xyz/.git/
Checking out b626802d as MyBranch...
Updating/initializing submodules recursively...
Synchronizing submodule url for 'MyApp/client'
fatal: destination path '/builds/def/abc/xyz/MyApp/client' already exists and is not an empty directory.
fatal: clone of 'https://gitlab-ci-token:[MASKED]@git.dfghj.com/def/abc/mysubmodule.git' into submodule path '/builds/def/abc/xyz/MyApp/client' failed
Failed to clone 'MyApp/client'. Retry scheduled
fatal: destination path '/builds/def/abc/xyz/MyApp/client' already exists and is not an empty directory.
fatal: clone of 'https://gitlab-ci-token:[MASKED]@git.dfghj.com/def/abc/mysubmodule.git' into submodule path '/builds/def/abc/xyz/MyApp/client' failed
Failed to clone 'MyApp/client' a second time, aborting
ERROR: Job failed: exit code 1

如果我推动另一个改变(任何人为的改变),那么构建工作。

  1. 为什么Gitlab第一次没有得到子模块?
  2. 我需要在上次构建之后清理吗?
EN

回答 1

Stack Overflow用户

发布于 2022-04-24 23:58:44

使用git clone而不是git fetch似乎是一种解决办法。可以在CI设置中设置它,也可以在.gitlab-ci.yml中添加以下参数

代码语言:javascript
代码运行次数:0
复制
variables:
  GIT_STRATEGY: clone
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63283906

复制
相关文章
Vim技巧-多行缩进
向前缩进,实则是使用Visual Block模式删除多余空格以达到向前缩进的效果。
Qt君
2020/06/04
18.1K2
配置Linux下vim自动缩进
3.设置自动缩进:即每行的缩进值与上一行相等;使用 noautoindent 取消设置:
小唐同学.
2022/02/19
3.5K0
配置Linux下vim自动缩进
Vim编辑器批量缩进
想反缩进的话使用<G就可以 2. 假设我们要将某指定行之后缩进,先跳到指定行再使用>G。
用户1148830
2021/09/07
5930
配置VIM语法高亮及自动缩进
原文:http://blog.sina.com.cn/s/blog_601331150100gjmk.html
一见
2018/08/07
2.7K0
Vim块列操作
在 word中有一个功能,按alt加鼠标拖动,可以拖出矩形块,在vim同样具有此功能。 如:
用户2936342
2018/08/27
1.1K0
Vim块列操作
python缩进块_Python缩进规则(包含快捷键)「建议收藏」
和其它程序设计语言(如 Java、C 语言)采用大括号“{}”分隔代码块不同,Python 采用代码缩进和冒号( : )来区分代码块之间的层次。
全栈程序员站长
2022/07/23
2.5K0
Vim编辑器的自动缩进设定
#1.设置(软)制表符宽度为4 set tabstop=4 set softtabstop=4 #2.设置缩进的空格数为4 set shiftwidth=4 #3.设置自动缩进:即每行的缩进值与上一行相等;使用 noautoindent 取消设置: set autoindent #4.使用 C/C++ 语言的自动缩进方式 set cindent #5.设置C/C++语言的具体缩进方式(以我的windows风格为例): set cinoptions={0,1s,t0,n-2,p2s,(03s,=.5s
hankleo
2020/09/17
2.1K0
Python 为什么使用缩进来划分代码块?
本期话题:Python 为什么使用缩进来划分代码块,而不像其它语言使用花括号 {} 或者 “end” 之类的语法?
Python猫
2020/05/14
7490
Python 为什么使用缩进来划分代码块?
Python 在 Wiki 标记中添加无
Python编程快速上手实践项目题目,欢迎指证与优化! 代码: #! python3 # bulletPointAdder.py - Adds Wikipedia bullet points to the start # of each line of text on the clipboard. import pyperclip text = pyperclip.paste() # 从剪贴板粘贴文本 lines = text.split('\n') # 使用 split()方法得到一个字符串的列表,以回
py3study
2020/01/09
2.9K0
简化 kramdown 列表嵌套内容缩进的 Vim 插件
kramdown 的列表嵌套内容的缩进规则很「奇葩」,不是使用自然的 Tab 缩进。
mzlogin
2020/04/16
1.4K0
简化 kramdown 列表嵌套内容缩进的 Vim 插件
在 NLP 中训练 Unigram 标记器
单个标记称为 unigram。Unigram 标记器是一种只需要一个单词来推断单词的词性标记器类型。它有一个单词的上下文。NLTK库为我们提供了UnigramTagger,并从NgramTagger继承而来。
很酷的站长
2023/08/11
3070
在 NLP 中训练 Unigram 标记器
在Linux中vim的用法
vi 编辑器是所有 Unix 及 Linux 系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指令。 由于对 Unix 及 Linux 系统的任何版本,vi 编辑器是完全相同的,因此你可以在其他任何介绍 vi 的地方进一步了解它。Vi 也是 Linux 中最基本的文本编辑器,学会它后,你将在 Linux 的世界里畅行无阻。 1、vi 的基本概念 基本上 vi 可以分为三种状态,分别是命令模式(command mode)、插入模式(Insert mode)和
沈唁
2018/05/24
2.9K0
vim显示行号、语法高亮、自动缩进的设置
在UBUNTU中vim的配置文件存放在/etc/vim目录中,配置文件名为vimrc  在Fedora中vim的配置文件存放在/etc目录中,配置文件名为vimrc 在Red Hat Linux 中vim的配置文件存放在/etc目录中,配置文件名为vimrc set nocompatible "去掉有关vi一致性模式,避免以前版本的bug和局限 set nu! "显示行号 set guifont=L
用户1214487
2018/05/28
4.6K0
简化 kramdown 列表嵌套内容缩进的 Vim 插件
kramdown 的列表嵌套内容的缩进规则很「奇葩」,不是使用自然的 Tab 缩进。
零式的天空
2022/03/28
1.2K0
简化 kramdown 列表嵌套内容缩进的 Vim 插件
在vim 中批量添加注释
批量注释: Ctrl + v 进入块选择模式,然后移动光标选中你要注释的行,再按大写的 I 进入行首插入模式输入注释符号如 // 或 #,输入完毕之后,按两下 ESC,Vim 会自动将你选中的所有行首都加上注释,保存退出完成注释。
程序员小涛
2020/12/03
15.7K0
vim设置大括号自动补全并换行缩进【工具】
一 在vim中,打出一个大括号后,自动补全另一个大括号并换行 鼠标定位在换行后缩进的位置
sinnoo
2020/11/13
2.4K0
vim设置大括号自动补全并换行缩进【工具】
python中的缩进规则_什么叫代码缩进
python 对缩进是敏感的,而大多教程对缩进规则,往往就几句话带过,对于没有其他语言基础的初学者,十分不友好,本文就把python常见的缩进问题做了一些整理。
全栈程序员站长
2022/11/07
1.7K0
python中的缩进规则_什么叫代码缩进
在 Vim 编辑器中开发 Python 应用的 Vim 插件
企鹅号小编
2018/01/05
1.8K0
在 Vim 编辑器中开发 Python 应用的 Vim 插件
Pytest 系列(25)- 标记用例级别 @allure.
https://www.cnblogs.com/poloyy/category/1690628.html
小菠萝测试笔记
2020/10/30
8420
Pytest 系列(25)- 标记用例级别 @allure.
Vim高手,从来不用鼠标2——替换、撤销、缩进、查找
“ 查找和替换是编辑器中最常用的功能之一,这一次就让我们敲击几下键盘,完成查找与替换吧! ——编程三分钟”
机智的程序员小熊
2019/12/11
1.1K0

相似问题

java php通信

12

PHP,Java Applet通信

16

网格程序w/ java

34

如何在PHP和Java程序之间进行通信?

20

Selenium w驱动程序错误w/ Java

25
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档