为什么GitLab运行程序工作失败并执行多个gradle任务?

时间:2020-02-06 13:05:30

标签: java gradle gitlab-ci gitlab-ci-runner gitlab-omnibus

我正在尝试在.gitlab-ci.yml文件中运行buildtest阶段。截至目前,我的设置非常简单,但这是我第一次使用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目录内的所有内容。

1 个答案:

答案 0 :(得分:0)

构建后,我使用gradle构建缓存进行清理。这样可以确保目录是干净的,从而删除了可能保留的缓存。

./gradlew cleanBuildCache