У меня есть постсоветский постсозданный скрипт Groovy, выполняющийся из «Плагина заданий после сборки». Из того же плагина, непосредственно перед запуском скрипта Groovy, я проверяю наличие файла и его размер. В журнале:Groovy File() не сообщается правильный размер/длина
09:14:53 -rw-r--r-- 1 aaa users 978243 Nov 4 08:53 /jk/workspace/xxxx/output/delta.txt
09:14:53 cppcheck.groovy: Checking build result: SUCCESS
09:14:53 cppcheck.groovy: workspace = /jk/workspace/xxxx
09:14:53 cppcheck.groovy: delta = /jk/workspace/xxxx/output/delta.txt
09:14:53 cppcheck.groovy: delta.txt length = 0
заводной сценарий выглядит следующим образом:
import hudson.model.*
def build = Thread.currentThread().executable
def result = build.getResult()
println("cppcheck.groovy: Checking build result: " + result.toString())
if (result.isBetterOrEqualTo(hudson.model.Result.SUCCESS)) {
def workspace = build.getEnvVars()["WORKSPACE"]
def delta = workspace + "/output/delta.txt"
println("cppcheck.groovy: workspace = " + workspace)
println("cppcheck.groovy: delta = " + delta)
def f = new File(delta)
println("cppcheck.groovy: delta.txt length = " + f.length())
if (f.length() > 0) {
build.setResult(hudson.model.Result.UNSTABLE)
}
}
Что я здесь делаю неправильно?
Обновление: похоже, существует некоторый скептицизм в отношении того, что файл существует и что существует какое-то состояние гонки. Чтобы успокоить ваш разум, давайте это выберем. Я изменил сборку для выполнения той же команды ls -l
после запуска скрипта groovy, чтобы доказать, что файл существует и что эта проблема в конечном счете Groovy не может открыть файл. Я также добавил файл exists()
проверить на вышеупомянутый скрипт Groovy, который, как я подозревал, будет, сообщает, что файл не существует. Я не оспариваю, что Groovy считает, что файл не существует. Что я пытаюсь решить, почему?
10:31:39 [xxxx] $ /bin/sh -xe /tmp/hudson8964729240493636268.sh
10:31:39 + ls -l /jk/workspace/xxxx/output/delta.txt
10:31:39 -rw-r--r-- 1 aaa users 978243 Nov 4 08:53 /jk/workspace/xxxx/output/delta.txt
10:31:40 cppcheck.groovy: Checking build result: SUCCESS
10:31:40 cppcheck.groovy: workspace = /jk/workspace/xxxx
10:31:40 cppcheck.groovy: delta = /jk/workspace/xxxx/output/delta.txt
10:31:40 cppcheck.groovy: delta.txt length = 0
10:31:40 cppcheck.groovy: delta.txt exists = false
10:31:40 [xxxx] $ /bin/sh -xe /tmp/hudson8007562636561507409.sh
10:31:40 + ls -l /jk/workspace/xxxx/output/delta.txt
10:31:40 -rw-r--r-- 1 aaa users 978243 Nov 4 08:53 /jk/workspace/xxxx/output/delta.txt
Кроме того, обратите внимание на отметку времени в указанном файле, по-прежнему 08:53, когда она была создана.
Вы уверены, что файл существует в этом месте? Результат '0' для метода' length() 'обычно означает, что файл не существует. Возможно, сначала попробуйте 'exist()' и 'canRead()' для проверки? –
Вот почему я запустил сценарий оболочки как часть той же задачи сборки сообщений. Обратите внимание на строку 'ls -l' в выводе журнала, в которой показан файл и его размер. – Craig
Gotcha, извините, я пропустил это. –