我正在尝试在.gitlab-ci.yml文件中运行build
和test
阶段。截至目前,我的设置非常简单,但这是我第一次使用gradle。
最初我有以下文件:
非工作.gitlab-ci.yml
job:
script:
- gradle build
由于我不了解的原因而失败,但是我假设权限问题到达了.gradle
目录。
解决方法是:
正在使用.gitlab-ci.yml
job:
script:
- gradle build - gradle build -g gradle-user-home
添加-g
标志解决了该问题,并且构建成功。但是,当我尝试运行另一个阶段,例如test
时,会失败。
非工作.gitlab-ci.yml
stages:
- build
- test
gradle-build:
stage: build
script:
- gradle build -g gradle-user-home
gradle-test:
stage: test
script:
- gradle test -g gradle-user-home
如果我删除任何一个阶段,那么单独一个阶段,另一个阶段就可以正常工作。第一个可以正常运行,第二个甚至不显示它尝试运行的脚本,我只会收到以下错误:
Running with gitlab-runner 12.4.1 (05161b14)
on my-runner abcdefg
Using Shell executor...
Running on my-runner...
Fetching changes with git depth set to 50...
Reinitialized existing Git repository in /home/gitlab-runner/builds/abcdefg/0/user-name/project/.git/
from http://gitlab/user-name/project
70077bc..4xyz master -> origin/master
Checking out 4dbf9934 as master...
warning: failed to remove gradle-user-home/daemon/5.6.2: Directory not empty
warning: failed to remove gradle-user-home/caches/journal-1: Directory not empty
etc... (6 more lines of this)
Removing .gradle/
Removing gradle-user-home/daemon/5.6.2/daemon-19142.out.log
etc... (20 more lines of this)
ERROR: Job failed: exit status 1
就像我说的那样,这令人困惑,因为如果我分别运行它们,则它们各自工作,但是如果我同时将它们都存储在文件中,则会发生这种情况,而其他作业将跳过。我假设这与gitlab-runner
用户在跑步者中的权限有关,但是我不确定如何解决此问题。似乎gitlab-runner
用户就是创建无法删除的gradle-user-home
的用户,因此我不确定为什么会这样。我已经检查了一下,并且正如预期的那样,gitlab-runner
用户确实拥有builds
目录内的所有内容。
答案 0 :(得分:0)
构建后,我使用gradle构建缓存进行清理。这样可以确保目录是干净的,从而删除了可能保留的缓存。
./gradlew cleanBuildCache