我正在尝试在我的.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
目录中的所有内容。
构建后,我使用 清理我的 gradle 构建缓存。这可确保目录干净,删除可能保留的缓存。
./gradlew cleanBuildCache