我正在gitlab作业上运行gradle assemble
:
image: gradle:alpine
variables:
GRADLE_OPTS: "-Dorg.gradle.daemon=false"
GIT_SUBMODULE_STRATEGY: normal
before_script:
- export GRADLE_USER_HOME=`pwd`/.gradle
build:
stage: build
script:
- gradle assemble
artifacts:
paths:
- build/libs/*.jar
after_script:
- ls -R
gradle assemble
没有显示任何问题,并且在我的物理机上运行良好,但是在运行程序上我得到以下信息:
Execution failed for task ':jar'.
> Failed to create MD5 hash for file '/builds/project/subproject/build/libs/subproject.jar' as it does not exist.
其中子项目是git子模块。
我希望该项目像在本地一样进行构建,有什么想法吗?
修改
添加我的.gitmodules文件:
[submodule "submodule"]
path = submodule
url = https://github.com/thechubbypanda/submodule.git
在gradle脚本运行之前,子模块的所有文件都已存在
答案 0 :(得分:0)
您忘记运行命令来拉出所有子模块:
在您的before_script
中也这样做:
git submodule sync --recursive
git submodule update --init --recursive
还要确保已在.gitmodules
文件中声明了子模块。
请参见https://docs.gitlab.com/ee/ci/yaml/README.html#git-submodule-strategy
答案 1 :(得分:0)
如果使用的是GitLab 8.12+,并且子模块位于同一GitLab服务器上,则必须更新.gitmodules文件以使用相对URL。由于Git允许在.gitmodules配置中使用相对URL,因此可以轻松地使用HTTP(S)克隆所有CI作业,并使用SSH进行所有本地签出。 .gitmodules看起来像:
[submodule "project"]
path = project
url = ../../group/project.git
完整的解释在这里:https://docs.gitlab.com/ee/ci/git_submodules.html
尝试像下面的示例一样将GIT_SUBMODULE_STRATEGY更改为递归
GIT_SUBMODULE_STRATEGY: recursive