Stash / unsta sh, вызывающий сбой java .io.IOException: не удалось извлечь MyWar.tar.gz - PullRequest
0 голосов
/ 02 марта 2020

Я хочу поместить sh один файл с одного компьютера и unsta sh на другой компьютер, следовательно, у меня следующий конвейерный код -

  post {
    success {
        script {
            stash allowEmpty: true, includes: 'Installer/My.war', name: 'MyWar', useDefaultExcludes: false
        }
        node(SERVER1) {
            ws("workspace/RedmineAndReviewboardProject/SVNCheckout") {
                script {
                    sh '''mkdir -p "Installer"'''
                    dir('/Installer') {
                        unstash 'MyWar'
                    }
                }
            }
        }
    }
}

В этом коде sh выполняется на одной машине и unsta sh на другой машине.

Но это приводит к следующей ошибке -

java.io.IOException: Failed to extract MyWar.tar.gz
    at hudson.FilePath.readFromTar(FilePath.java:2608)
    at hudson.FilePath.access$500(FilePath.java:211)
    at hudson.FilePath$UntarRemote.invoke(FilePath.java:585)
    at hudson.FilePath$UntarRemote.invoke(FilePath.java:576)
    at hudson.FilePath$FileCallableWrapper.call(FilePath.java:3069)
    at hudson.remoting.UserRequest.perform(UserRequest.java:211)
    at hudson.remoting.UserRequest.perform(UserRequest.java:54)
    at hudson.remoting.Request$2.run(Request.java:369)
    at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
    Suppressed: hudson.remoting.Channel$CallSiteStackTrace: Remote call to 192.168.136.30
        at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1741)
        at hudson.remoting.UserRequest$ExceptionResponse.retrieve(UserRequest.java:356)
        at hudson.remoting.Channel.call(Channel.java:955)
        at hudson.FilePath.act(FilePath.java:1069)
        at hudson.FilePath.act(FilePath.java:1058)
        at hudson.FilePath.untar(FilePath.java:571)
        at org.jenkinsci.plugins.workflow.flow.StashManager.unstash(StashManager.java:165)
        at org.jenkinsci.plugins.workflow.support.steps.stash.UnstashStep$Execution.run(UnstashStep.java:76)
        at org.jenkinsci.plugins.workflow.support.steps.stash.UnstashStep$Execution.run(UnstashStep.java:63)
        at org.jenkinsci.plugins.workflow.steps.SynchronousNonBlockingStepExecution.lambda$start$0(SynchronousNonBlockingStepExecution.java:47)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        ... 4 more
Caused by: java.nio.file.AccessDeniedException: /Installer
    at sun.nio.fs.UnixException.translateToIOException(UnixException.java:84)
    at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102)
    at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107)
    at sun.nio.fs.UnixFileSystemProvider.createDirectory(UnixFileSystemProvider.java:384)
    at java.nio.file.Files.createDirectory(Files.java:674)
    at java.nio.file.Files.createAndCheckIsDirectory(Files.java:781)
    at java.nio.file.Files.createDirectories(Files.java:767)
    at hudson.FilePath.mkdirs(FilePath.java:3256)
    at hudson.FilePath.readFromTar(FilePath.java:2592)
    ... 12 more

Что здесь не так?

1 Ответ

0 голосов
/ 02 марта 2020

Как подсказывает @vinWin, ваша проблема, по-видимому, связана с доступом к каталогу Installer.

Пока вы создаете каталог на workspace/RedmineAndReviewboardProject/SVNCheckout/Installer в конвейере, по команде dir вы пытаясь получить доступ к другому /Installer

С одной стороны, где вы пытаетесь сослаться на $WORKSPACE на SERVER1? Если это так, в команде ws вы должны использовать $WORKSPACE/RedmineAndReviewboardProject/SVNCheckout. В противном случае вы будете работать по $WORKSPACE/workspace/RedmineAndReviewboardProject/SVNCheckout

Для команды dir, поскольку вы уже находитесь в root указанного выше рабочего пространства, используя Installer, без ведущего / будет достаточно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...