Permission denied

Viewed 267

I created a freestyle project on Jenkins to copy artifacts from another project to a directory (/home/ubuntu/training-configuration).

I already gave the directory full permission on my terminal to using sudo chmod -R 777 /home/ubuntu/training-configuration.

But I always receive this error.:

Started by user Training
Running as SYSTEM
Building in workspace /var/lib/jenkins/workspace/save-artifact
FATAL: /home/ubuntu/training-configuration
java.nio.file.AccessDeniedException: /home/ubuntu/training-configuration
    at java.base/sun.nio.fs.UnixException.translateToIOException(UnixException.java:90)
    at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:111)
    at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:116)
    at java.base/sun.nio.fs.UnixFileSystemProvider.createDirectory(UnixFileSystemProvider.java:389)
    at java.base/java.nio.file.Files.createDirectory(Files.java:690)
    at java.base/java.nio.file.Files.createAndCheckIsDirectory(Files.java:797)
    at java.base/java.nio.file.Files.createDirectories(Files.java:783)
    at hudson.FilePath.mkdirs(FilePath.java:3609)
    at hudson.FilePath.access$1100(FilePath.java:212)
    at hudson.FilePath$Mkdirs.invoke(FilePath.java:1384)
    at hudson.FilePath$Mkdirs.invoke(FilePath.java:1379)
    at hudson.FilePath.act(FilePath.java:1200)
    at hudson.FilePath.act(FilePath.java:1183)
    at hudson.FilePath.mkdirs(FilePath.java:1374)
    at hudson.plugins.copyartifact.CopyArtifact.copy(CopyArtifact.java:670)
    at hudson.plugins.copyartifact.CopyArtifact.perform(CopyArtifact.java:634)
    at hudson.plugins.copyartifact.CopyArtifact.perform(CopyArtifact.java:518)
    at jenkins.tasks.SimpleBuildStep.perform(SimpleBuildStep.java:123)
    at hudson.tasks.BuildStepCompatibilityLayer.perform(BuildStepCompatibilityLayer.java:79)
    at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:20)
    at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:814)
    at hudson.model.Build$BuildExecution.build(Build.java:199)
    at hudson.model.Build$BuildExecution.doRun(Build.java:164)
    at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:522)
    at hudson.model.Run.execute(Run.java:1896)
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:44)
    at hudson.model.ResourceController.execute(ResourceController.java:101)
    at hudson.model.Executor.run(Executor.java:442)
Finished: FAILURE

As in:

error

1 Answers

The error stack trace includes:

at java.base/java.nio.file.Files.createAndCheckIsDirectory(Files.java:797)
    at java.base/java.nio.file.Files.createDirectories(Files.java:783)
    at hudson.FilePath.mkdirs(FilePath.java:3609)
    at hudson.FilePath.access$1100(FilePath.java:212)

That suggests the "save artifacts" job is misconfigured and tries to save artifacts in a subfolder called /home/ubuntu/training-configuration, that it tries to create inside /var/lib/jenkins/workspace/save-artifact.

Or the job is executed on an agent where /home/ubuntu/training-configuration does not exits, and it starts by trying to create the source folder (which it does not have the right to do on that agent).

Try instead a pipeline like the one described in "Jenkins archive artifact/save file in Pipeline" from Gustavo Apolinario:

pipeline {
    agent any
    
    stages {
        stage('Download') {
            steps {
                sh 'mkdir js'
                sh 'echo "not a artifact file" > js/build.js'
                sh 'echo "artifact file" > js/build.min.js'
                
                sh 'mkdir css'
                sh 'echo "not a artifact file" > css/build.css'
                sh 'echo "artifact file" > css/build.min.css'
            }
        }
    }
    post {
        always {
            archiveArtifacts artifacts: '**/*.min.*', onlyIfSuccessful: true
        }
    }
}
Related