Morning,
Just getting back to this problem and resolved the problem in less than 30
mins due to your tips/suggestions :) Thank you
Issue was solved by implementing 2 steps:
1. First, by referencing $WORKSPACE when providing the path to the
deploy-script (i.e $WORKSPACE/deploy-script.sh). This by itself, I
suspect, would not have solved my issue but it is a fine code enhancement.
2. Second (and critical) step is a embarrassing. As John Mellor said, I
was attempting to run a .sh file that did not have execute permission.
- Initially thought it wasn't a permission issue because when logged
into WORKER node I can run `deploy-script` (I had set permissions for
`deploy-script` from within the $WORKSPACE directory on WORKER node).
Problem was that I failed to recall that the contents of $WORKSPACE are
replaced each build therefore permissions for `deploy-script` need to be
set from within the directory holding the repo.
I still don't understand why Jenkins creates a tmp directory when sh is
passed a script file but not when sh is passed a command. Will see if I can
find an explanation online. Will post if I do.
On Tuesday, October 17, 2017 at 1:03:56 PM UTC-4, Thor Waway wrote:
>
> Hello,
>
> This is a bit of newbie question so I apologize in advance.
>
>
> - I have 2 nodes currently set up; a MASTER and a WORKER node.
>
>
>
> - One of the steps in my declarative pipeline points to
> deploy-script.sh. The contents of deploy-script.sh:
> - #!/bin/sh
>
> whoami
>
>
> While ssh'ed into WORKER node, from the workspace directory, I am able to
> run
>
> - sh ./deploy-script.sh
>
> and get the username of the current user (meaning no permission denied
> errors). Yet when this same command runs (in the content of steps defined
> in a JenkinsFile) I get a *Permission Denied* error
>
>
> *Two things I noticed while trying to work through this issue*
> 1). When I call sh and pass it a command directly, for example:
>
> stage("Trial){
> steps{
> sh "whoami"
> sh "pwd"
> }
> }
>
>
>
> I get:
>
> [feature-jenkinsfile] Running shell script
> + whoami
> worker-agent
> [Pipeline] sh
> [feature-jenkinsfile] Running shell script
> + pwd
> /home/worker-agent/jenkins/workspace/feature-jenkinsfile
>
>
>
>
> 2). Yet when I call 'sh' and pass it a path to a file to run, as I do
> here:
>
> stage('Trial2'){
> steps{
> sh "pwd"
> sh "./deploy-script.sh"
> }
> }
>
>
> It appears that Jenkins creates a new temporary folder from
> within which it runs the script as can be seen by here:
>
> [Pipeline] sh
> [feature-jenkinsfile] Running shell script
> + pwd
> /home/worker-agent/jenkins/workspace/feature-jenkinsfile
> [Pipeline] sh
> [feature-jenkinsfile] Running shell script
> + ./deploy-staging.sh
> /home/worker-agent/jenkins/workspace/feature-jenkinsfile@tmp/durable-7e1f206b/script.sh:
> 2:
> /home/worker-agent/jenkins/workspace/feature-jenkinsfile@tmp/durable-7e1f206b/script.sh:
> ./deploy-staging.sh: Permission denied
>
>
> When I run `ls -l` from
>
> What am I missing? What am I failing to take into account? Would appreciate
> any feedback/explanations. Thanks
>
>
--
You received this message because you are subscribed to the Google Groups
"Jenkins Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/jenkinsci-users/6e512ac5-1010-48ac-8826-5acdf4e0a022%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.